Jak sprawdzić, czy grub jest zainstalowany na urządzeniu?


37

Skąd mam wiedzieć, czy grub jest zainstalowany na dysku i czy ma to jakie ustawienia ma (zauważ, co ma dla parametru root)

Muszę sprawdzić wiele dysków w programowych macierzach RAID1, aby upewnić się, że oba dyski mają zainstalowanego gruba, a grub na każdym dysku ma odpowiednią wartość root.


3
Czy możesz rozważyć przyjęcie nowej odpowiedzi poniżej? ponieważ przyjęta odpowiedź jest już nieaktualna
rubo77

@ rubo77, moja odpowiedź była prawidłowa w czasie, gdy grub0,9x lub niższa była w powszechnym użyciu i długo zanim została zmieniona na grub-legacy. Jeśli Ci to przeszkadza, proponuję zadać nowe pytanie grub2. możesz też przeprowadzić kampanię korygującą każde pytanie i odpowiedź, która z czasem stała się nieaktualna.
cas

3
Bez obrazy. Myślę, że SO jest bazą wiedzy i ma się z czasem zmieniać. Raz nieaktualne odpowiedzi powinny zostać zaktualizowane.
rubo77

Odpowiedzi:


28

AKTUALIZACJA:

Ta odpowiedź pochodzi z 2009 roku i dotyczy grub-legacy, a nie grub2.

Możesz użyć filedo identyfikacji GRUB w MBR. na przykład

# 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

root=Paramater nie jest przechowywany w MBR, który jest przechowywany w GRUB menu.lstpliku, który jest przechowywany w systemie plików (zwykle w katalogu / boot / grub z fs root lub katalogu grub systemu plików / boot - ale nie zawsze, to może być wszędzie).

Będziesz musiał przeanalizować dane wyjściowe pliku powyżej, ustalić, na którym dysku / partycji menu.lstznajduje się plik, zamontować go, wczytać i przeanalizować. Będziesz także chciał przeczytać plik grub / default, aby dowiedzieć się, która pozycja menu grub jest domyślna, ponieważ prawdopodobnie jest to ten, który ma parametr root =, który najbardziej Cię interesuje.


W takim przypadku potrzebuję sposobu, aby grub szukał menu. Najpierw we właściwym miejscu ... gdzieś program ładujący musi powiedzieć, do którego dysku i partycji musi się udać, aby mógł uzyskać menu startowe.
DrStalker,

wiele przydatnych informacji na temat gruba znajduje się na stronie głównej gruba gnu.org/software/grub , grub wiki grub.enbug.org oraz na wikipedia pl.wikipedia.org/wiki/GRUB
cas

8
Nie jest to już poprawne w grub2. Zamiast tego zobacz odpowiedź @ benrifkah.
Paul Tomblin,

52

Metoda alternatywna

file -snie działało dla mnie w Ubuntu Lucid, ponieważ magiczne pliki mojego polecenia pliku były nieaktualne . Innym sposobem na zrobienie tego, jeśli twoje magiczne pliki nie nadążają za zmianami GRUB, jest sprawdzenie pierwszych 512 bajtów urządzenia za pomocą następującego ddpolecenia:

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

To wysyła wynik ddpolecenia przez stringspolecenie, usuwając w ten sposób znaki niedrukowalne (statystyki transferu są odrzucane /dev/null).

Jeśli zobaczysz jakiekolwiek komunikaty, które GRUB wyświetliby, gdy wystąpi awaria, oznacza to, że masz zainstalowanego gruba.

Czapka dla Louib na ubuntuforums.org za odpowiedź w tym chronionym hasłem postu: http://ubuntuforums.org/showthread.php?t=363372

Dla ciekawskich to właśnie otrzymałem 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

W GRUB nie ma nic konkretnego.


5
Spot on. Przyjęta odpowiedź nie działała dla mnie na kilku komputerach, ale Twoja działała.
Cerin,

13
Przyjęta odpowiedź została napisana w 2009 roku i (jak powinno być oczywiste ze wzmianki o menu.lst zamiast grub.cfg) była dla grub1 aka „grub-legacy”. oczywiście od tamtej pory wszystko się zmieniło, a grub2 nie umieszcza identyfikatora w MBR. jeśli działało to na niektórych komputerach, ale nie na innych, oznaczałoby to, że masz grub1 na niektórych i grub2 na innych.
cas

1
Dzięki za wyjaśnienia, Craig. System, w którym pierwotnie wypróbowałem file -spolecenie, używa grub-pc, który najwyraźniej jest GRUB2, więc brzmi to tak, jakbyś miał częściowo rację. Jednak działałem file -sna niektórych innych systemach z GRUBem 0.97 i na niektórych działało, podczas gdy na innych nie. Różnica między tymi systemami polegała na liczbach w magicznych plikach dostarczanych z poleceniem file. Zamiana plików liczb magicznych potwierdziła, że ​​definicje z niedziałającego systemu spowodowały awarię działającego systemu.
benrifkah

7

Możesz użyć, grub-emuaby zobaczyć menu, które grub pokaże przy następnym uruchomieniu komputera.

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

Na moim komputerze stacjonarnym menu wyświetlało się zgodnie z oczekiwaniami, chociaż jeśli udawałem, że uruchamiam jądro, pojawia się błąd „brak takiego urządzenia”. Myślę, że jest to oczekiwane zachowanie.

Na moim DigitalOcean VPS nie były wyświetlane żadne wpisy w menu grub, chociaż serwer zrestartował się dobrze. (Jest to VPS 2013, więc twój przebieg może się różnić.)

Kilka notatek podczas uruchamiania grub-emu:

  • W X-Windows, jeśli chcesz wchodzić w interakcje z grub, musisz skupić się na klawiaturze na terminalu, z którego uruchomiłeś grub-emu, a nie na oknie, które się pojawiło.
  • Możesz wyjść z emulatora, naciskając, ca następnie pisząc exit.
  • Po wyjściu emulator terminala może być w złym stanie (np. Enter nie wyświetli się w nowym wierszu). Napraw to, pisząc reset. (Nie martw się, nie spowoduje to ponownego uruchomienia komputera. Po prostu wyczyści twój terminal.)

Pisanie, ca następnie pisanie exitnie działało dla mnie.
Faheem Mitha

1
upewnij się, że skupiłeś się na oryginalnym terminalu, który spawnował okno gruba, a nie samym oknie gruba (zajęło mi to sekundę, aby to zrozumieć)
Madivad
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.