Как я могу узнать, установлен ли 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.
Ты можешь использовать 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
:
c
затем набрав exit
.reset
. (Не волнуйтесь, это не перезагрузит вашу машину. Это просто очистит ваш терминал.)