Вчера я совершил страшное – обновил grub2 на своём Debian'е и на все вопросы установщика отвечал нажатием Enter, т.е. дал ответы по умолчанию. А делать так не следовало, потому что grub2 сломался и компьютер не грузился.
Здесь я расскажу, ка я его починил.
Я нашёл Live CD с Ubuntu (ну, какой был :), в принципе, любой подошёл бы) и загрузился с него. Прямо с этого диска восстановиться не удалось, потому что мой Debian на архитектуре AMD64, а Ubuntu – i386. Мне нужно было найти что-то загрузочное с той же архитектурой, что и мой Debian.
Немного погуглив, я обнаружил, что у Debian'а тоже есть Live CD, и даже Live USB. Найти можно здесь: http://live.debian.net/debian-cd/5.0.1/amd64/usb-hdd/ . Мне не нужны были красивости рабочего стола, поэтому я скачал просто
образ для восстановления. Чтобы записать его на флешку, нужно выполнить команду (которая
УДАЛИТ ВСЮ ИНФОРМАЦИЮ С ФЛЕШКИ):
# dd if=/path/to/the/debian-live-501-amd64-rescue.img of=/dev/sdX
Здесь
/path/to/the/ директория, где хранится образ,
/dev/sdX – устройство USB-накопителя, которое к моменту выполнения команды должно быть размонтировано.
После того, как образ был записан, я просто перезагрузился с флешки.
Все дальнейшие действия подразумевают, что выполняющий их знает, на каком разделе что у него находится. Если нет уверенности, можно поочерёдно примонтировать каждый раздел, скажем, в
/mnt, посмотреть и даже записать, чтобы не убить систему окончательно.
У меня разделы расположены так:
/dev/sda5 -- /
/dev/sda2 -- /boot
Поэтому на восстановительной системе я делал следующее:
# mount /dev/sda5 /mnt
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount /dev/sda2 /mnt/boot
Или по-русски:
1. Примонтировали корневой раздел жёсткого диска в
/mnt;
2. "Приязали"
/dev к новому корню;
3. То же самое с
/proc;
4. Примонтировали
/boot к новому корню.
Всё это делалось для того, чтобы сделать:
# chroot /mnt
т.е. чтобы поменять корень и работать практически в своей системе.
И последний штрих:
# grub-install /dev/sda
И всё! :)