Monday, December 14, 2009

"NTLD is missing" после установки FreeBSD

Некоторые производители ОС проводят монопольную политику, и только FreeBSD это делает неосознанно - посредством багов в инсталляторе :-)

Время от времени при установке FreeBSD на винт с установленной виндой (в первом разделе), каким то образом херятся загрузочная область этого раздела. В результате при загрузке выдается "NTLDR IS MISSING". Причем, все виндовые файлы на месте. Т.е. их копирование туда не помогает ни разу. Установка grub тоже не помогает - он успешно находит виндовый раздел, но при загрузке та же фигня.

Мистика сцуко.

UPDATE:

Пришлось снова вернуться к этому посту, поскольку данный баг проявился у меня недавно при установке Arch Linux на тот же комп! Недаром у них с FreeBSD исталляторы похожи... Чтобы разобраться в проблеме, проделал установку еще раз, предварительно сохранив начальные сектора диска и виндового раздела командой dd. Установка производилась в уже имеющийся раздел. Несмотря на это, инсталлятор почему то изменил первый сектор, a.k.a. MBR. Предполагаю, что изменяется 4-байтная сигнатура диска, которая используется при загрузке винды. Запись сохраненной копии MBR обратно на диск, естественно, решило проблему. Мораль: бэкап MBR перед установкой OS - суровая необходимость.

Использованные команды:

бэкап:
dd if=/dev/ad4 of=mbr bs=512 count=1

восстановление:
sysctl kern.geom.debugflags=16   #позволяет менять MBR на "живой" системе
dd if=mbr of=/dev/ad4 bs=512 count=1
З.Ы. Для доступа в винду при наличии ошибки "NTLDR IS MISSING" полезным может оказаться загрузочный CD, взятый отсюда.

12 comments:

  1. а если fix mbr сделать из винды?

    ReplyDelete
  2. Манипуляции с mbr, как то: fixboot, fixmbr, установка любых загрузчиков в mbr не работают. Помогает только перезапись виндового раздела из имаджа. Я и говорю, мистика :)

    ReplyDelete
  3. Вроде бы SystemCommander должен знать такие несовместимости и уметь их обходить.

    ReplyDelete
  4. мистика только почему он похерился
    а в остальном понятно. скорее всего достаточно было переписать первые 512 байт

    ReplyDelete
  5. Винда затем, чтобы нормальные люди могли комп пользовать :-)

    ReplyDelete
  6. Поиски в гугле наводят на мысль, что к этому багу причастны какие то настройки BIOS-а. У меня все стоит в AUTO и колупать что-то влом.
    К счастью major версии бсд выходят не так часто.

    ReplyDelete
  7. это кого ты ненормальными назвал? ;)

    ReplyDelete
  8. Никакой мистики, известный факт: http://dadv.livejournal.com/45507.html

    ReplyDelete
  9. Спасибо, прочитал.
    >В 8.0-RELEASE уже всё работает по умолчанию.
    Дело в том что я восьмерку и ставил :-) (8.0-RELEASE-amd64)
    Вопрос в том, как заставить грузиться винду если это все таки случается. Свистопляска с имаджами очень напрягает.

    ReplyDelete
  10. 1. Загрузиться с какой-нибудь WinPE.
    2. Запустить regedit и подключить реестр винды с винта (Load hive в меню).
    3. Зайти в MountedDevices или как его там и посмотреть сигнатуру загрузочного раздела (4 байта).
    4. Восстановить их по смещению 0x1b8 в MBR любым дисковым редактором.
    А ещё лучше перед установкой любой OS убедиться, что у тебя таки есть полные бекапы :-)
    Тогда MBR можно просто взять из бекапа, ну или хотя бы 4 байта из него.

    ReplyDelete
  11. Перезапись MBR помогла, спасибо.

    ReplyDelete