Como posso saber se o grub está instalado em um dispositivo?

36

Como posso saber se o grub está instalado em um disco e se são as configurações que ele tem (notavelmente, o que ele tem para o parâmetro raiz)

Eu preciso verificar muitos discos em matrizes RAID1 de software para ter certeza de que ambos os discos têm o grub instalado, com o grub em cada disco tendo o valor de raiz apropriado.

    
por DrStalker 02.09.2009 / 03:38

3 respostas

26

UPDATE:

Esta resposta é de 2009 e se aplica ao grub-legacy, não ao grub2.

Você pode usar file para identificar o GRUB em um MBR. por exemplo,

# file -s /dev/sda
/dev/sda: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3
, stage2 address 0x2000, stage2 segment 0x200; partition 1:
ID=0xfd, starthead 1, startsector 63, 1044162 sectors; partition
2: ID=0x82, starthead 0, startsector 1044225, 1028160 sectors;
partition 3: ID=0xfd, starthead 0, startsector 2072385,
1951447680 sectors, code offset 0x48

O root= paramater não é armazenado no MBR, que é armazenado no arquivo menu.lst do GRUB que é armazenado em um sistema de arquivos (normalmente no diretório / boot / grub da raiz fs ou no diretório grub da / boot filesystem - mas nem sempre, pode ser em qualquer lugar).

Você terá que analisar a saída do arquivo acima, determinar em qual disco / partição o arquivo menu.lst está, montá-lo, lê-lo e analisá-lo. Você também vai querer ler no arquivo grub / default para descobrir qual entrada do menu grub é a padrão, porque provavelmente é aquela que tem o parâmetro root = que você está mais interessado.

    
por 02.09.2009 / 04:31
48

Método alternativo

file -s não funcionou para mim no Ubuntu Lucid porque os arquivos mágicos do meu arquivo estavam desatualizados . Outra maneira de fazer isso se seus arquivos mágicos não tiverem rastreado as alterações do GRUB é examinar os primeiros 512 bytes do dispositivo usando o comando dd desta forma:

user@host:~$ sudo dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings
ZRr=
'|f
\|f1
GRUB
Geom
Hard Disk
Read
 Error

Isso envia a saída do comando dd através do comando strings , removendo assim caracteres não imprimíveis (as estatísticas de transferência são descartadas para /dev/null ).

Se você vir alguma mensagem que o GRUB exibiria ao encontrar uma falha, você terá o grub instalado.

Dica do Hat to louib on ubuntuforums.org para responder nesta postagem protegida por senha: link

Para os curiosos, isso é o que recebi de file -s :

user@host:~$ sudo file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector 20
48, 337211392 sectors; partition 2: ID=0x5, starthead 254, startsector 337215486, 1434214
6 sectors, code offset 0x63

Não há nada sobre o GRUB especificamente aqui.

    
por 11.07.2011 / 21:00
3

Você pode usar grub-emu para ver o menu que o grub mostrará quando a máquina for reinicializada.

$ sudo apt-get install grub-emu
$ sudo grub-emu

Na minha máquina desktop, o menu foi exibido como esperado, embora, se eu realmente fingisse inicializar um kernel, eu recebi um erro "no such device". Eu acho que é um comportamento esperado.

No meu DigitalOcean VPS, nenhuma entrada foi exibida no menu do grub, embora o servidor realmente tenha sido reinicializado corretamente. (Este é um VPS 2013, portanto, sua milhagem pode variar.)

Algumas notas ao executar grub-emu :

  • No X-windows, se você quiser interagir com o grub, você precisa do seu foco no teclado no terminal a partir do qual você executou o grub-emu, e não na janela que apareceu.
  • Você pode sair do emulador pressionando c e, em seguida, digitando exit .
  • Depois de sair, o emulador de terminal pode estar em mau estado (por exemplo, Enter não será exibido em uma nova linha). Corrija isso digitando reset . (Não se preocupe, não reiniciará sua máquina. Ela apenas limpará seu terminal.)
por 30.04.2017 / 10:32