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


37

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

Devo controllare molti dischi negli array RAID1 del software per assicurarmi che entrambi i dischi abbiano grub installato, con grub su ciascun disco con il valore root appropriato.


3
Puoi considerare di accettare la nuova risposta qui sotto? poiché la risposta accettata è ormai superata
rubo77,

@ rubo77, la mia risposta era corretta al momento, quando grub0.9x o inferiore era in uso comune e molto prima che venisse rinominato grub-legacy. Se questo ti disturba, ti suggerisco di fare una nuova domanda in particolare grub2. in alternativa, condurre una campagna correggendo ogni domanda e risposta che è diventata obsoleta con il passare del tempo.
Cas

3
Senza offesa. Penso che SO sia una base di conoscenza e dovrebbe cambiare nel tempo. Una volta che le risposte obsolete dovrebbero essere aggiornate.
rubo77,

Risposte:


28

AGGIORNARE:

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

È possibile utilizzare fileper identificare GRUB in un MBR. per esempio

# 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 è archiviato nel menu.lstfile di GRUB che è archiviato in 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 su quale disco / partizione si trova il menu.lstfile, montarlo, leggerlo e analizzarlo. 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ù.


In quel caso ho bisogno di un modo per assicurarmi che grub stia cercando menu.lst nel posto giusto ... da qualche parte al caricatore di avvio deve essere indicato a quale disco e partizione deve andare in modo che possa ottenere il menu di avvio.
DrStalker,

ci sono molte informazioni utili su grub nella home page di grub gnu.org/software/grub , grub wiki grub.enbug.org e su wikipedia en.wikipedia.org/wiki/GRUB
cas

8
Questo non è più corretto con grub2. Vedi invece la risposta di @ benrifkah.
Paul Tomblin,

52

Metodo alternativo

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

user@host:~$ 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 ddcomando tramite il stringscomando, eliminando così i caratteri non stampabili (le statistiche di trasferimento vengono scartate /dev/null).

Se vedi dei messaggi che GRUB visualizzerebbe quando riscontra un errore, hai Grub installato.

Consiglio per louib su ubuntuforums.org di rispondere in questo post protetto da password: http://ubuntuforums.org/showthread.php?t=363372

Per i curiosi questo è ciò che ho ottenuto da 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

Non c'è nulla di GRUB in particolare.


5
Spot on. La risposta accettata non ha funzionato per me su più macchine, ma la tua ha fatto.
Cerin,

13
La risposta accettata è stata scritta nel 2009 e (come dovrebbe essere ovvio dalla menzione di menu.lst piuttosto che grub.cfg) era per grub1 alias "grub-legacy". ovviamente da allora le cose sono cambiate e grub2 non inserisce un identificatore nell'MBR. se funzionasse su alcune macchine per te ma non su altre, ciò implicherebbe che hai grub1 su alcuni e grub2 su altri.
Cas l'

1
Grazie per i chiarimenti Craig. Il sistema su cui ho provato inizialmente il file -scomando utilizza grub-pc che apparentemente è GRUB2, quindi sembra che tu sia parzialmente corretto. Tuttavia, ho funzionato file -ssu alcuni altri sistemi con GRUB 0.97 e su alcuni ha funzionato mentre su altri no. La differenza tra questi sistemi era nei numeri nei file magici forniti con il comando file. Lo scambio di file di numeri magici ha confermato che le definizioni del sistema non funzionante hanno causato il fallimento del sistema funzionante.
benrifkah,

7

Puoi usare grub-emuper 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 durante l'esecuzione grub-emu:

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

Digitare cseguito da exitnon ha funzionato per me.
Faheem Mitha,

1
assicurati di concentrarti sul terminale originale che ha generato la finestra di grub e non la finestra di grub stessa (mi ci è voluto un secondo per realizzarlo)
Madivad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.