Oh Shi! Или я зачем-то поставил Windows поверх моего любимого Linux'а...

И правда, зачем? Ну это больше риторический вопрос.

Очень часто, у начинающих пользователей ОС Linux возникает необходимость например переставить первую ос на компьютере по той причине, что она отказывается работать (Начинающие как правило держат WinXP и Ubuntu\Kubuntu. Это самый распространенный "набор"). И тут проблема: установщик windows стирает наш горячо любимый grub и меняет на свой. Так как предполагаемый человек новичок, то вероятнее всего он поставит Linux снова, потеряв все настройки. Ибо другого варианта он не знает. Это кстати зря, всего лишь парочка магических легких команд, и старый добрый загрузчик на месте и ничего не надо переустанавливать =]

И так, нам понадобятся загрузочный livecd с дистрибутивом linux (например gentoo или archlinux подойдут как нельзя лучше, но и обычный livecd Ubuntu подойдет тоже), немного терпения и желания =]

Внимание:Все что описано ниже, поможет только если у вас Grub первых версий. Т.е. если у вас допустим была установлена Ubuntu 9.10 с нуля, то у вас вероятнее всего Grub 2.0, и это небольшое how-to, вам не подойдет.

Грузимся с livecd и пишем cfdisk /dev/sda (у вас может отличается. Например hda если старое ядро) и смотрим, и хорошо запоминаем разбиение диска. Предположим так:

/dev/sda1 - ntfs раздел с Windows  
/dev/sda2 - ext2 с /boot  
/dev/sda3 - ext3 на корневой раздел

Запомнили? Отлично. Примонтируем разделы:

mount /dev/sda3 /mnt/  
mount /dev/sda2 /mnt/boot  
mount -t proc /proc /mnt/proc  
mount -o bind /dev/ /mnt/dev/

Войдем в свою систему:

chroot /mnt/ /bin/bash

Все. Мы в своей родной системе. Осталось восстановить загрузчик. На всякий случай, еще надо добавить инфу о подключенных файловых системах в /etc/mtab:

grep -v rootfs /proc/mounts > /etc/mtab

Необходимо отредактировать /boot/grub/grub.conf в данном случае он будет выглядеть так:

default 0  
 timeout 30

title Linux  
 root (hd0,1)  
 kernel /boot/kernel-x86-2.6.31root=/dev/ram0 real_root=/dev/sda3  
 initrd /boot/initramfs-x86-2.6.31

title Windows  
 rootnoverify (hd0,0)  
 makeactive  
 chainloader +1

Немного объяснений: грубу нужен именно раздел, на котором находятся загрузочные файлы. Т.е. /boot. В случае с Windows просто указываем раздел где она (венда) находится, и на этом работа grub заканчивается. Например в данном случае c Linux - (hd0,1). Это значит что диск первый (sda), и раздел /boot у нас находится на отдельном диске (sda1).

С этим разобрались. Осталось собственно установить сам grub. Пишем grub (или grub --no-floppy) и попадаем в его "интерактивный режим".

grub (hd0,1)  
 root (hd0)  
 exit

Откуда взялись параметры написано выше :) Теперь осталось выйти из chroot'а, отмонтировать файловые системы, перезагрузиться, и наслаждаться жизнью:

exit  
umount /mnt/boot /mnt/proc /mnt/dev /mnt  
reboot


Понравилась статья? Поделись с друзьями!




Комментарии на этом сайте требуют включенного Javascript в вашем браузере. Вероятно, ваш браузер не поддерживает Javascript, или он был отключен по каким-то причинам. Если вы хотите прокомментировать пост, или просто почитать комментарии, то пожалуйста, включите Javascript или попробуйте открыть эту страницу другим браузером.