Я использую 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 уже на диске), так что вот что я сделал:

  1. смонтировал sdb2 как /mnt /t, sdb1 как /mnt /t /boot
  2. повторно связать /{dev, proc, sys} как /mnt /t /{dev, proc, sys}
  3. chroot /mnt/t (чтобы убедиться, что я использую Grub из sdb, а не sda)
  4. 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 по вышеуказанному сценарию:

  1. # grub
  2. >root (hd0,0)
  3. >setup (hd0)

который напечатал некоторую информацию об обновлениях, но без ошибок.

Тем не менее, я все еще получаю ту же ошибку: пустой экран с курсором при загрузке с диска.

Вопросы:

  1. Вышеприведенные команды grub, похоже, никак не влияют на первые сектора диска. Все сектора со 2 по 2047 обнуляются даже после приведенных выше команд grub. Где находится Legacy Grub, уровень 1.5?
  2. Что такое /boot/grub/stage1? Он отличается от фактической MBR на диске тем, что позволяет указателю его этапа 2 указывать на 0x01 0x00 0x00 0x00. Фактическая MBR на диске указывает на какое-то место со старого диска. Я ожидал бы, что последовательность команд о будет обновлять этот указатель так, чтобы он указывал на существующий этап 1.5 (или этап 2?), Или помещал этап 1.5 в сектор 2 и обновлял указатель до 0x01 0x00 0x00 0x00?

0