RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
В некоторых случаях возникает необходимость иметь на одном жестком диске две операционные системы, особенно это актуально на ноутбуках. Как правило это операционная система семейства Windows и операционная система семейства UNIX. Рассмотрим установку и совместную работу Windows XP и FreeBSD на одном жестком диске. Возможность двойной загрузки будет осуществлена двумя путями - при помощи штатного менеджера загрузки FreeBSD и GRUB 0.97.
Порядок установки
Первой системой устанавливается Windows XP, раздел для нее создается таким образом, чтобы на диске осталось неиспользованное место, достаточное для создания слайса с FreeBSD. Устанавливаем FreeBSD второй системой, создаем слайс для системы используя свободное место, так же нужно будет обязательно указать установку загрузчика в MBR с той целью чтобы при старте компьютера загружалась FreeBSD, а не Windows XP.
Следует обратить внимание на тот факт, что с выходом FreeBSD 9.0 в дисковой подсистеме произошли некоторые изменения, и на момент написания данной статьи загрузчик GRUB из FreeBSD 9.0 не устанавливается. Поэтому в случае с FreeBSD 9.0 придется использовать штатный загрузчик В случае с FreeBSD 7мой или 8мой ветки можно использовать GRUB.
Вариант 1 - Настройка штатного менеджера загрузки
После того как FreeBSD установлена, следует войти в систему в качестве root и выполнить команду:
# gpart bootcode -b /boot/boot0 ada0
После чего, при старте компьютера на дисплее будет появляться выбор операционной системы. Настройка штатного загрузчика на этом завершена.
Вариант 2 - Установка и настройка загрузчика GRUB
После того как FreeBSD установлена, следует войти в систему в качестве root и установить GRUB. Каталог в системе портов - /usr/ports/sysutils/grub. После установки приложения, следует выполнить команду:
# sysctl kern.geom.debugflags=16
Выполнение этой команды даст возможность записывать данные в таблицу разделов, что нужно для записи загрузчика GRUB в системную область диска. После перезапуска значение переменной снова будет равно 0, действие этой команды распостраняется только до первой перезагрузки ОС.
Далее следует создать в каталоге /boot подкаталог grub и поместить в него загрузочные образы и создать файл конфигурации:
Первой командой создаем каталог, второй командой производим копирование загрузочных образов, третей командой создаем файл нулевого объема menu.lst и четвертой командой открываем его на редактирование. Рассмотрим подробно файл конфигурации:
Указываем цвета отображения меню, затем указываем на какой ОС будет находиться курсор при старте загрузчика, далее указывается задержка ожидания выбора, после истечения которой будет загружена ОС "по умолчанию".
color light-gray/black black/light-gray
default 0
timeout 30
Далее идет список операционных систем для запуска. В нашем случае первой в меню будет FreeBSD, title означает название системы которое будет отображено в меню выбора GRUB, затем идет указание раздела для запуска ядра. Так как раздел с FreeBSD - это ad0s2a в представлении FreeBSD, мы указываем (hd0,1,a) - запуск ядра происходит со второго раздела (нумерация разделов в GRUB начинается с нуля а не с единицы), буква "a" напрямую указывает на раздел ad0s2a на котором находится ядро. Параметр kernel указывает на путь в разделе ad0s2a к загрузчику ядра. Команда boot означает начало загрузки.
title FreeBSD
root (hd0,1,a)
kernel /boot/loader
boot
В случае с Windows XP запуск системы происходит несколько иначе. Операционные системы семейства Windows запускаются с дополнительного загрузчика который находится в системной области раздела. Фактически команда boot в данном случае указывает на сам раздел, а команда chainloader указывает на блок где находится загрузчик.
title Windows XP
root (hd0,0)
chainloader +1
boot
В итоге файл menu.lst будет выглядеть так:
Содержимое файла /boot/grub/menu.lst:
color light-gray/black black/light-gray
default 0
timeout 30
title FreeBSD
root (hd0,1,a)
kernel /boot/loader
boot
title Windows XP
root (hd0,0)
chainloader +1
boot
Сохраняем файл и выходим из редактора. Далее следует установить grub в загрузочную область жесткого диска. Для этого выполняем:
# grub-install /dev/ad0
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(fd0) /dev/fd0
(hd0) /dev/ad0
Если видим подобное сообщение - No error reported, то значит GRUB установился нормально и при следующем запуске компьютера появится выбор ОС.