Tabla de contenido
Olá! Hoje apresentamos 4 coisas úteis que não sabia sobre o GRUB e que não sabia. Com estes quatro pontos será capaz de resolver alguns dos problemas mais comuns. Vamos começar:
1. Podem ser acrescentadas novas entradas de outros sistemas no seu disco rígido.
Quando se instala Linux numa máquina com múltiplos sistemas operativos, por vezes estes outros sistemas não são detectados. Isto pode ser resolvido adicionando a entrada do menu GRUB do sistema operativo não listado.
Neste caso, existe uma entrada para o sistema Windows abaixo das entradas do Linux. Se quisermos fazer isto só temos de fazer uma coisa, inserir o seguinte no ficheiro “/boot/grub/grub.cfg”:
### BEGIN /etc/grub.d/30_os-prober ### menuentry 'Windows 10 (en /dev/sdb1)' --class windows --class os $menuentry_id_option 'osprober-chain-7EA0E3B659836131' { insmod part_msdos insmod ntfs set root='hd1,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 7EA0E3B659836131 else search --no-floppy --fs-uuid --set=root 7EA0E3B659836131 fi parttool ${root} hidden- drivemap -s (hd0) ${root} chainloader +1 }
Onde tem de definir o disco (neste caso foi /dev/sdb1) e tem de definir o UUID do disco (sdb1 neste caso tem 7EA0E3B659836131), também tem de definir o número do disco e da partição, por exemplo “hd1,msdos1”, onde hd1 é o disco 2 (começa em hd0), e msdos1 é a partição 1 do disco.
Pode navegar e interagir com os ficheiros do sistema a partir do grub premindo a tecla “e” no menu GRUB antes de o sistema em questão ser carregado.
Uma vez premida a tecla “e”, são exibidas as entradas do menu GRUB:
Em seguida, prima “F2”:
Pode navegar pelos ficheiros do sistema (neste caso é LVM, por isso só se vê /boot quando se faz ls). Os comandos que nos permitem mover-nos através do sistema de ficheiros a partir da consola GRUB são:
- ls: Isto permite-lhe listar o conteúdo da mesma forma que num sistema unix/linux. Também pode usar “ls -al” ou “ls -l”, se usado sem indicar o directório, listará os discos disponíveis e as suas partições, por exemplo: (hd0) (hd0,1) (hd0,2). Se indicar o disco ou uma partição seguida de “/”, por exemplo “ls -l (hd0,1)/” listará o conteúdo como mostrado na imagem acima.
- cat file: Permite-lhe ler um ficheiro como faria num sistema unix/linux.
Infelizmente não pode editar ficheiros a partir desta consola, mas pode arrancar o sistema escolhendo partição, kernel, etc (mesmo que não esteja no menu) e editá-lo assim que o sistema for arrancar.
3. O GRUB pode ser protegido por palavra-passe
Para assegurar o menu GRUB em RHEL/Centos 7 & 7.1, a primeira coisa a fazer é gerar a palavra-chave encriptada com o comando “grub2-mkpasswd-pbkdf2”, como se vê no
Para proteger a bagageira deve introduzir o seguinte no ficheiro: “/etc/grub2/01_users”.
set superusers=”utilizador
password_pbkdf2 john grub.pbkdf2.sha512.EL-HASH-DEL-RESULT-ANTERIOR
Desta vez vamos definir o utilizador de raiz com o hash acima referido:
Depois de fazer isto, correr “grub2-mkconfig -o /boot/grub2/grub.cfg”.
Agora reinicie e prima a tecla “e” para entrar na linha de comando GRUB, verá que pede uma palavra-passe:
No caso do sistema ser RHEL/Centos 7.2 o processo muda um pouco, primeiro, executar os seguintes comandos como “raiz”:
- “grub2-setpassword”: Introduza a password e copie o hash resultante.
- O Hash para a palavra-passe criada tem de ser introduzido em /boot/grub/user.cfg e a “raiz” do utilizador é definida em /boot/grub2/grub.cfg.
- Executar grub2-mkconfig -o /boot/grub2/grub.cfg
- Reiniciar e verificar se pede uma senha
No caso do sistema ser RHEL/Centos 5 ou 6, o processo também muda:
- “grub-md5-crypt: Introduzir a palavra-passe e copiar o hash resultante.
- Abrir “/boot/grub/grub.con” e entrar na linha de arranque: password -md5 “HASH CREATED”.
- Reiniciar e verificar se pede uma senha
4. Muitos dos problemas de arranque podem ser resolvidos a partir do GRUB.
Por vezes uma actualização do sistema, instalação de software ou uma alteração específica pode “quebrar” o arranque do GRUB. Isto pode normalmente ser resolvido fazendo testes de arranque a partir do CLI do grub, antes de arrancar e modificar o menu a partir do sistema.
Como mencionado anteriormente, a partir do GRUB CLI é possível listar os discos e partições com o comando “ls”:
grub> ls (hd0) (hd0,msdos2) (hd0,msdos1)
E ao passar o disco e a partição seguida de “/” como parâmetro para o comando ls, pode listar os ficheiros na partição.
grub> ls (hd0,1)/ lost+found/ bin/ boot/ cdrom/ dev/ etc/ home/ lib/ lib64/ media/ mnt/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz vmlinuz.old initrd.img initrd.img.old
Podemos ver o ficheiro que indica o sistema operativo num linux, isto é útil se tivermos vários sistemas de linux no momento do arranque, para identificar o sistema:
grub> cat (hd0,1)/etc/issue Ubuntu 18.04 LTS \n \l
Arranque a partir do GRUB CLI:
A primeira coisa é verificar que versões kernel, vmlinux e initrd.img, para arrancar correctamente estes três ficheiros têm de ser da mesma versão. Uma vez escolhida a versão, definimos raiz no disco e partição correspondentes (set root=xxx). Depois definimos o kernel do linux com “linux /boot/vmlinuzXXX root=/dev/YYYYY” onde XXX é a versão e YYYY é o disco e a partição que será a raiz do sistema. Também definimos o initrd.img com “initrd /boot/initrd.imgXXX”. Agora só precisamos de arrancar com estes parâmetros usando o comando “boot”:
grub> set root=(hd0,1) grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1 grub> initrd /boot/initrd.img-3.13.0-29-generic grub> boot
Para ver as versões disponíveis do kernel e ficheiros initrd, basta correr ls -l na raiz do sistema e /boot:
$ ls -l (hd0,1)/ vmlinuz -> boot/vmlinuz-3.13.0-29-generic initrd.img -> boot/initrd.img-3.13.0-29-generic
Para começar em modo de salvamento:
grub> set root=(hd0,1) grub> linux /vmlinuz root=/dev/sda1 grub> initrd /initrd.img grub> boot Booting From grub-rescue>
Se estiver no GRUB de resgate, os comandos são diferentes, e tem de carregar os módulos normal.mod e linux.mod:
grub rescue> set prefix=(hd0,1)/boot/grub grub rescue> set root=(hd0,1) grub rescue> insmod normal grub rescue> normal grub rescue> insmod linux grub rescue> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1 grub rescue> initrd /boot/initrd.img-3.13.0-29-generic grub rescue> boot
E com isto podemos agora aceder ao sistema para reparar o arranque do GRUB e fazê-lo carregar as versões certas.
É tudo por hoje.
Se gostou, partilhe-o nas suas redes sociais e/ou deixe um comentário.
Até breve!