Grub bir cihaza yüklü olup olmadığını nasıl anlarım?


37

Grubun bir diske kurup kurulmadığını ve hangi ayarlara sahip olduğunu (özellikle kök parametresi için ne olduğunu) nasıl anlarım?

Her iki diskin de grubun kurulu olduğundan emin olmak için RAID1 dizilerindeki birçok diski kontrol etmem gerekiyor, her diskte grubun uygun kök değeri var.


3
Aşağıdaki yeni cevabı kabul edebilir misiniz? Kabul cevap artık modası geçmiş beri
rubo77

@ rubo77, cevabım, grub0.9x veya daha düşük yaygın kullanımdayken ve yeniden adlandırılmadan çok önce o zaman doğruydu grub-legacy. Bu sizi rahatsız ediyorsa, özellikle ilgili yeni bir soru sormanızı öneririm grub2. alternatif olarak, zamanla eski haline gelen her soruyu ve cevabı düzelten bir kampanya yürütün.
cas

3
Alınma Bence SO bir bilgi tabanı ve zaman içinde değişiyor. Bir zamanlar eski cevaplar güncellenmelidir.
rubo77

Yanıtlar:


28

GÜNCELLEME:

Bu cevap 2009'dan itibarendir ve grub2'ye değil grub-mirası için geçerlidir.

Bir fileMBR'deki GRUB'u tanımlamak için kullanabilirsiniz . Örneğin

# 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 GRUB depolanır MBR, saklanmayan menu.lstbir dosya sistemi (depolanan dosyası tipik kök fs / boot / grub dizin veya / boot dosya sisteminin grub dizininde - her zaman olmasa da bunu herhangi bir yerde olabilir).

Yukarıdaki dosyanın çıktısını ayrıştırmanız, hangi disk / bölümün açık olduğunu belirlemeniz menu.lst, takmanız, okumanız ve ayrıştırmanız gerekir. Ayrıca hangi grub menü girişinin varsayılan olduğunu bulmak için grub / default dosyasında okumak isteyeceksiniz, çünkü muhtemelen root = parametresi en çok ilgilendiğiniz parametre.


Bu durumda grubun menüyü aradığından emin olmak için bir yola ihtiyacım var. Doğru yerde ... bir yere önyükleyici yükleyiciye hangi disk ve bölüme gitmek zorunda olduğu söylenmelidir, böylece önyükleme menüsünü alabilir.
DrStalker

grub ana sayfası en grub hakkında yararlı bilgi çok şey var gnu.org/software/grub , başsız wiki grub.enbug.org ve wikipedia de en.wikipedia.org/wiki/GRUB
cas

8
Bu artık grub2 ile doğru değil. Bunun yerine @ benrifkah'ın cevabına bakınız.
Paul Tomblin

52

Alternatif Yöntem

file -sbenim için Ubuntu Lucid'de işe yaramadı çünkü dosya komutumun sihirli dosyaları güncel değildi . Sihirli dosyalarınız GRUB değişikliklerine yetişmediyse, bunu yapmanın başka bir yolu da, aşağıdaki ddkomutu kullanarak cihazın ilk 512 baytını incelemektir :

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

Bu ddkomutun çıktısını komut aracılığıyla gönderir ve stringsböylece yazdırılamayan karakterleri çıkarır (aktarım istatistikleri atılır /dev/null).

GRUB'un başarısızlıkla karşılaştığında görüntüleyebileceği herhangi bir mesaj görürseniz grub kurdunuz demektir.

Bu parola korumalı postayı yanıtlamak için ubuntuforums.org adresinden önyükleme yapmak için şapka ipucu: http://ubuntuforums.org/showthread.php?t=363372

Merak ettiğim için bu ne aldım 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

Özel olarak GRUB hakkında hiçbir şey yok.


5
Noktaya bak. Kabul edilen cevap benim için birkaç makinede işe yaramadı, ama sizinki yaptı.
Cerin

13
Kabul edilen cevap 2009 yılında yazılmıştır ve (grub.cfg yerine menu.lst yerine açıkça belirtildiği gibi) grub1 aka "grub-legacy" içindi. Açıkçası o zamandan beri işler değişti ve grub2 MBR'ye bir tanımlayıcı koymadı. sizin için bazı makinelerde işe yaradıysa ancak diğerleri üzerinde çalışmasaydı, bu bazılarında grub1 ve diğerlerinde grub2 anlamına gelir.
kas

1
Açıklamalar için teşekkürler Craig. Başlangıçta file -skomutu denedim sistem görünüşte GRUB2 olan grub-pc kullanıyor, bu yüzden kısmen haklısınız gibi geliyor. Ancak, file -sGRUB 0.97 çalıştıran bazı diğer sistemlerde, bazılarında ise çalışmayan bazılarında çalıştı. Bu sistemler arasındaki fark, file komutuyla birlikte gelen sihirli dosyalardaki sayılardı. Sihirli sayı dosyalarını değiştirmek, çalışmayan sistemdeki tanımların çalışma sisteminin başarısız olmasına neden olduğunu doğruladı.
benrifkah

7

grub-emuMakine yeniden başlatıldığında grubun gösterileceği menüyü görmek için kullanabilirsiniz .

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

Masaüstü makinemde menü beklendiği gibi görüntülendi, ancak bir çekirdeği önyüklemiş gibi yaparsam "böyle bir aygıt yok" hatası aldım. Bunun beklenen davranış olduğunu düşünüyorum.

DigitalOcean VPS'imde grub menüsünde hiçbir giriş görüntülenmedi, ancak sunucu gerçekten iyi bir şekilde yeniden başlatıldı. (Bu bir 2013 VPS'dir, bu nedenle kilometreniz değişebilir.)

Çalışırken bazı notlar grub-emu:

  • X-windows'da grub ile etkileşime geçmek istiyorsanız, klavye odağınızın grubun çalıştığı terminalin üzerinde olması gerekir ; açılan pencerede değil.
  • Emülatörden, cardından tuşuna basarak yazabilirsiniz exit.
  • Çıktıktan sonra, terminal emülatörünüz kötü durumda olabilir (örneğin, Enter yeni bir satırda görüntülenmeyecektir). Yazarak düzeltin reset. (Endişelenmeyin, makinenizi yeniden başlatmaz. Terminalinizi temizler.)

Yazma cardından exitbenim için işe yaramadı.
Faheem Mitha

1
Emin senin grub penceresini değil, grub pencere kendisi olurken orijinal terminalde odaklanmak var olun (bu anlamam için bir saniyesini aldı)
Madivad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.