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.

DrStalker
źródło
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
powiązane: askubuntu.com/questions/444855/… | superuser.com/questions/466086/…
Ciro Santilli 15 改造 中心 法轮功 六四 事件

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.

cas
źródło
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.

benrifkah
źródło
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.)
joeytwiddle
źródło
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