Назад | Перейти на главную страницу

Как узнать, установлен ли grub на устройстве?

Как я могу узнать, установлен ли grub на диск, и какие настройки у него есть (в частности, что он имеет для параметра root)

Мне нужно проверить много дисков в программных массивах RAID1, чтобы убедиться, что на обоих дисках установлен grub, причем grub на каждом диске имеет соответствующее корневое значение.

Альтернативный метод

file -s не работал у меня в Ubuntu Lucid, потому что мой волшебные файлы команды file устарели. Другой способ сделать это, если ваши волшебные файлы не догнали изменения GRUB, - это проверить первые 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).

Если вы видите какие-либо сообщения, которые GRUB будет отображать при сбое, значит, у вас установлен grub.

Совет Луибу на 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

Там нет ничего конкретного о GRUB.

ОБНОВИТЬ:

Этот ответ относится к 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, это хранится в GRUB menu.lst файл, который хранится в файловой системе (обычно в каталоге / boot / grub корневой файловой системы или в каталоге grub файловой системы / boot, но не всегда, он может быть где угодно).

Вам нужно будет проанализировать вывод файла выше, определить, какой диск / раздел menu.lst файл включен, смонтируйте его, прочтите и проанализируйте. Вы также захотите прочитать файл grub / default, чтобы выяснить, какая запись меню grub используется по умолчанию, потому что это, вероятно, тот, который имеет параметр root =, который вас больше всего интересует.

Ты можешь использовать grub-emu чтобы увидеть меню, которое grub покажет при следующей перезагрузке машины.

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

На моем настольном компьютере меню отображалось, как и ожидалось, хотя, если я действительно делал вид, что загружаю ядро, я получал ошибку «нет такого устройства». Я думаю, что это ожидаемое поведение.

На моем VPS DigitalOcean записи не отображались в меню grub, хотя сервер действительно перезагружался нормально. (Это VPS 2013 года, поэтому ваш пробег может отличаться.)

Некоторые заметки при беге grub-emu:

  • В X-windows, если вы хотите взаимодействовать с grub, вам понадобится ваш фокус клавиатуры быть на терминале из которого вы запустили grub-emu, а не в появившемся окне.
  • Вы можете выйти из эмулятора, нажав c затем набрав exit.
  • После выхода ваш эмулятор терминала может быть в плохом состоянии (например, Enter не будет отображаться в новой строке). Исправьте это, набрав reset. (Не волнуйтесь, это не перезагрузит вашу машину. Это просто очистит ваш терминал.)