ฉันจะทราบได้อย่างไรว่ามีการติดตั้งด้วงในอุปกรณ์หรือไม่


37

ฉันจะทราบได้อย่างไรว่ามีการติดตั้งด้วงบนดิสก์หรือไม่และมีการตั้งค่าใดบ้าง (อย่างน่าทึ่งสิ่งที่มีอยู่สำหรับพารามิเตอร์รูท)

ฉันต้องตรวจสอบดิสก์จำนวนมากในอาร์เรย์ RAID1 ของซอฟต์แวร์เพื่อให้แน่ใจว่าดิสก์ทั้งสองติดตั้งด้วงด้วยด้วงบนดิสก์แต่ละแผ่นที่มีค่ารูทที่เหมาะสม


3
คุณคิดว่าจะยอมรับคำตอบใหม่ด้านล่างหรือไม่ เนื่องจากคำตอบที่ยอมรับนั้นล้าสมัยแล้วในตอนนี้
rubo77

@ rubo77 คำตอบของฉันถูกต้องในเวลาที่เมื่อgrub0.9 grub-legacyเท่าหรือต่ำกว่าอยู่ในการใช้งานทั่วไปและระยะยาวก่อนที่จะกลายเปลี่ยนชื่อเป็น grub2ถ้ารบกวนจิตใจนี้คุณผมขอแนะนำให้ถามคำถามใหม่เฉพาะที่เกี่ยวกับ หรือดำเนินการแคมเปญแก้ไขคำถามและคำตอบที่ล้าสมัยไปตามกาลเวลา
cas

3
ปราศจากความผิด. ฉันคิดว่า SO เป็นฐานความรู้และตั้งใจจะเปลี่ยนแปลงตลอดเวลา เมื่อคำตอบที่ล้าสมัยควรมีการปรับปรุง
rubo77

คำตอบ:


28

UPDATE:

คำตอบนี้มาจาก 2009 และใช้กับ grub-legacy ไม่ใช่ grub2

คุณสามารถใช้fileเพื่อระบุ GRUB ใน MBR เช่น

# 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 ไม่ได้เก็บไว้ใน MBR ที่จัดเก็บไว้ในด้วงของmenu.lstไฟล์ที่ถูกเก็บไว้ในระบบแฟ้ม (โดยทั่วไปใน / boot / ไดเรกทอรีด้วงของ FS รากหรือไดเรกทอรีด้วงของระบบแฟ้ม / boot - แต่ไม่เสมอไปมัน อาจเป็นที่ใดก็ได้)

คุณจะต้องแยกวิเคราะห์ผลลัพธ์ของไฟล์ด้านบนตรวจสอบว่าดิสก์ / พาร์ติชั่นใดที่menu.lstไฟล์นั้นติดตั้งอ่านมันแล้วแยกวิเคราะห์ คุณจะต้องอ่านในไฟล์ด้วง / ค่าเริ่มต้นเพื่อหาว่ารายการเมนูด้วงใดเป็นค่าเริ่มต้นเพราะนั่นอาจเป็นรายการที่มีพารามิเตอร์ root = ที่คุณสนใจมากที่สุด


ในกรณีที่ฉันต้องการวิธีที่จะทำให้แน่ใจว่าด้วงกำลังมองหาเมนูอยู่ในตำแหน่งที่เหมาะสม ... ที่ไหนสักแห่งบูตโหลดเดอร์จะต้องบอกว่าดิสก์ & พาร์ติชันมันต้องไปเพื่อให้สามารถรับเมนูการบูต
DrStalker

มีข้อมูลที่เป็นประโยชน์มากมายเกี่ยวกับด้วงที่หน้าแรกของด้วงgnu.org/software/grub , grub wiki grub.enbug.orgและที่ wikipedia en.wikipedia.org/wiki/GRUB
cas

8
สิ่งนี้ไม่ถูกต้องอีกต่อไปเมื่อใช้กับ grub2 ดูคำตอบของ @ benrifkah แทน
พอลทอมบลิน

52

วิธีการอื่น

file -sไม่ทำงานสำหรับฉันในอูบุนตูสุวิมลเพราะฉันไฟล์มายากลคำสั่งของไฟล์ออกจากวันที่ อีกวิธีหนึ่งในการทำเช่นนี้หากไฟล์เวทมนต์ของคุณไม่ได้รับการเปลี่ยนแปลงด้วงคือการตรวจสอบ 512 ไบต์แรกของอุปกรณ์โดยใช้ddคำสั่งเช่นนี้:

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

สิ่งนี้จะส่งเอาต์พุตของddคำสั่งผ่านstringsคำสั่งดังนั้นจึงแยกอักขระที่ไม่สามารถพิมพ์ออกได้ (สถิติการถ่ายโอนถูกยกเลิกไป/dev/null)

