Как помнится, в предыдущей части восьмого урока мы установили на
компьютер с ОС Ubuntu две дополнительные операционные системы: Windows
XP и Debian. После установки Windows мы могли загрузить только ее, но
ситуация изменилась после установки Debian. Стало возможным выбрать
любую из трех операционных систем для загрузки. Но нас не устроило то,
что наш загрузчик не современный GRUB 2, как в ОС Ubuntu 10.10, а GRUB,
доставшийся нам от Debian.
Определяемся с окружением и уточняем задачу
Итак, было решено "снести" операционную систему Windows, а затем
установить ее повторно, чтобы обновить MBR и сделать невозможным
загрузить ни Ubuntu, ни Debian. Или, что проще, но что не является
предметом нашего урока, - восстановить загрузчик Windows. Иными
словами, моделируем ситуацию, когда или вообще нельзя загрузиться с
жесткого диска, или можно загрузиться в Windows. Такая ситуация может
возникнуть в следующем случае: на ПК установлены Windows и Linux, но ОС
Windows нужно деинсталлировать (Такая ситуация возникнет 31 декабря 2010
года, когда срок лицензий на ПО Windows закончится, а на диске кроме
этой системы стоит и Линукс, который переустанавливать очень не
хочется), или Вы переустановили Windows в системе, в которой есть и
Линукс.
Наша задача, как Вы поняли, сводится к восстановлению загрузчика GRUB 2.
У нас есть три операционные системы на компьютере, но можем загрузить только одну - Windows.
Для восстановления мультизагрузки нам понадобится так называемый LiveCD
Linux, который позволяет работать в ОС без загрузки с жесткого диска. В
этот раз я выбрал дистрибутив Ubuntu 10.10 Maverick Meercat, который
имеет функцию LiveCD.
Восстанавливаем загрузчик GRUB 2
Загружаемся с LiveCD (Ubuntu в данном случае), нажимаем комбинацию Alt+F2 и в окне "Выполнить команду" вводим команду запуска терминала
gnome-terminal
Если вы используете дистрибутив с KDE, то команда будет иной: konsole
Мы не будем пользоваться программами с графическим интерфейсом, а
просто воспользуемся командами в терминале. Но если в вашем LiveCD есть
программа GParted (редактор разделов), то можно воспользоваться ей. Мы
просмотрим таблицу разделов жесткого диска, чтобы точно знать, в каком
разделе что находится. Выполняем в терминале команду
$sudo fdisk -l
l - это латинская "л". Команда sudo - команда для получения прав суперпользователя (подробно посмотреть можно по ссылке: Команды sudo и su -), команда fdisk -l - это программа разметки диска (в Windows есть подобная), а -1 (List)- выводит таблицу разделов.
У меня таблица разделов выглядит так:
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 1 41071 20699721 83 Linux
/dev/sda2 41071 49120 4056412+ 82 Linux своп / Solaris
/dev/sda3 * 49120 161766 56773710 7 HPFS/NTFS
/dev/sda4 161766 232576 35688397+ 5 Расширенный
/dev/sda5 161766 201562 20057121 83 Linux
/dev/sda6 201562 232576 15631213+ 83 Linux
По поводу Id: 83 - это раздел Линукс, 82 - своп-раздел, 7 - раздел NTFS, а 5 - расширенный раздел.
Как видите, в системе 5 разделов, два из которых входят в
расширенный. Но в системе Линукс раздел будет недоступным до тех пор,
пока его не примонтируем. Записи с информацией о разделах хранится в
каталоге /dev/раздел_диска. При монтировании нужного раздела мы должны
указать место (каталог), т.е. точку монтирования, где можно найти
примонтированный раздел, который становится доступным.
Начинаем монтировать нужный раздел, т.е. sda1, который будет
доступен в каталоге /mnt. Если сейчас вы просмотрите каталог /mnt, то
раздела sda1 там не обнаружите. Набираем
$sudo mount /dev/sda1 /mnt
$sudo mount --bind /dev /mnt/dev
$sudo mount --bind /proc /mnt/proc
Команда mount с ключом --bind (два тире!) применяется для создания синонима каталога в дереве файловой системы.
Теперь поработаем с окружающей средой chroot. Для перехода в нее вводим команду
$sudo chroot /mnt
Теперь вам не нужно вводить sudo, так как теперь вводите команды от
имени root. Кстати, обратите внимание на строку в терминале. Заметили,
что $ изменился на #?
Остается только установить (или восстановить) загрузчик GRUB 2 в
#grub-install /dev/sda
После install - пробел, sda - без номера.
На этом этапе иногда появляется сообщение об ошибке. В таком случае используем команду
#grub-install --recheck /dev/sda
Следующими командами выходим из окружения chroot, отмонтируем разделы и перезагружаем систему
#exit
$sudo umount /dev/dev
$sudo umount /dev/proc
$sudo umount /mnt
$sudo reboot
Перезагружаемся и видим, что теперь возможна загрузка любой из трех операционных систем.
Но не всегда удается после установки GRUB 2 загрузить ОС. По опыту
знаю, что если у вас стоят кроме Windows и Ubuntu ОС Alt Linux 5.0 или
Mandriva 2010, то в меню выбора ОС GRUB 2 их добавит, но загрузиться в
эти операционные системы не удается, не определяются нужные файлы. Ниже
я привожу фрагмент файла grub.cfg, который находится в каталоге
/boot/grub
menuentry "Microsoft Windows XP Professional RU (on /dev/sda3)" {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set 50e01a18e01a053e
drivemap -s (hd0) ${root}
chainloader +1
}
menuentry "Debian GNU/Linux, kernel 2.6.26-2-686 (on /dev/sda5)" {
insmod part_msdos
insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set 51a6b6fd-aaee-45d9-a8db-acc6e9a59810
linux /boot/vmlinuz-2.6.26-2-686 root=/dev/sda5 ro quiet
initrd /boot/initrd.img-2.6.26-2-686
}
Первый пункт, как Вы понимаете, относится к загрузке Windows, второй
- Debian. Если у вас стоят Alt Linux и Mandriva 2010, то нужно изменить
одну строку, а именно
linux /boot/vmlinuz-2.6.26-2-686 root=/dev/sda5 ro quiet
вот так: linux /boot/vmlinuz-2.6.26-2-686 root=UUID=51a6b6fd-aaee-45d9-a8db-acc6e9a59810 ro quiet
Возможно, что вам придется указать версию ядра, т.е. то, что идет после vmlinuz и initrd.img/
Для определения этих параметров используйте ОС, которая устанавливала GRUB 2. Нужно зайти в раздел с ОС, открыть каталог /boot
Проще всего это можно сделать через файловый менеджер, запущенный под рутовыми правами.
Кстати, разработчики GRUB 2 утверждают, что редактировать файл
grub.cfg запрещено, но именно таким образом мне удавалось избавиться от
проблем с загрузкой операционных систем Alt Linux и Mandriva. К моему
удивлению, ОС Debian прекрасно запускается без правки конфигурационного
файла.
Ну, вот и все. Свою задачи мы выполнили, получив возможность иметь на своем компьютере три операционные системы.
Примечание: Некоторые дистрибутивы Linux не имеют в своем составе загрузчик GRUB, вместо него используется LILO.
|