Загрузка Линукс из загрузочного меню НТ
Автор: © Pradeep Padala
|
Зачем нужна статья о Линуксе и загрузочном меню НТ? Ведь существуют специальные руководства, с пошаговыми инструкциями, правильно? Да, но, к сожалению, в этих руководствах есть далеко не все, чтобы нам хотелось там видеть. Эти руководства ориентированы на тех, кто только начинает изучение Линукс, и у них это получается достаточно хорошо - все очень понятно. Однако, когда приходится столкнуться с какой-то неординарной проблемой - эти руководства становятся бесполезными. Данная статья призвана заполнить эти пробелы. Такая неординарная проблема возникла у меня, когда я слегка потерял рассудок, решив, что было бы неплохо иметь один единственный загрузчик, который бы загружал все, вместо того, чтобы пользоваться двумя: LILO и NT boot manager. Встала дилемма: какой загрузчик выбрать? Я остановился на NT boot manager, потому что, когда мы устанавливаем LILO и выбираем в нем при загрузке NT, все равно появляется меню NT, что чертовски раздражает: дважды отвечать на вопрос о том, что загружать - это уже слишком. Итак, я выбрал следующую стратегию: удаляем LILO и используем NT boot loader для загрузки всех операционных систем, которые у меня есть. Хорошо, но как это сделать? Я решил начать с изучения документации (HOWTOs). Руководство HOWTO NT OS Loader + Linux mini-HOWTO дает общее представление о процессе. К сожалению мой /dev/brain не смог уловить суть. В результате, моя первая попытка закончилась тем, что система отказалась загружаться вообще. После трех дней напряженного работы, суть дела начала проясняться. Вот что я проделал.
NT Boot Loader. NT Boot Loader загружает образ операционной системы, читая информацию из файла инициализации boot.ini. Взгляните на него. Он выглядит примерно так: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00" multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]" /basevideo /sos Эта строка говорит о том, какую операционную систему с какой партиции загружать. То есть берутся первые 512 байтов информации, необходимой для загрузки соответствующей операционной системы. И как использовать вот это для загрузки Линукс? Очень просто! Просто в файле boot.ini нужно указать NT boot manager'у те заветные 512 байтов загрузочного сектора Линукса.Нужно внести в него следующие изменения: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00" multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]" /basevideo /sos C:\boot.lnx="Redhat Linux 6.2" В этой строке boot.lnx является тем файлом, который содержит в себе те необходимые 512 байтов. Но ведь нужно где-то достать эти 512 байтов. Как это сделать? В уже упомянутом HOWTO есть хороший пример того, как это можно сделать. Итак, нам нужны первые 512 байтов загрузочной партиции Линукса, которые бы сказали NT, что нужно згружать именно Линукс. Для этого мы создаем "тренировочный" lilo.conf, даем его LILO и говорим LILO установить загрузочный сектор в начало Линукс-партици. Затем вычленяем оттуда первые 512 байт, сохраняем в файл и даем его NT. Потом, устанавливаем LILO в главную загрузочную запись и устанавливаем WinNT как ОС, загружаемую по умолчанию. Мы создаем lilo.conf, где указываем NT как загружаемую по умолчанию и затем устанавливаем этот файл.
Приступим к делу. Сначала я бы хотел рассказать о той конфигурации, при которой осуществлялись все манипуляции. Я установил Red Hat, приняв при инсталляции опции, назначенные по умолчанию. Red Hat установил LILO в главную загрузочную запись и модифицировал его в соответствии с параметрами моей системы (то есть учитывая то, какие другие операционные системы были установлены - NT, например). В данном случае, у меня была только NT. Когда я перезагрузился после инсталляции, то LILO предложид на выбор две опции: Linux и DOS. при выборе DOS, я переходил в NT boot manager. Итак, что же мы путаемся сделать? Мы хотим, чтобы LILO загружал по умолчанию NT boot manager, а в меню последего нам нужна возможность выбора Линукса. Начинаем. Сначала загрузите Линукс. Создайте "тренировочный" (dummy) lilo.conf, например, таким способом: скопируйте lilo.conf в lilo.dummy, затем отредактируйте lilo.dummy, например, vi. В результате должно получиться примерно такое: # lilo.dummy file boot = /dev/hda3 # На моей машине Линукс находится на /dev/hda3 # Сделайте соответствующие изменения (в зависимости от вашей конфигурации) timeout=0 # Приравниваем время ожидания к нулю vga = normal read-only default=linux image = /boot/vmlinuz label = linux root = /dev/hda3 Затем запустите LILO, используя lilo.dummy как аргумент. Это установит загрузочный сектор Линукс на /dev/hda3 sbin/lilo -C lilo.dummy Вычленяем первые 512 байтов: dd if=/dev/hda3 of=boot.lnx bs=512 count=1 Затем копируем файл boot.lnx на диск c:\. Если диск с:\ смонтирован как /win/c, тогда копируем это так: cp boot.lnx /win/c или же монтируем с:\ и затем копируем: mount /dev/hda1 /win/c cp boot.lnx /win/c Потом, изменяем boot.ini следующим образом: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00" multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]" /basevideo /sos C:\boot.lnx="Redhat Linux 6.2"
Установка LILO в MBR (главную загрузочную запись). Просто измените файл lilo.conf так, чтобы WinNT загружалась по умолчанию без задержки, и установите LILO в MBR. boot = /dev/hda # Устанавливаем в MBR timeout=0 vga = normal read-only default=win # NT - по умолчанию image = /boot/vmlinuz # Эту секцию можно удалить, так как теперь мы не пользуемся LILO для загрузки Линукса label = linux root = /dev/hda3 other = /dev/hda1 label = win Затем снова перезaпустите LILO. Перед перезагрузкой, убедитесь, что у вас есть загрузочный диск. Можно использовать установочный диск Red Hat. Также прочитайте раздел данной статьи "Ловушки" (там еть информация о том, как использовать загрузочный диск). Или, вы можете сами создать загрузочный диск командой: mkbootdisk, Обратитесь к Bootdisk-HOWTO за подробностями. Теперь перезагружайтесь и смотрите на то, какие чудеса происходят. Вам этого мало? Я знаю, что не дает вам покоя - вы хотите удалить LILO полностью. Так сделайте это! Раздобудьте DOS-дискету, на которой есть fdisk и загрузитесь с этой дискеты. Затем запустите 'fdisk /mbr", чтобы перезаписать главную загрузочную запись... Я, честно говоря, не понимаю, что происходит при использовании этой опции. Если у кого-то есть соображения на этот счет, пожалуйста, напишите мне.
Ловушки.
|
Copyright © 2000, Pradeep Padala. Copying license http://www.linuxgazette.com/copying.html Published in Issue 61 of Linux Gazette, January 2001 |
Вернуться на главную страницу |