Просмотров: 15831 шт.
Наверное уже нельзя назвать диковинкой тот факт, что у многих на компьютере стоит несколько операционных систем. Помимо старого (или нового) доброго Windows зачастую на "винте" ещё мирно приживается быстрая, удобная и неприхотливая Ubuntu, а у некоторых ещё - MacOS в лице iDeneb и прочих сборок.
И всё бы ничего, пока дело не доходит до переустановки Windows. Вот тогда-то и начинается самое интересное :)
*****
Было у меня 2 операционки. На первом жестком диске, на разделе С у меня стояла Windows 7. На втором винте находилась самая свежая и отлично настроенная Ubuntu 9.10 (Karmic Koala). При смене материнской платы, процессора и ещё некоторых железок, windows на меня обиделась и стала мало того что нестабильной, так ещё и возжелала повторной активации, которую законными методами проходить не хотела (Да-да - у меня лицензия!!!). Было принято решение - отформатировать диск С и поставить Windows 7 заново. Сказано - сделано. Но, как вы понимаете, с форматированием раздела ушел и загрузчик GRUB, который отвечал за предоставление выбора операционных систем для загрузки. И тогда я стал искать информацию о том, как его оживить.
Оказалось, что многочисленные мануалы в сети, которые расписывают процесс восстановления загрузчика, относятся к
GRUB первой версии. Однако в Ubuntu 9.10 он уже именуется
Grub2, и имеет совершенно иной набор команд, структуру конфигурационных файлов - и вообще он совсем другой!
Решение я нашел не сразу, да и то, оно было неполным. Оно восстанавливало возможность загружаться в Ubuntu но не давало загрузиться в Windows.
В итоге мои рыскания в поисках решения были вознаграждены, чем я и хочу поделиться с вами, дорогие читатели.
Вам потребуется Live CD, если вы собираетесь восстанавливать Ubuntu. Загрузите Ubuntu с диска, выбрав одноименный режим "Загрузка Ubuntu без установки на диск".
Запустите Терминал. Далее:
$sudo fdisk -l
Эта команда покажет вашу таблицу разделов. Здесь приведена моя таблица для лучшего понимания:
/dev/sda1 * 1 19457 156288321 7 HPFS/NTFS
/dev/sdb1 29 8369 66999082+ 83 Linux
/dev/sdb2 * 8370 13995 45190845 7 HPFS/NTFS
/dev/sdb3 13996 14593 4803435 5 Extended
Как видно из списка, на sda1 у меня находится Windows (Логический диск С), а на sdb1 - Linux.
Теперь я примонтирую Linux-раздел (здесь sdb1), у меня нет отдельного /boot-раздела, как вы можете сами видеть(ЕСЛИ У ВАС ЕСТЬ не забудьте примонтировать его!)
$sudo mount /dev/sdb1 /mnt
$sudo mount --bind /dev /mnt/dev
$sudo mount --bind /proc /mnt/proc
Следующая команда необязательна(она копирует resolv.conf) и я её не выполнял:
$sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
Теперь нам нужно перейти в окружающую среду chroot:
sudo chroot /mnt
После перехода вам не придется использовать sudo, т.к.теперь вы будете запускать команды от имени суперпользователя.
Вы можете при желании отредактировать файл /etc/default/grub в соответствии с вашей системой(опции задержки и т.д.). Я этот пункт пропустил.
#nano -w /etc/default/grub
Поиграйтесь с этими настройками если захотите.(Но не забудьте отдать команду grub-update если захотите сохранить их;) )
Теперь установка/восстановление grub2 через команду
#grub-install /dev/sda
Вы могли получить сообщение об ошибке, как это было у меня. Если получили, то используйте команду:
#grub-install --recheck /dev/sda
(Я сразу вводил эту команду, пропустив предыдущую)
Ещё можно применить команду
#update-grub2
для того чтобы grub-pc просканировал разделы на загрузочные записи и на сами загрузчики.
Теперь вы можете выйти из chroota, отмонтировать разделы и перезагрузить ваш компьютер:
#exit
$sudo umount /mnt/dev
$sudo umount /mnt/proc
$sudo umount /mnt
$sudo reboot
Но это ещё не всё. После перезагрузки вам откроется стандартное окошко GRUB со списком операционных систем, но в этом списке не будет Windows, по крайней мере так было в моём случае.
Если у вас получилось тоже самое, делаем следующее:
Загружаем Ubuntu и запускаем терминал.
В нём пишем:
# sudo nano /etc/grub.d/11_Windows
Эта команда создаст файл с именем 11_Windows в папке /etc/grub.d/ и вызовет текстовый редактор для редактирования этого файла.
Напишите в этом файле следующее (Если у вас Windows находится на
sda1):
#! /bin/sh -e
echo “Adding Windows” >&2
cat << EOF
menuentry “Windows 7″ {
set root=(hd0,1)
chainloader +1
}
EOF
Теперь сохраните изменения.
Тут, кстати, есть интересный нюанс:
Ранние версии GRUB использовали несколько иную нумерацию разделов. Тоесть если у вас винда была установлена на первый раздел первого диска, надо было указывать root=(hd0,0). Начиная с GRUB 2, первый раздел обозначается как root=(hd0,1), тоесть теперь /dev/sda1 выглядит как root=(hd0,1)
Теперь выполняем команду
# sudo chmod a+x /etc/grub.d/11_Windows
Далее - обновляем ГРАБ:
# sudo update-grub (или лучше -
#sudo update-grub2
)
Вы должны увидеть нечто похожее на это:
# sudo update-grub2
Generating grub.cfg …
Found linux image: /boot/vmlinuz-2.6.30-9-generic
Found initrd image: /boot/initrd.img-2.6.30-9-generic
Found linux image: /boot/vmlinuz-2.6.30-8-generic
Found initrd image: /boot/initrd.img-2.6.30-8-generic
Adding Windows
Found memtest86+ image: /boot/memtest86+.bin
done
Теперь закройте все лишние приложения (если вы умудрились их открыть) и введите в терминале
# sudo reboot
После перезагрузки вы должны увидеть в списке операционных систем ещё и Windows 7. Если не увидели, то либо вы что-то сделали не так, либо я накосячил при написании статьи. Пишите комменты ;)
Полезные ссылки:
Forum.ubuntu.ru: Пишем мануал по GRUB2
Решение: восстановление GRUB2
Комментарии:
Авторизуйтесь или зарегистрируйтесь, чтобы иметь возможность комментировать записи!