it-swarm.com.de

Wie kann ich feststellen, ob grub auf einem Gerät installiert ist?

Wie kann ich feststellen, ob grub auf einer Festplatte installiert ist und welche Einstellungen es hat (insbesondere, was es für den Root-Parameter hat)?

Ich muss viele Festplatten in Software-RAID1-Arrays überprüfen, um sicherzustellen, dass auf beiden Festplatten grub installiert ist, wobei die Grub auf jeder Festplatte den entsprechenden Stammwert hat.

39
DrStalker

AKTUALISIEREN:

Diese Antwort stammt aus dem Jahr 2009 und gilt für Grub-Legacy, nicht für Grub2.

Sie können file verwenden, um GRUB in einem MBR zu identifizieren, z.

# 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

Das root= paramater ist nicht im MBR gespeichert, sondern in GRUBs menu.lst Datei, die in einem Dateisystem gespeichert ist (normalerweise im Verzeichnis/boot/grub des Root-Fs oder im Verzeichnis grub des Dateisystems/boot - aber nicht immer, es könnte irgendwo sein).

Sie müssen die Ausgabe der obigen Datei analysieren und bestimmen, auf welcher Festplatte/Partition menu.lst Datei ist eingeschaltet, mounten Sie sie, lesen Sie sie ein und analysieren Sie sie. Sie sollten auch die Datei grub/default einlesen, um herauszufinden, welcher Grub-Menüeintrag der Standard ist, da dieser wahrscheinlich den Parameter root = hat, an dem Sie am meisten interessiert sind.

28
cas

Alternative Methode

file -s Funktionierte in Ubuntu Lucid nicht für mich, da die magischen Dateien meines Befehls file command nicht mehr aktuell waren. Eine andere Möglichkeit, dies zu tun, wenn Ihre magischen Dateien die Änderungen von GRUB nicht eingeholt haben), besteht darin, die ersten 512 Bytes des Geräts mit dem Befehl dd wie folgt zu untersuchen:

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

Dies sendet die Ausgabe des Befehls dd über den Befehl strings, wodurch nicht druckbare Zeichen entfernt werden (Übertragungsstatistiken werden an /dev/null Verworfen).

Wenn Sie Meldungen sehen, die GRUB] angezeigt werden, wenn ein Fehler auftritt, ist grub installiert.

Hut Tipp an louib auf ubuntuforums.org für die Beantwortung in diesem passwortgeschützten Beitrag: http://ubuntuforums.org/showthread.php?t=363372

Für die Neugierigen ist das, was ich von file -s Bekommen habe:

[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

Es gibt nichts spezielles über GRUB).

53
benrifkah

Sie können grub-emu , um das Menü anzuzeigen, das grub beim nächsten Neustart des Computers anzeigt.

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

Auf meinem Desktop-Computer wurde das Menü wie erwartet angezeigt. Wenn ich jedoch vorgab, einen Kernel zu starten, wurde der Fehler "Kein solches Gerät" angezeigt. Ich denke, das ist erwartetes Verhalten.

Auf meinem DigitalOcean VPS wurden keine Einträge im Grub-Menü angezeigt, obwohl der Server tatsächlich einwandfrei neu gestartet wurde. (Dies ist ein 2013er VPS, daher kann Ihr Kilometerstand variieren.)

Einige Hinweise beim Ausführen von grub-emu:

  • Wenn Sie in X-Windows mit grub interagieren möchten, muss sich Ihr Tastaturfokus auf dem Terminal befinden von dem aus du grub-emu gelaufen bist und nicht auf dem Fenster, das aufgetaucht ist.
  • Sie können den Emulator beenden, indem Sie c drücken und dann exit eingeben.
  • Nach dem Beenden befindet sich Ihr Terminalemulator möglicherweise in einem schlechten Zustand (z. B. wird die Eingabetaste nicht in einer neuen Zeile angezeigt). Beheben Sie das, indem Sie reset eingeben. (Machen Sie sich keine Sorgen, es wird Ihren Computer nicht neu starten. Es wird nur Ihr Terminal bereinigen.)
7
joeytwiddle