При установке на один компьютер Windows и Linux возникает вопрос о том, как сделать выбор между ними. Как и почти всё в Unix, эта проблема имеет несколько решений.
Самое простое - установить Linux после Windows и установить загрузчик Linux (grub или lilo) в MBR, добавив к его конфигурации пункт, соответствующий Windows. Рассматривать в дальнейшем будем конфигурацию загрузчика grub. Итак, для grub этот пункт будет выглядеть примерно так:
title Windows
rootnoverify (hd0,0)
chainloader +1
Здесь (hd0,0) в терминологии grub обозначает hda1, т.е. 1-й ("0-й") раздел на 1-м ("0-м") жестком диске. Если имеется несколько первичных разделов, для Windows 9x может потребоваться усложнение:
title Windows
unhide (hd0,0)
hide (hd0,1)
rootnoverify (hd0,0)
chainloader +1
makeactive
Подразумевается, что hda1 и hda2 - единственные первичные разделы на hda.
Если Windows стоит не на hda, сразу после "title Windows" придется добавить еще 2 строчки. Если Windows расположена на hdb, это будет выглядеть так:
map (hd0) (hd1)
map (hd1) (hd0)
Во всех приведенных примерах под "Windows стоит на hda1" подразумевается, что загрузчик Windows расположен бут-секторе hda1. Обычно так и есть, но стоит рассмотреть еще один интересный случай: на hda1 стоит Win9x, а на hda5 (или любом другом hdaN) - любая NT. При этом в бут-секторе hda1 прописан ntldr, а в его конфиге (c:boot.ini) упомянута и NT, и 9x. В таких случаях загрузка 9x ntldr'ом происходит при помощи файла c:bootsect.dos - копии загрузочного сектора диска c:, созданной при установке NT. Поскольку ntldr просто передает этому файлу управление, мы можем делать это и при помощи grub. Для этого в пункте, соответствующем 9x, вместо chainloader +1 (т.е. передать управление 1-му сектору раздела) пишем chainloader /bootsect.dos. Вот и всё, остается только закомментировать в boot.ini пункт для 9х. Теперь при выборе в меню grub пункта с 9х будет грузиться сразу она (минуя ntldr), а при выборе NT запустится ntldr, который загрузит NT, не показывая свое меню (т.к. в нем остается только 1 пункт). А вот в случае, когда на машине стоит несколько NT, видимо, без вывода меню ntldr'а не обойтись.
2. Использование ntldr
Хотя ntldr как мультизагрузчик имеет мало возможностей, все же довольно легко научить его грузить Linux. Итак, при установке Linux устанавливаем его загрузчик не в MBR (обозначаемый как hda), а в раздел с Linux (обозначаемый как hdaN) и создаем загрузочную дискету. После установки и загрузки с дискеты снимаем образ бут-сектора раздела с Linux (пусть это будет hda5):
# dd if=/dev/hda5 of=/bootsect.lnx bs=512 count=1
Затем кладем файл bootsect.lnx в корень диска С: (точнее, того диска, на котором лежат файлы ntldr, boot.ini и т.д.). Дописываем в boot.ini строчку
C:BOOTSECT.LNX="Linux"
и после перезагрузки можем видеть новый пункт в загрузочном меню ntldr.
Данный способ не очень удачен, если в качестве линуксового загрузчика используется LILO и планируется часто менять его конфиг (например, при экспериментах с ядрами), т.к. после каждой правки конфига надо командой lilo обновлять бут-сектор, а в данном случае после этого придется заново делать его образ и копировать на c:. Зато при таком способе загрузки можно безболезненно удалить раздел с Linux, сохранив возможность загрузки Windows.
3. Загрузка с дискеты
Тут всё просто - установщиком Linux создаем загрузочную дискету (и отказываемся ставить загрузчик на жесткий диск) и при необходимости загрузить Linux вставляем ее. Вообще не требуется никаких иных действий и очень удобно для тех, кто только пробует Linux (т.к. для удаления Linux достаточно удалить раздел с ним, Windows загружается прежним способом, а загрузчик Linux не нужно настраивать).
4. Использование стороннего менеджера загрузки
В принципе, можно установить какой-нибудь менеджер типа Acronis OS Selector и в его настройках указать все разделы с ОС. Конечно, этот способ имеет ряд преимуществ, но переход от такого загрузчика к обычному "grub в MBR" (1-й способ) может быть непростым.