Вход для пользователей

Как восстановить GRUB в MBR

Изображение пользователя D3viL.

Оправдываться не буду, всегда использовал, использую и буду пользоваться LILO и считаю его самым лучшим загрузчиком Linux на данный момент, но жизнь всегда диктует свои правила иногда преподнося неожиданные сюрпризы в самый «подходящий момент» :)
Однажды на одном большущем сервере мне пришлось менять корневой жесткий диск скази массива, который, в свою очередь, был основным загрузочным диском этого сервера.
Накрылся он, как раз, в самый, что ни на есть, «подходящий» момент :)

Всё прошло гладко, был установлен новый диск, на него накачена резервная копия, но вот бэкапа MBR у меня не нашлось.
При загрузке сервера на дисплей выводилась сообщение о не найденной операционной системе.

После загрузки с LiveCD и чтения info grub я начал свои эксперименты с универсальным загрузчиком GRUB.
Комманда grub–install /dev/hd0,1 не помогла, сам grub после команды find /boot/grub/stage1 не мог найти свой конфиг, ничего не работало. :)

Вот моё решение проблемы(если есть более короткий вариант пожалуйста дайте мне знать):

Загружаемся с любого LiveCD монтируем корневой и boot раздел диска:
например sda6 — «/», а sda1 — «/boot»:

mount /dev/sda6 /mnt/sda6 && mount /dev/sda1 /mnt/sda6/boot
затем меняем корневую директорию:
chroot /mnt/sda6
и в первой же строке вводим комманду:
grub
Далее произойдёт проверка доступных дисков, которая может занять некоторое время.
В конце концов должно появиться приглашение:
GRUB>
в нем укажем наш загрузочный диск:
root (hd0,0)
и скажем grub`у установить себя на этот диск:
setup (hd0)
загрузчик grub прочтет все конфигурационные файлы из директории /boot/grub и перепишет MBR.
Далее скажем:
quit
выйдем из переменной корневой директории и перезагрузим наш сервер.
Всё должно работать.

UPD(11.03.2008): Обязательно читаем комментарии.

Вы уж простите меня грабофилы, но после сравнения процедуры восстановления grub с аналогичной процедурой в LILO, я сделал вывод, что grub — поделие для красноглазых шизиков :)

Комментарии

Изображение пользователя FraDe.

Хм. Интересно для сравнения можешь написать как в данном случае восстановить lilo?

а так получается загрузился создал директории а дальше:

mount /dev/sda6 /mnt/sda6
mount /dev/sda1 /mnt/sda6/boot
chroot /mnt/sda6
grub
root (hd0,0)
setup (hd0)
quit
reboot

итого 8 шагов

Изображение пользователя FraDe.

получается сокращение на 2 команды (если повар нам не врет)

mount /dev/sda6 /mnt/sda6
mount /dev/sda1 /mnt/sda6/boot
chroot /mnt/sda6
lilo
quit
reboot

Изображение пользователя xapienz.

D3vil, тут нужно учесть, что если /dev лежит в /, то при выполнении chroot оно не будет работать (ведь / будет другое), поэтому граб не сможет напрямую обратиться к жесткому диску.
в этом случае надо еще примонтировать /dev заранее в нужное место
___________________________
вот так!

Изображение пользователя D3viL.

В моём случае

grub
root (hd0,0)
setup (hd0)
quit

не работало.
вылазила ошибка отсутствия устройства hd0,0

а про LILO я напишу чуть позже. сейчас пакую чемоданы :)

выиграть 2 команды - это да, только ради этого поменяю загрузчик :)

Изображение пользователя FraDe.

А теперь прибавь сколько ты проиграешь если будешь после прописывании в конфиг нового ядра набирать lilo.
Осталось понять сколько раз человек обновляет ядро и сколько раз оно восстанавливает MBR :)
Если MBR затирается хотя бы в два раза реже, чем обновляется ядро, то "экономия" комманд сводится к нулю.

Очередной холивар :)

Изображение пользователя D3viL.

не хуливар, а инстрункция! :)

Изображение пользователя Grifon.

А если у вас LiveCD 32 бита, а система 64, то chroot не отработает!
У команды grub-install есть параметр --root-directory=DIR. Вот он-то и спасёт

Изображение пользователя D3viL.

Grifon> О, спасибо, буду знать теперь.

Изображение пользователя Grifon.

Нашёл на диске LinuxFormat:

Grub, который загрузит всех (Р)

Вопрос: Надоело каждый раз устанавливать в BIOS загрузку с CD, чтобы попробовать новый дистрибутив. Есть ли способ добавить соответствующую опцию в Grub?
Иван Пуренко

Ответ: Научить Grub запускать загрузчик с CD несложно, но для решения этой задачи придется привлечь два других проекта: MEMDISK (http://syslinux.zytor.com/memdisk.php) и Smart Boot Manager (http://btmgr.sourceforge.net/about.html или Главное/SBM на нашем DVD). MEMDISK является частью SYSLINUX и должен быть доступен в вашем дистрибутиве в виде одноименного пакета. Разверните данный пакет и извлеките из него файл memdisk, который следует скопировать в каталог /boot. Далее, возьмите из каталога Главное/SBM на первой стороне нашего DVD файл btmgr.floppy.bz2 – это образ загрузочной дискеты Smart Boot Manager. Нам потребуются ее первые 18 КБ: откройте root-терминал и наберите
dd if=btmgr.floppy of=/boot/sbm.bin bs=1k count=18
Наконец, необходимо создать соответствующую запись в меню Grub:
title Boot from CD
kernel /boot/memdisk
initrd /boot/sbm.bin
ВС

Изображение пользователя N_F.

короче говоря, ничего у меня не сработало как надо. Не знаю что могло быть не так. при загрузке груб выдавал Error 17, насколько я понимаю, не смог смонтировать диск. При восстановлении, как я не корячился, устройство он так и не обнаружил. Возможно, что это из-за того, что я,дурак, раздел под /boot отдельный не выделял. В остальном ничего не вышло((

Изображение пользователя Grifon.

Надо было ручками в шелле груба покопаться. Приходи на линуксовку, посмотрим

Изображение пользователя xapienz.

N_F, перемонтируй /dev в нужную папку.
попробуй перед выполнением chroot выполнить такое:

mount --bind /dev /mnt/sda6/dev
(если диск монтирован был как /mnt/sda6, как описано в первом посте)

если не получится то попробуй таким же макаром прикрутить папку /boot
___________________________
вот так!

Изображение пользователя N_F.

уже поздно что-либо менять:)
да и весь /dev полностью был пуст /*Оо*/ кроме zero, console и еще чего-то. Да и не успею уже сегодня йа, в след раз попробую повторить проблему и прийду:)

Изображение пользователя N_F.

понял ход мыслей:)
не пойму только в чём была трабла, просто ребутнул машинку и всё, встал как вкопаный, не хотел монтировать диск и всё. Как-то всё это подозрительно, причём потом выяснилось, что диск на кторый был установлен груб не был помечен флагом boot, им был помечен диск с вендой(( хотя ранее такого не было...

Изображение пользователя CORPSE.

А вот восстанавливать лило без редактирования конфига, если просто затёрт mbr - одно удовольствие...

mount /dev/hda1 /mnt/disk
chroot /mnt/disk
lilo -A

Если не ошибаюсь, то вроде бы должно быть так. :)

[root@brain root]# mount /dev/hands /mnt/ass -o nosuid,umask=000

Изображение пользователя Grifon.

CORPSE, повторюсь. Если у тебя разные несовместимые архитектуры LiveCD и той, которую восстанавливаешь, то chroot не сработает