Загрузка Linux из загрузочного меню NT/2K/XP

Загрузка Linux из загрузочного меню NT/2K/XP

Зачем нужна статья о Linux и загрузочном меню NT'шных ОС? Ведь существуют специальные руководства с пошаговыми инструкциями. Да, но, к сожалению, поток читательских писем говорит о том, что здесь еще не все ясно и очевидно. Эта заметка призвана решить данную задачку раз и навсегда.

Итак, вы решили, что было бы неплохо иметь один-единственный загрузчик, который бы загружал все, вместо того чтобы пользоваться двумя: LILO и NT boot manager. Сразу встает дилемма: какой из них выбрать? Остановимся на NT boot manager, потому что, когда мы устанавливаем LILO и выбираем в нем при загрузке NT, все равно появляется меню NT, что чертовски раздражает: дважды отвечать на вопрос о том, что загружать, — это уже слишком. Итак, мы выбираем следующую стратегию: удаляем LILO и используем NT boot loader для загрузки всех операционных систем, которые есть. Хорошо, но как это сделать? Итак, читаем HOWTO. Руководство HOWTO NT OS Loader + Linux mini-HOWTO дает общее представление о процессе, но, как правило, этого мало, и ваша первая попытка заканчивается тем, что система отказывается загружаться вообще. Тогда будем делать так:

NT Boot Loader. NT Boot Loader загружает образ операционной системы, читая информацию из файла инициализации boot.ini. Взгляните на него. Он выглядит примерно так:

[boot loader]
timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows"
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows [VGA mode]" /basevideo /sos

Эта строка говорит о том, какую операционную систему с какого раздела загружать. То есть берутся первые 512 байтов информации, необходимой для загрузки соответствующей операционной системы. И как использовать вот это для загрузки "Линукса"? Очень просто! Просто в файле boot.ini нужно указать NT boot manager'у те заветные 512 байтов загрузочного сектора "Линукса". Нужно добавить в конец файла следующую строку:
C:\boot.lnx=" Linux"

В этой строке boot.lnx является тем файлом, который содержит в себе те необходимые 512 байтов. Но ведь нужно где-то достать эти 512 байтов. Каким образом? В уже упомянутом HOWTO есть хороший пример того, как это можно сделать. Итак, нам нужны первые 512 байтов загрузочного раздела "Линукса", которые сказали бы NT, что нужно загружать именно "Линукс". Для этого мы создаем обучающий lilo.conf, даем его LILO и говорим LILO установить загрузочный сектор в начало Linux-раздела. Затем вычленяем оттуда первые 512 байт, сохраняем в файл и даем его NT. Потом устанавливаем LILO в главную загрузочную запись и устанавливаем WinNT (или Linux) как ОС, загружаемую по умолчанию. Мы создаем lilo.conf, где указываем NT как загружаемую по умолчанию и затем устанавливаем этот файл.
Приступим к делу. Устанавливая Linux, вы наверняка приняли опции, назначенные по умолчанию. Установщик установил LILO в главную загрузочную запись и модифицировал его в соответствии с параметрами системы (то есть учитывая то, какие другие операционные системы были установлены). В данном случае, если у вас была только NT-подобная ОС, то после перезагрузки после инсталляции LILO предложит на выбор две опции: Linux и Windows. Итак, что же мы пытаемся сделать? Мы хотим, чтобы LILO загружал по умолчанию NT boot manager, а в меню последнего нам нужна возможность выбора "Линукса".

Начинаем. Сначала загрузим "Линукс". Создаем настроечный lilo.conf, например, таким способом: скопируйте lilo.conf в lilo.opt, затем отредактируйте lilo.opt. В результате должно получиться примерно следующее:

boot = /dev/hdaX
# на вашей машине "Линукс" находится на /dev/hdaX
# сделайте соответствующие изменения (в зависимости от вашей конфигурации)
timeout=0 # приравниваем время ожидания к нулю
vga = normal
read-only
default=linux
image = /boot/vmlinuz
label = linux
oot = /dev/hdaX

Затем запускаем LILO, используя lilo.opt как аргумент. Это установит загрузочный сектор "Линукс" на /dev/hdaX
sbin/lilo -C lilo.opt

Вычленяем первые 512 байтов:
dd if=/dev/hdaX of=boot.lnx bs=512 count=1

Затем копируем файл boot.lnx на диск C:\. Если диск C:\ смонтирован как /win/c, тогда копируем это так:
cp boot.lnx /win/c

или же монтируем C:\ и затем копируем:
mount /dev/hda1 /win/c
cp boot.lnx /win/c

Потом изменяем boot.ini, как уже было сказано выше.
Установка LILO в MBR (главную загрузочную запись). Просто измените файл lilo.conf так, чтобы Windows загружалась по умолчанию без задержки, и установите LILO в MBR.

boot = /dev/hda # устанавливаем в MBR
timeout=0
vga = normal
read-only
default=win # NT — по умолчанию
image = /boot/vmlinuz
# эту секцию можно удалить, так как теперь мы не пользуемся LILO для загрузки "Линукса"
label = linux
root = /dev/hdaX
other = /dev/hda1
abel = win

Затем снова перезaпустите LILO. Перед перезагрузкой убедитесь, что у вас есть загрузочный диск. Можно использовать установочный диск. Также прочитайте в конце данной статьи о ловушках (там есть информация о том, как использовать загрузочный диск). Или вы можете сами создать загрузочный диск командой
mkbootdisk

Теперь перезагружайтесь и смотрите на то, какие чудеса происходят.
Вам этого мало? Я знаю, что не дает вам покоя: вы хотите удалить LILO полностью. Так сделайте это! Раздобудьте DOS-дискету, на которой есть fdisk, и загрузитесь с этой дискеты. Затем запустите fdisk /mbr, чтобы перезаписать главную загрузочную запись...

Ловушки
1. Запомните, что после каждого изменения ядра или файла lilo.conf вам придется повторить весь процесс сначала, сделать новую копию boot.lnx и "поделиться" ею с NT.

2. Если вы допустили какую-то ошибку и не можете загрузить "Линукс", тогда загрузитесь с загрузочного диска и переустановите LILO. (Можно использовать установочный диск в качестве загрузочного. При появлении меню установки введите rescue и нажмите Enter — для RedHat-подобных дистрибутивов).

Загрузитесь с загрузочного диска
Примонтируйте Linux-партицию: mount /dev/hdaX /mnt
Измените корневой каталог: chroot /mnt
Измените lilo.conf:
boot = /dev/hda
timeout=500
prompt
vga = normal
read-only
default=linux
image = /boot/vmlinuz
label = linux
root = /dev/hda3
other = /dev/hda1
label = win
Установите LILO: /sbin/lilo
Осуществите синхронизацию: sync
Отмонтируйте /dev/hdaX: umount /mnt
Перезагрузите систему: /sbin/reboot

По материалам Сети
Подготовил X-Stranger



Компьютерная газета. Статья была опубликована в номере 14 за 2003 год в рубрике soft :: ос

©1997-2024 Компьютерная газета