หากคุณเห็นข้อความใด ๆ ที่ด้วงจะแสดงเมื่อพบความล้มเหลวแสดงว่าคุณได้ติดตั้งด้วงแล้ว

แฮททิปให้ louib บน ubuntuforums.org สำหรับการตอบในโพสต์ที่ได้รับการป้องกันด้วยรหัสผ่านนี้: http://ubuntuforums.org/showthread.php?t=363372

สำหรับสิ่งที่อยากรู้อยากเห็นนี่คือสิ่งที่ฉันได้รับจาก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

ไม่มีอะไรเกี่ยวกับด้วงในนั้นโดยเฉพาะ


5
จับได้เห็นชัดตรงเผง. คำตอบที่ได้รับการยอมรับใช้ไม่ได้กับฉันในหลาย ๆ เครื่อง แต่คุณทำแล้ว
Cerin

13
คำตอบที่ได้รับการยอมรับถูกเขียนขึ้นในปี 2009 และ (ตามที่ควรจะเห็นได้ชัดจากการกล่าวถึง menull มากกว่า grub.cfg) สำหรับ grub1 หรือที่รู้จักกันในชื่อ "grub-legacy" เห็นได้ชัดว่าสิ่งต่าง ๆ มีการเปลี่ยนแปลงตั้งแต่นั้นมาและ grub2 ไม่ได้ใส่ตัวระบุใน MBR ถ้ามันใช้ได้กับเครื่องจักรบางอย่างสำหรับคุณ แต่ไม่ใช่สำหรับคนอื่นนั่นก็หมายความว่าคุณมี grub1 ในบางตัวและ grub2 กับคนอื่น ๆ
cas

1
ขอบคุณสำหรับการชี้แจงเครก ระบบที่ฉันเคยลองใช้file -sคำสั่งบนใช้ grub-pc ซึ่งเห็นได้ชัดว่าเป็น GRUB2 ดังนั้นดูเหมือนว่าคุณจะถูกต้องเพียงบางส่วน อย่างไรก็ตามฉันวิ่งไปfile -sบนระบบอื่น ๆ ที่ใช้ GRUB 0.97 และบางระบบใช้งานได้ในขณะที่บางระบบไม่ทำงาน ความแตกต่างระหว่างระบบเหล่านี้คือตัวเลขในไฟล์เวทย์มนตร์ที่มาพร้อมกับคำสั่งไฟล์ การสลับไฟล์หมายเลข Magic ยืนยันว่าคำจำกัดความจากระบบที่ไม่ทำงานทำให้ระบบการทำงานล้มเหลว
benrifkah

7

คุณสามารถใช้grub-emuเพื่อดูเมนูที่ด้วงจะปรากฏขึ้นเมื่อเครื่องรีบูทครั้งต่อไป

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

บนเครื่องเดสก์ท็อปของฉันเมนูจะปรากฏขึ้นตามที่คาดไว้แม้ว่าจริง ๆ แล้วถ้าฉันแกล้งทำเป็นบูทเคอร์เนลฉันได้รับข้อผิดพลาด "ไม่มีอุปกรณ์ดังกล่าว" ฉันคิดว่านั่นเป็นพฤติกรรมที่คาดหวัง

ใน DigitalOcean VPS ของฉันไม่มีรายการใดถูกแสดงในเมนูด้วงแม้ว่าเซิร์ฟเวอร์จะทำการรีบูตได้จริง (นี่คือ 2013 VPS ดังนั้นระยะของคุณอาจแตกต่างกันไป)

หมายเหตุบางอย่างเมื่อทำงานgrub-emu:

  • ใน X-Windows ถ้าคุณต้องการที่จะมีปฏิสัมพันธ์กับด้วงคุณจะต้องของคุณโฟกัสของแป้นพิมพ์จะเป็นบน terminalที่คุณวิ่งด้วงนกอีมูและไม่เกี่ยวกับหน้าต่างที่โผล่ขึ้นมา
  • คุณสามารถออกจากโปรแกรมจำลองโดยการกดปุ่มจากนั้นพิมพ์cexit
  • หลังจากออกจากโปรแกรมจำลองเทอร์มินัลของคุณอาจอยู่ในสถานะไม่ดี (เช่น Enter จะไม่แสดงในบรรทัดใหม่) resetแก้ไขว่าด้วยการพิมพ์ (ไม่ต้องกังวลว่าจะไม่รีสตาร์ทเครื่องมันจะทำความสะอาดเครื่องของคุณ)

การพิมพ์cตามด้วยexitไม่ได้ผลสำหรับฉัน
Faheem Mitha

1
ให้แน่ใจว่าคุณมีความสำคัญกับขั้วเดิมที่มาจากกระบอกไม้ไผ่หน้าต่างด้วงและไม่หน้าต่างด้วงตัวเอง (เอาฉันเป็นครั้งที่สองที่จะตระหนักถึงนี้)
Madivad
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.