Processo de Boot
DO NOT EDIT THIS FILE
Ou seja, esse arquivo "teoricamente" não pode ser editado, porém se você quiser editar a ordem das entradas e suas escritas nada o impede.
O arquivo o qual você personalizará suas entradas no grub2 é o 40_custom, que fica em /etc/grub.d/.
Primeiro atualize a lista de seus sistemas instalados com o comando:
sudo update-grub
Agora abra o arquivo grub.cfg:
sudo gedit /boot/grub/grub.cfg
Nele você terá todas entradas de seus sistemas instalados, onde abaixo segue um exemplo de entradas de Linux e Windows:
menuentry 'Ubuntu, with Linux 2.6.35-23-generic' --class ubuntu --class gnu- linux --class gnu --class
os {
recordfail
insmod part_msdos insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set f8f54563-c324-41a5-8412-275cb97418e2 linux /boot/vmlinuz-2.6.35-23-generic root=UUID=f8f54563-c324-41a5-8412- 275cb97418e2 ro
quiet splash
initrd /boot/initrd.img-2.6.35-23-generic }
search --no-floppy --fs-uuid --set 6020fefa20fed64e chainloader +1
}
Agora para facilitar a edição abra em outro terminal o arquivo 40_custom:
sudo gedit /etc/grub.d/40_custom
Nele você terá um arquivo assim: #!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above.
Copie as entradas encontradas no arquivo grub.cfg para o 40_custom, onde as entradas começam em "menuentry {" e terminam em "}".
Após copiar suas entradas do grub.cfg para o arquivo 40_custom, ele deve ficar mais ou menos assim:
#!/bin/sh
echo "Adding 40_custom menu entries." >&2 exec tail -n +3 $0
menuentry 'Ubuntu, with Linux 2.6.35-23-generic' --class ubuntu --class gnu- linux --class gnu --class
os {
recordfail
insmod part_msdos insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set f8f54563-c324-41a5-8412-275cb97418e2 linux /boot/vmlinuz-2.6.35-23-generic root=UUID=f8f54563-c324-41a5-8412- 275cb97418e2 ro
quiet splash
initrd /boot/initrd.img-2.6.35-23-generic }
menuentry "Windows 7 (loader) (on /dev/sda1)" { insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 6020fefa20fed64e chainloader +1
Agora você poderá editar o texto que será exibido no boot, como por exemplo trocando de:
menuentry 'Ubuntu, with Linux 2.6.35-23-generic' --class ubuntu --class gnu- linux --class gnu --class os
Para:
menuentry " Ubuntu Maverick 10.10 Kernel 2.6.32 "
Isso é só um exemplo, ficando a seu critério o conteúdo escrito. Após editar o arquivo 40_custom basta salvar e fechar ele.
Para definir a ordem de boot, ou seja, para definir qual sistemas vai iniciar após a contagem no boot esgotar, é preciso editar o arquivo grub que fica em /etc/default
sudo gedit /etc/default/grub
GRUB_DEFAULT=0 <<< configura a entrada padrão sendo "0" para 1° entrada, "1" para 2° entrada e assim por diante.
GRUB_TIMEOUT=3 <<< aqui você irá escolher o tempo em segundos para contagem no boot
Depois de editar esse arquivo basta salvar e fechar. Agora rode esse comando:
sudo chmod -x /etc/grub.d/10_linux /etc/grub.d/30_os-prober
Esses dois arquivos por padrão vem em modo executáveis, ou seja, a cada update-grub que você der ele irá inserir as entradas no seu grub mas como você já editou elas no arquivo 40_custom elas ficariam duplicada e rodando esse comando você retira essas duplicações.
Obs.: A cada nova instalação de um Linux ou Windows ou a cada atualização ou instalação de um novo kernel você precisará voltar esses arquivos "10_Linux e 30_os-prober" para o estado de executáveis para que eles possam inserir as novas entradas no grub.cfg e assim você as copia para o arquivo 40_custom. Para retornar o modo executável desses arquivos faça:
$ sudo chmod +x /etc/grub.d/10_linux /etc/grub.d/30_os-prober << trocando -x por +x
Vá até o arquivo grub.cfg e copie as novas entradas para o 40_custom e depois retire o modo executável dos arquivos:
sudo chmod -x /etc/grub.d/10_linux /etc/grub.d/30_os-prober
E novamente rode: $ sudo update-grub
Caso queira retirar o memtest também rode esse comando: sudo chmod -x /etc/grub.d/20_memtest86+
E rode um:
$ sudo update-grub
E pronto! Pode reiniciar seu PC para ver o resultado.
Notação do Linux Notação do grub
/dev/hda (hd0) /dev/hda1 (hd0,0) /dev/hda2 (hd0,1) /dev/hdb (hd1) /dev/hdb1 (hd1,0) /dev/hdb2 (hd1,1) /dev/sda (hd0) /de/sda1 (hd0,0) /dev/sda2 (hd0,1) /dev/sdb (hd1) /dev/sdb1 (hd1,0) /dev/sdb2 (hd1,1)
Alterando Runlevels, shutdown e reboot
O Linux possui três grandes sistemas especiais de boot de serviços responsáveis pela iniciação dos processsos:
• System V Init Daemon
• Systemd
• Upstream
O system V foi herdado do Unix, que recebeu o nome de System V init Daemon ou simplesmente de init.
Durante o processo de boot (GRUB) carrega a imagem do Kernel para a memória. Assim que o Kernel assume o controle da máquina, ele carrega um programa chamado init e que sempre tem o PID I.
Você pode ver essa relação com o comando pstree:
pstree
Runlevel
No Linux existe sete níveis de execução, definidos de 0 à 6. Os servidores que cada runlevel pode executar vão depender da distribuição de Linux e da
configuração que o administrador do sistema efetuou.
Runlevel Descrição
0 O nível zero define um desligamento rápido do sistema
1 O nível um é utilizado para manutenção do sistema. Também
chamado monousuário (single user) somente o essencial é executado
2 Modo multiusuário com compartilhamento de arquivos NFS
desabilitado
3 Modo multiusuário com todos os serviços habilitados mas sem
interface gráfica para login no sistema.
4 Não utilizado
5 Modo multiusuário com todos os serviços habilitados, interface
gráfica x11 e login em modo gráfico
5 O nível 6 é parecido com o nível zero, mas executa o reboot da
máquina.
O administrador do sistema pode a qualquer momento alterar o nível de execução através do comando init seguido do número do runlevel desejado.
Init 5
Quando o Linux inicia, uma série de scripts no diretório /etc/rc.d é executo para dar o boot do sistema. O arquivo rc.sysinit é executado pelo processo initi durante o boot do sistema e habilita as funções essenciais. Por exemplo, montar partições em disco.O arquivo rc.local é executado pelo script rc.sysinit. Ele é utilizado pelos administradores para eles modificarem os serviços na carga do sistema.O arquivo rc é utilizado para transições entre os runlevels. Os níveis de serviço são definidos através dos diretórios /etc/rc.<n> onde <n> pode variar de 0 a 6. Correspondendo ao runlevel. Dentro de cada diretório existem links simbólicos para os scripts de serviços.
• A Letra K, de Kill, indica que o script é para terminar um determinado
serviço
• A letra S, de Start, indica que o script é para iniciar um determinado serviço
Definindo Runlevel Padrão
O arquivo que define qual o runlevel que o sistema irá iniciar é:
/etc/inittab
Neste arquivo basta editar a linha:
id:n:initdefault
O “n” definirá o runlevel pelo seu número de 0 à 6.
O comando runlevel somente informa o nível de execução, para alterar é necessário o comando init.
Exemplo:
runlevel
shutdown
O comando shutdown é utilizado para desligar ou reiniciar o sistema com horários determinados, exemplo:
shutdown {opções} horário {mensagem}
Para reiniciar o sistema imediatamente:
shutdown –r now
Para reiniciar o sistema as 06 da manhã e enviar mensagem no terminal do usuário:
shutdown –r 06:00 “Haverá troca de hardware”
Para desligar o sistema em 10 minutos: