Я использую Grub 0.97 (так называемый Legacy Grub) на диске с таблицей разделов MBR и четырьмя разделами, sdb {1..4}. Содержимое этих разделов копируется с другого диска. sdb2 содержит /, sdb1 содержит то, что будет /boot (с установленным флагом загрузки), sdb3 - это подкачка FS, а sdb4 - /home. (Это sdb вместо sda, потому что этот диск сейчас находится в док-станции USB.)
sdb1 начинается в секторе 2048, согласно политике выравнивания сектора. Содержит Legacy Grub.
Я скопировал первые 446 байт с другого диска, который использовал ту же версию Legacy Grub, в MBR sdb. Когда я загружаюсь, я получаю пустой экран после POST с курсором в левом верхнем углу, что удивительно (я ожидал, что он пожалуется на отсутствующий этап 1.5, но, возможно, он этого не делает). Итак, я хотел установить Legacy Grub stage 1.5 (этап 2 уже на диске), так что вот что я сделал:
- смонтировал sdb2 как /mnt /t, sdb1 как /mnt /t /boot
- повторно связать /{dev, proc, sys} как /mnt /t /{dev, proc, sys}
chroot /mnt/t
(чтобы убедиться, что я использую Grub из sdb, а не sda)grub-install /dev/sdb
который уступил
/dev/sdb does not have any corresponding BIOS drive
который я grub-install --recheck /dev/sdb
который обновил /boot/grub/device.map
, все файлы /boot/grub/*stage1_5
, а также /boot/grub/stage{1,2}
, Когда я пытался загрузиться с него, я получаю ту же ошибку: пустой экран с курсором в левом верхнем углу.
Таким образом, я использовал оболочку grub по вышеуказанному сценарию:
# grub
>root (hd0,0)
>setup (hd0)
который напечатал некоторую информацию об обновлениях, но без ошибок.
Тем не менее, я все еще получаю ту же ошибку: пустой экран с курсором при загрузке с диска.
Вопросы:
- Вышеприведенные команды grub, похоже, никак не влияют на первые сектора диска. Все сектора со 2 по 2047 обнуляются даже после приведенных выше команд grub. Где находится Legacy Grub, уровень 1.5?
- Что такое
/boot/grub/stage1
? Он отличается от фактической MBR на диске тем, что позволяет указателю его этапа 2 указывать на 0x01 0x00 0x00 0x00. Фактическая MBR на диске указывает на какое-то место со старого диска. Я ожидал бы, что последовательность команд о будет обновлять этот указатель так, чтобы он указывал на существующий этап 1.5 (или этап 2?), Или помещал этап 1.5 в сектор 2 и обновлял указатель до 0x01 0x00 0x00 0x00?