it-swarm-vi.tech

Làm cách nào để biết grub được cài đặt trên thiết bị?

Làm thế nào tôi có thể biết nếu grub được cài đặt trên đĩa và nếu đó là cài đặt nào thì nó có (đáng chú ý, nó có gì cho tham số gốc)

Tôi cần kiểm tra nhiều đĩa trong mảng RAID1 phần mềm để đảm bảo cả hai đĩa đã được cài đặt, với các grub trên mỗi đĩa có giá trị gốc thích hợp.

39
DrStalker

CẬP NHẬT:

Câu trả lời này là từ năm 2009 và áp dụng cho di sản grub, không phải grub2.

Bạn có thể sử dụng file để xác định GRUB trong MBR. Ví dụ:.

# 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

Các root= paramater không được lưu trữ trong MBR, được lưu trữ trong GRUB's menu.lst tệp được lưu trữ trên hệ thống tệp (thường là trong thư mục/boot/grub của thư mục gốc fs hoặc thư mục grub của hệ thống tệp/boot - nhưng không phải lúc nào cũng có thể ở bất cứ đâu).

Bạn sẽ phải phân tích đầu ra của tệp ở trên, xác định đĩa/phân vùng nào menu.lst tập tin được bật, gắn kết nó, đọc nó và phân tích nó. Bạn cũng sẽ muốn đọc trong tệp grub/mặc định để tìm ra mục nhập menu grub nào là mặc định, bởi vì đó có thể là mục có tham số root = mà bạn quan tâm nhất.

28
cas

Phương pháp thay thế

file -s không hoạt động với tôi trong Ubuntu Lucid vì tệp ma thuật của lệnh tệp đã hết hạn. Một cách khác để làm điều này nếu các tệp ma thuật của bạn chưa bắt kịp GRUB thay đổi là kiểm tra 512 byte đầu tiên của thiết bị bằng lệnh dd như thế này:

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

Điều này sẽ gửi đầu ra của lệnh dd thông qua lệnh strings do đó tước bỏ các ký tự không thể in được (thống kê chuyển được loại bỏ sang /dev/null).

Nếu bạn thấy bất kỳ thông báo nào GRUB sẽ hiển thị khi gặp sự cố thì bạn đã cài đặt grub.

Hat tip cho louib trên ubuntuforums.org để trả lời trong bài đăng được bảo vệ bằng mật khẩu này: http://ubuntuforums.org/showthread.php?t=363372

Đối với sự tò mò đây là những gì tôi nhận được từ file -s:

[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

Không có gì về GRUB trong đó cụ thể.

53
benrifkah

Bạn có thể dùng grub-emu để xem menu mà grub sẽ hiển thị khi máy tiếp theo khởi động lại.

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

Trên máy tính để bàn của tôi, menu được hiển thị như mong đợi, mặc dù nếu tôi thực sự giả vờ khởi động kernel, tôi đã gặp lỗi "không có thiết bị như vậy". Tôi nghĩ rằng đó là hành vi dự kiến.

Trên VPS DigitalOcean của tôi, không có mục nào được hiển thị trong menu grub, mặc dù máy chủ đã thực sự khởi động lại tốt. (Đây là VPS 2013, vì vậy số dặm của bạn có thể thay đổi.)

Một số lưu ý khi chạy grub-emu:

  • Trong X-windows, nếu bạn muốn tương tác với grub, bạn cần tập trung bàn phím để trở thành trên thiết bị đầu cuối từ đó bạn chạy grub-emu, và không phải trên cửa sổ bật lên.
  • Bạn có thể thoát trình giả lập bằng cách nhấn c sau đó nhập exit.
  • Sau khi thoát, trình giả lập thiết bị đầu cuối của bạn có thể ở trạng thái kém (ví dụ: Enter sẽ không hiển thị trên một dòng mới). Khắc phục điều đó bằng cách gõ reset. (Đừng lo lắng nó sẽ không khởi động lại máy của bạn. Nó sẽ dọn sạch thiết bị đầu cuối của bạn.)
7
joeytwiddle