Estudo Linux 004: Linha de Comando no GRUB

Hoje vamos usar o shell(interpretador de comandos) do GRUB.

A tela de menu do grub nos dá duas opções: “e” para editar comandos  e “c” para entrarmos no shell e executarmos comandos. No post anterior chegamos a usar a opção “e“.

Ligue o computador e segure a tecla Shift para que o menu do grub apareça:

No meu caso tenho apenas o ubuntu instalado. A segunda linha(opções avançadas para ubuntu) nos daria acesso às versões de kernel disponíveis e modos de recuperação(recovery mode) para o ubuntu.

Vamos deixar selecionado nossa única opção, o ubuntu, e teclar a letra c para entrarmos em um ambiente de comandos do grub. A tela abaixo surgirá:

 

Obs.: Lembre-se sempre que no GRUB2 a contagem dos discos/HDs começam com 0(zero) e não em 1. Já as partes/partições do disco iniciam em 1 e não em zero. Confuso? Veja os exemplos em um Computador com mais de um HD: 

            • (HD0,1) é o primeiro(0) HD com sua primeira(1) partição
            • (HD1,1) é o segundo(1) HD com sua primeira(1) partição
            • (HD0,2) é o primeiro(0) HD com sua segunda(2) partição
            • (HD3,1) é o quarto(3) HD com sua primeira(1) partição

 

 

vamos aos comandos 🙂

Comandos no Shell do GRUB

Obs.: Todas as alterações feitas aqui são perdidas após segundo reinício/reboot

  1. Ver todas as partições vistas pelo GRUB. No caso abaixo tenho apenas um disco(hd0). Esse (hd0, msdos1) significa que o sistema tem a tabela de partição antiga do MS-DOS ao invés do novo GPT.

    Tenho apenas um disco instalado no Ubuntu. Olha abaixo uma tela do meu Centos:
  2. Se digitarmos apenas “ls (hd0)” irá ser exibida informações sobre o disco

    Exibir informações sobre a primeira partição do disco
  3. Exibindo os arquivos da primeira partição do disco. Basta acrescentar a barra “/” ao final, assim “ls (hd0,1)/
  4. Visualizando o arquivo de texto “nomeLista”  com comando cat

    Outro exemplo
    Em um computador com  mais de um sistema operacional instalado ver o conteúdo desse arquivo “/etc/issue” é importante  para  identificação.

 

Dando Boot pelo GRUB

Podemos iniciar um Sistema Operacional usando comandos do GRUB.

Vamos supor que tenho um disco com duas partições: (hd0,1) com windows e (hd0,2) com Ubuntu; Também suponhamos que dentro da pasta /boot do Ubuntu tenho:

  • o kernel em: /boot/vmlinuz-3.13.0-29-generic 
  • memória initrd em: /boot/initrd.img-3.13.0-29-generic

Execute os comandos

  1. Use “set” para definir qual a partição onde está o Ubuntu
    grub> set root=(hd0,2)
  2. Use “linux” para apontar para o arquivo do kernel e “root” para avisar onde está o sistema de arquivos. Geralmente o sistema de arquivos está em /dev/sda1.
    grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1

    Como saberei qual a partição para o sistema de arquivos? acima colocarmos root=/dev/sda1. Bom, há a regra abaixo
    hd0,1 = /dev/sda1
    hd1,1 = /dev/sdb1
    hd3,2 = /dev/sdd2.
    e etc…

    O que altera é são os dois últimos caracteres, onde sda é o primeiro HD, sdb o segundo, sdc o terceiro…
    Quando às partições, sda1 é a primeira partição do primeiro HD, sdb2 é a segunda partição do segundo HD…

    Lembrando que uso os termos sda, sdb… como sendo HDs; porém, poderia ser um pen drive, um HD externo e não somente HDs internos.

  3. Use “initrd” para apontar para o initial ram disc ou initrd
    grub> initrd /boot/initrd.img-3.13.0-29-generic
  4. Execute o comando “boot” para iniciar
    grub> boot

forma resumida:

Em muitos sistemas “/vmlinuz” é um link para “/boot/vmlinuz-3.13.0-29-generic” e  “/initrd.img”  para “/boot/initrd.img-3.13.0-29-generic“. Então poderíamos executar dessa forma,

grub> set root=(hd0,1)
grub> linux /vmlinuz root=/dev/sda1
grub> initrd /initrd.img
grub> boot

 

Deixando Permanente o que Fizemos Acima

Para deixar permanente o que fizemos acima basta executar os comandos abaixo assim que iniciar o Sistema Operacional, no meu caso Ubuntu:

grub-mkconfig -o /boot/grub/grub.cfg

O comando acima pode variar para “grub2-mkconfig…”

e

sudo grub-install

O comando acima pode variar para “grub2-install”

 

 

Conclusão

Realizamos as etapas acima em um computador que contém apenas um HD com apenas um sistema operacional.  Mas esse conhecimento já abre um caminho facilitador que nos deixará acomodados para alterarmos computadores com mais de um Sistema Operacional. só deveríamos ficar atento para a questão dos endereços

  • (HD0,1) é o primeiro(0) HD com sua primeira(1) partição
  • (HD1,1) é o segundo(1) HD com sua primeira(1) partição
  • (HD0,2) é o primeiro(0) HD com sua segunda(2) partição
  • (HD3,1) é o quarto(3) HD com sua primeira(1) partição

e

hd0,1 = /dev/sda1
hd1,1 = /dev/sdb1
hd3,2 = /dev/sdd2…

Esses comandos podem solucionar os problemas de não inicialização do seu computador e servidor.

 

Fontes: linux.com,

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *