Как восстановить загрузчик после переустановки Windows или если таблица разделов изменилась
На мультизагрузочных системах, где одной из операционных систем является Windows, вопрос восстановления загрузчика довольно актуален, ибо Windows при установке имеет тенденцию перетирать его (по большому счету, я не до конца понимаю, зачем Windows перезаписывает MBR: код стандартного загрузчика ищет активный раздел в таблице разделов (Partition Table), считывает его в память и передаёт ему управление — всё очень просто; теоретически достаточно просто изменить таблицу разделов, без перезаписи всей MBR. Или можно просто проверить правильность MBR (наличие сигнатуры 55 AA в последних двух байтах сектора) и при отсутствии сигнатуры переписывать загрузчик. В любом случае перезапись, на мой взгляд, должна быть опциональной, чтобы не доставлять лишнюю головную боль).
Теперь о том, как восстановить загрузчик.
Сначала нужно загрузиться с LiveCD.
Для конкретики будем полагать, что диск с установленным Linux — /dev/sda1
cd /mnt
mkdir linux
mount /dev/sda1 /mnt/linux
# Связываем /mnt/linux/boot с /boot
mount --bind /mnt/linux/boot /boot
Затем открываем /boot/grub/menu.lst
и вносим необходимые изменения, если требуется (например, если таблица разделов изменилась).
После чего устанавливаем загрузчик и перезагружаемся:
reboot
После этого всё должно работать.
Re : открываем /boot/grub/menu.lst и вносим необходимые изменения
Какие ?
Можно ли создать новый /boot/grub/menu.lst, если старый cильно поврежден в Debian.
Подробнее
Ну, например, такие (root, возможно, будет другой):
root (hd0,0)
makeactive
chainloader +1
Если изменилась таблица разделов, то, вероятно, придётся изменить
root/uuid
иkernel root=…
для загрузчика Linux.PS — а как случилось, что
/boot/grub/menu.lst
оказался повреждённым?PPS — посмотрите файл
/usr/share/doc/grub/examples/menu.lst