Загрузка со второго жесткого диска с помощью NTLDR


Долгое время я хотел попробовать FreeBSD в роли операционной системы для рабочей станции, однако, постоянно находились те или иные причины, оттягивающие этот момент. Наконец-то дошли руки, в компьютер был установлен второй жесткий диск, при этом я, вопреки традициям, решил оставить системные области первого жесткого диска с Windows XP, в частности MBR, в первозданном виде, т.к. эксперименты - экспериментами, а работающий компьютер всегда должен быть под рукой.
Постановка задачи

Как известно, загрузчик Windows (NTLDR) позволяет загружать операционные системы, которые не являются представителями семейства Windows NT, с помощью специальных MBR-файлов. Так для запуска FreeBSD, которая установлена на второй жесткий диск, NTLDR требуется MBR-файл, обеспечивающий передачу управления MBR второго жесткого диска. В свою очередь, второй жесткий диск должен содержать MBR, которая обеспечивает запуск FreeBSD со своего первого слайса. Такой вариант загрузки FreeBSD нельзя организовать средствами sysinstall(8), однако, он может быть реализован с помощью утилиты установки стандартного загрузчика FreeBSD boot0cfg(8).
Исходные данные

Имеется компьютер с двумя жесткими дисками, на первый из которых установлена операционная система Windows XP (или любая другая операционная система семейства Windows NT), на второй необходимо установить операционную систему FreeBSD, при этом FreeBSD должна загружаться с помощью NTLDR. Во избежание путаницы следует отметить, что диск с Windows XP определяется BIOS как disk 0, FreeBSD видит его как устройство ad4, а диск для установки FreeBSD - disk 1 и ad5, соответственно. Для выполнения установки понадобится загрузочный CD или DVD диск FreeBSD и флешка или другой сменный носитель.
Установка FreeBSD без изменения MBR дисков

Для того, чтобы в процессе установки FreeBSD sysinstall не изменила MBR жестких дисков, на вопрос Install Boot Manager for drive ad5 необходимо ответить None - Leave the Master Boot Record untouched. Это единственная особенность предложенного варианта установки. Учтите, что при отказе от установки загрузчика Вы сможете запустить FreeBSD только с помощью загрузочного CD или DVD диска, однако, не стоит переживать по этому поводу, т.к. подобный запуск придется выполнить всего один раз.
Создание MBR-файла для NTLDR

Для создания описанного выше MBR-файла, способного обеспечить загрузку FreeBSD со второго жесткого диска, необходимо загрузиться с загрузочного CD или DVD диска FreeBSD, выбрать в меню Welcome to FreeBSD! пункт 6 - Escape to loader prompt (перейти к командной строке загрузчика), а затем выполнить команды запуска FreeBSD с первого раздела первого слайса второго жесткого диска:

set currdev=disk1s1a
boot

После того, как завершится загрузка FreeBSD со второго жесткого диска, необходимо войти в систему под именем root и выполнить команду создания MBR, предназначенной для размещения на первом жестком диске и обеспечивающей загрузку FreeBSD со второго жесткого диска:1 boot0cfg -B -d 0x80 -o setdrv,noupdate -s 5 -t 1 /dev/ad5

Указанные ключи командной строки имеют следующие значения: -B - обновление MBR без изменения таблицы слайсов; -d - используемый BIOS номер диска, на котором будет использоваться MBR (первый жесткий диск имеет номер 0x80, второй - 0x81 и т.д.), -o - дополнительные опции (setdrv - принудительное использование номера диска, заданного ключом -d, а не номера устройства, для которого выполняется команда boot0cfg, и noupdate - сохранение флагов активности слайсов); -s - номер загрузочного слайса (значение 5 обеспечивает загрузку со второго жесткого диска); -t - время ожидания ответа пользователя при выборе загружаемой операционной системы, исчисляется в ticks (в секунде приблизительно 18,2 ticks), должно быть больше нуля; /dev/ad5 - усройство, для которого выполняется команда boot0cfg. Далее следует выполнить команду dd (1), которая сохранит созданную MBR (первый сектор второго жесткого диска) в файл freebsd.mbr:1 dd if=/dev/ad5 of=freebsd.mbr count=1

Затем нужно переместить файл freebsd.mbr на флешку (в моем случае FreeBSD определила ее как устройство da1) или другой сменный носитель для переноса на первый жесткий диск с Windows XP (непосредственный перенос файла freebsd.mbr на первый раздел первого жесткого диска с NTFS без использования промежуточного сменного носителя или дополнительного программного обеспечения невозможен):

mount -t msdosfs /dev/da1s1 /mnt
mv freebsd.mbr /mnt
umount /mnt

Создание MBR второго жесткого диска

После создания файла freebsd.mbr необходимо привести MBR второго жесткого диска в описанное выше состояние, обеспечивающее загрузку FreeBSD с его первого первого слайса. Для этого следует выполнить еще одну команду boot0cfg, но на этот раз с другими ключами -d и -s:1 boot0cfg -B -d 0x81 -o setdrv,noupdate -s 1 -t 1 /dev/ad5

На этом манипуляции по изменению MBR заканчиваются.
Изменение конфигурации NTLDR

Остается запустить Windows XP, переместить с флешки (в моем случае Windows XP определила ее как диск G:) файл freebsd.mbr в корневую папку диска C:, а зетем соответствующим образом откорректировать файл BOOT.INI (файл конфигурации NTLDR), который находится в той же папке. Для этого можно запустить Командную строку (Command Prompt) и выполнить следующую последовательность команд:

move g:freebsd.mbr c:
c:
cd
attrib -h -r -s boot.ini
echo c:freebsd.mbr="FreeBSD" >> boot.ini
attrib +h +r +s boot.ini

На этом настройка рассмотренного варианта загрузки FreeBSD заканчивается. Теперь во время запуска компьютера NTLDR будет выводить меню выбора загружаемой операционной системы, последним пунктом которого будет FreeBSD.
Заключение

Я надеюсь, что данная статья поможет сомневающимся начать использование FreeBSD на своем десктопе. Не знаю, на сколько данный вопрос интересен рядовым пользователям, мне же, как системному администратору, давно хотелось увидеть как выглядит наиболее уважаемая мной операционная система в непривычном десктопном варианте. Позже я обязательно продолжу описание своих экспериментов. Кстати, Вы можете поучаствовать в обсуждении этой статьи на форуме OpenNET, мне интересны любые замечания, комментарии и рекомендации.

http://www.sergeysl.ru/freebsd-boot-from-2nd-disk-via-ntldr/

Обновлено: 12.03.2015