O meu servidor ainda está usando um MBR grub-legacy (GRUB 1)?

1

Quando o Debian foi atualizado para o GRUB 2 (pacote grub-pc ), ele não atualizou automaticamente o MBR. Em vez disso, configurou a instalação antiga do GRUB 1 para que ela carregasse o GRUB 2; Dessa forma, os administradores podem testar a nova configuração do GRUB 2. Se o GRUB 2 falhar por algum motivo, você ainda poderá inicializar o sistema com uma das entradas antigas do GRUB 1. Depois de testar o GRUB 2, você deveria executar upgrade-from-grub-legacy para substituir o MBR e excluir manualmente /boot/grub/menu.lst* .

Infelizmente, nós não fizemos isso em muitos de nossos servidores, então agora temos uma mistura de GRUB 1 e GRUB 2 MBRs, e não sabemos qual servidor está usando qual versão. Existe alguma maneira de detectar a versão do GRUB MBR?

    
por Martin von Wittich 20.01.2015 / 12:11

2 respostas

1

O wiki alemão do Ubuntu (não se preocupe, a informação deve ser compreensível mesmo para pessoas que não falam alemão) parece mostrar uma maneira ainda melhor:

link

sudo hexdump -v -s 0x80 -n  2 -e '2/1 "%x" "\n"'  /dev/sdXY

O resultado pode ser traduzido com a seguinte tabela:

5272    GRUB (Legacy)
aa75    GRUB (Legacy)
48b4    GRUB 2 (version 1.96)
7c3c    GRUB 2 (version 1.97 or 1.98)
020     GRUB 2 (version 1.99)
488     Grub 2 core.img
31d2    Grub 2 core.img
8053    LILO

O artigo original do wiki contém ainda mais IDs que podem ser usados para identificar muitos outros MBRs de outros sistemas operacionais.

    
por 20.01.2015 / 12:17
0

Descobri que o terceiro bloco de 512 bytes de um dispositivo contém as seguintes strings quando o servidor ainda está usando um GRUB de 1 MBR:

some-server ~ # dd if=/dev/sda bs=512 count=1 skip=2 2>/dev/null | strings
0.97
/boot/grub/stage2 /boot/grub/menu.lst

Se o servidor estiver usando um GRUB de 2 MBR, o bloco não conterá nenhuma string legível:

some-other-server ~ % dd if=/dev/sda bs=512 count=1 skip=2 2>/dev/null | strings
WVSS
Z[^_]
    
por 20.01.2015 / 12:11