sviluppo-web-qa.it

Come faccio a sapere se grub è installato su un dispositivo?

Come posso sapere se grub è installato su un disco e se ha quali impostazioni ha (notoriamente, cosa ha per il parametro root)

Ho bisogno di controllare molti dischi negli array software RAID1 per assicurarmi che entrambi i dischi abbiano grub installato, con grub su ogni disco con il valore root appropriato.

39
DrStalker

AGGIORNARE:

Questa risposta è del 2009 e si applica a grub-legacy, non a grub2.

Puoi usare file per identificare GRUB in un MBR, ad es.

# 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

Il root= paramater non è memorizzato nell'MBR, che è memorizzato in menu.lst file memorizzato su un file system (in genere nella directory/boot/grub del root fs o nella directory grub del filesystem/boot - ma non sempre, potrebbe essere ovunque).

Dovrai analizzare l'output del file sopra, determinare quale disco/partizione menu.lst il file è attivo, montalo, leggilo e analizzalo. Dovresti anche leggere il file grub/default per capire quale voce del menu grub è quella predefinita, perché è probabilmente quella che ha il parametro root = che ti interessa di più.

28
cas

Metodo alternativo

file -s non ha funzionato per me in Ubuntu Lucid perché i miei file magici del comando file non erano aggiornati. Un altro modo per farlo se i tuoi file magici non hanno raggiunto GRUB è esaminare i primi 512 byte del dispositivo usando il comando dd in questo modo:

[email protected]:~$ Sudo dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
 Error

Questo invia l'output del comando dd tramite il comando strings eliminando così i caratteri non stampabili (le statistiche di trasferimento vengono scartate su /dev/null).

Se vedi dei messaggi che GRUB verrà visualizzato quando si verifica un errore, allora hai Grub installato.

Suggerimento per louib su ubuntuforums.org per la risposta in questo post protetto da password: http://ubuntuforums.org/showthread.php?t=363372

Per i curiosi questo è ciò che ho ottenuto da file -s:

[email protected]:~$ 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

Non c'è nulla su GRUB lì in particolare.

53
benrifkah

Puoi usare grub-emu per vedere il menu che grub mostrerà al prossimo riavvio della macchina.

$ Sudo apt-get install grub-emu
$ Sudo grub-emu

Sul mio computer desktop il menu veniva visualizzato come previsto, anche se se fingevo davvero di avviare un kernel avrei ricevuto un errore "nessun dispositivo del genere". Penso che sia un comportamento previsto.

Sul mio VPS DigitalOcean non sono state visualizzate voci nel menu di grub, anche se il server si è riavviato correttamente. (Questo è un VPS del 2013, quindi il tuo chilometraggio può variare.)

Alcune note quando si esegue grub-emu:

  • In X-windows, se si desidera interagire con grub, è necessario che il focus della tastiera sia sul terminale da cui hai eseguito grub-emu e non sulla finestra che è spuntata.
  • È possibile uscire dall'emulatore premendo c quindi digitando exit.
  • Dopo essere uscito, l'emulatore di terminale potrebbe essere in cattivo stato (ad es. Enter non verrà visualizzato su una nuova riga). Risolvilo digitando reset. (Non preoccuparti, non riavvierà il tuo computer. Pulirà semplicemente il tuo terminale.)
7
joeytwiddle