Недавно товарищ «сломал линукс», переустановив винду на отдельном разделе. На самом деле мы то знаем, что он просто перетёр загрузчик. Почему-то у него вызвало затруднение его восстановление. Он нашёл 100500 способ в интернете, ни один не сработал, вот сидел и грустил. За 3 минуты я ему починил, за 10 минут написал заметку о том, как восстановить grub после переустановки винды.
Даже два способа укажу приемлемых.
Поглядел, действительно, по инету ходят странные способы загрузок с лайв-сиди и дальнейшие дистрибутивозависимые действия. Это удивительно, если учесть, что grub сам себя умеет устанавливать куда угодно.
Первый способ (очень вкратце), как ни странно более распространённый: грузимся с лайвсиди (не самого старого, лучше с того же, что сама линукс-система), дальше монтируем основной раздел линукса (если лайвсиди его не подмонтировал, например в /mnt/sysimage, как это делает федора). Потом ему chroot. Дальше grub-install /основной/раздел (например, /dev/sda). С этим способом лично у меня была однажды какая-то проблема в федоре (хоть убей не помню подробностей).
Второй способ. Делаем из самого grub. Запускаем из того же livecd
# grub
, открывается грубовская консоль. После этого осталось только сделать setup с указанием раздела.
Предположим, мы вообще не в теме, какой именно раздел и как в терминах груба называется. Воспользуемся командой (всё той же грубовской консоли) find с параметром — именем файла, который надо найти. Хитрость тут в том, что если раздел /boot отдельный, то надо искать с корнем от этого /boot, то есть файл /grub/grub.conf, если же /boot у вас в корневом разделе, то искать надо /boot/grub/grub.conf. Эта очевидная тонкость смутила в том числе почему-то упомянутого товарища. Файл, который надо искать, роли не играет на самом деле. Для подтверждения этого факта, хотя в большинстве руководств ищется файл /boot/grub/stage1, я выбрал другой для пущей важности.
У меня раздел под /boot отдельный, то есть я бы сделал так:
grub> find /grub/grub.conf find /grub/grub.conf (hd0,1)
Вот мы видим (hd0,1). Это и есть то, что надо. Осталось сделать:
root(hd0,1) setup(hd0) quit
Ну и всё. Конфиг grub.conf остался старый, если винда уже была. Всё будет работать как было. Пояснять что такое setup, (hd0), root итд не буду — в инете всё разжёвано. Также в грубовской консоли работают команды «help» и «help команда».
Автор: Дмитрий