Как загрузить систему FreeBSD с неработающим загрузочным кодом?

8

У меня есть жесткий диск (или SSD, или флэш-диск) с установленным на нем FreeBSD, и каким-то образом я сломал загрузочный код (первые 446 байтов MBR). Как я могу загрузиться в этот FreeBSD?

AntonioK
источник

Ответы:

13

Предполагая, что существует 512-байтовая DOS-подобная MBR, и вы заменили первые 446 байтов ее на какое-то дерьмо ( нули или просто /dev/urandomвывод), или повредили загрузочный код другим способом. В этом случае таблица разделов MBR находится на своем месте, но система не может загрузиться с этого устройства.

Идея состоит в том, чтобы использовать загрузчик другой BSD-подобной системы для загрузки с вашего устройства и вашего ядра.

  • Вы должны начать загрузку с любой BSD-подобной ОС (я пробовал с FreeBSD 6.0, 7.0, 8.0, 8.1, 8.2, 8.3, 8.4, 9.2 и Frenzy 1.4) с другого жесткого диска, CD, флешки, PXE, виртуального носителя через BMC / KVM и др.
  • Во время процесса загрузки нажмите «Escape to loader prompt» на экране загрузчика (это будет «6» в старых системах FreeBSD, «3» в FreeBSD 9, «8» в Frenzy)
  • Выгрузите ядро ​​и его модули, набрав unload
  • Найдите устройство, с которого хотите загрузить FreeBSD (обычно что-то вроде disk0s1a), набравlsdev
  • Установите это устройство "текущий", набрав set currdev="disk0s1a"
  • Перечитайте loder.confс вашего устройства (чтобы убедиться, что все настройки ядра и хаки будут применимы), набравread-conf boot/loader.conf
  • Запустите ОС и наслаждайтесь - просто введите boot-conf

Когда ваша ОС запускается, вы можете восстановить загрузочный код. Я использую sysinstallдля этого (Custom -> Partition, W, <Yes>, BootMgr( "Установка FreeBSD Boot Manager"), <OK>, Q, <Exit>, <Exit Install>), но это не рекомендуется , так как 9.0-RELEASE и удаляется из базы , так как 10,0-RELEASE. Другой способ - использовать резервную копию, сохраненную в /boot, для извлечения из нее загрузочного кода:

# gpart bootcode -b /boot/mbr /dev/yourbootdevice
AntonioK
источник