Я хотел загружать все операционные системы без необходимости прохождения нескольких меню.Я знаю, что могу установить NT поверх win9x, которые установлены поверх DOS. Но чтобы загрузить DOS мне придется пройти меню NT, а затем меню win9x. Мне же хотелось иметь возможность загружать все эти операционные системы за один раз.
Эта задача достаточно не простая. Проблема с операционными системами от Microsoft в том, что все они хотят загружаться из первичного (primary) раздела. Здесь поможет GRUB. Он может скрывать первичные разделы. Вы можете использовать до 3 разделов для установки операционных систем Microsoft. GRUB скроет других 2 раздела, так что операционные системы их не увидят. Это означает, что для доступа к данным из DOS, Win9x и Windows 2000 вам потребуется еще один раздел. 4-й раздел используется для расширенного (extended) раздела.
Мне, также, хотелось иметь систему меню, что позволяет GRUB.
Еще одна приятная особеность GRUB в том, что он поддерживает reiserfs, поэтому мне не нужно держать свой /boot файл в отдельном разделе ext2.
Вам потребуются 3 дискеты. Первую сделайте загрузочной дискетой для DOS. Скопируйте на неё fdisk.exe и sys.exe.
FORMAT /S A: COPY FDISK.EXE A: COPY SYS.EXE A:
Вторую сделайте аварийной (emergency) дискетой для Windows 98. Третья дискета вам потребуется временно для GRUB.
Установите свой любимый дистрибутив linux. Для разбивки диска на разделы вам потребуется fdisk. Предварительно подсчитайте сколько места займёт каждая из ваших операционных систем.
Я разделил свой диск так:
Device Boot Start End Blocks Id System /dev/hda1 1 6 48163+ 16 Hidden FAT16 /dev/hda2 7 19 104422+ 16 Hidden FAT16 /dev/hda3 20 593 4610655 1b Hidden Win95 FAT32 /dev/hda4 594 3737 25254180 5 Extended /dev/hda5 594 848 2048256 6 FAT16 /dev/hda6 849 2123 10241406 7 HPFS/NTFS /dev/hda7 2124 2140 136521 82 Linux swap /dev/hda8 2141 2523 3076416 83 Linux
Мой первый раздел для загрузки Windows 2000. 10МБ для этого вполне достаточно. В этом разделе содержаться файлы, необходимые только для загрузки NT - boot.ini, ntldr, ntdetect.com и т.д.... В моём примере NT будет размещаться в 6-м разделе. Этот раздел Hidden FAT16. My first partition is for booting Windows 2000. 10MG should be plenty to do that. This partition will only contains the file necessary to boot NT such as boot.ini, ntldr, ntdetect.com, etc... NT will reside in partition 6 in my example. This partition is Hidden FAT16.
Второй раздел - для DOS. Мне кажется 100 МБ достаточно. Это также FAT16.
Третий раздел - для Win9x. Я выделил 5 ГБ и для лучшей производительности сделал его FAT32.
Затем для оставшегося места на вашем жестком диске создайте расширенный раздел. Здесь он показан как 4-й раздел на диске.
Создайте раздел на 2 ГБ. Этот раздел используется для обмена данными между всеми операционными системами. Проверьте, что сумма этого и всех предыдущих разделов не превышает 8 ГБ. Это ограничение DOS.
Затем создайте раздел для своей Windows 2000. Я выделил 10 ГБ, поскольку этот вид windows словно ожиревшая свинья. Для скорости я сделал его разделом HPFS/NTFS.
После этого добавьте swap-раздел и раздел linux. Убедитесь, что у вас нет отдельного раздела для /boot. Думаю, для GRUB лучше, если /boot вы сохраните в корневом разделе.
По окончанию установки linux отформатируйте разделы fat16:
mkdosfs /dev/hda1 mkdosfs /dev/hda2 mkdosfs /dev/hda6
Проверьте, что у вас последняя версия GRUB. Я использую версию 0.5.96.1. Версия из моего дистрибутива устарела и принесла мне много бед. Самую последнюю версию вы можете скачать с http://www.fsf.org/.
Теперь вам нужно установить GRUB на дискету. Вам пока не нужно устанавливать его на жесткий диск, поскольку Windows 2000 его перепишет.
grub-install '(fd0)'
Создайте для GRUB следующий menu.lst. Этот файл живёт в /boot/grub.
# # Образец конфигурационного файла загрузочного меню # # Автоматическая загрузка после минуты timeout 60 # По умолчанию, загружаем второй пункт default 1 # Fallback на первый пункт fallback 0 title Windows 2000 unhide (hd0,0) hide (hd0,1) hide (hd0,2) rootnoverify (hd0,0) chainloader +1 makeactive # Для загрузки Linux title Linux root (hd0,7) kernel /boot/vmlinuz-2.2.17 root=/dev/hda8 video=matrox:vesa:261 title Windows 98 hide (hd0,0) hide (hd0,1) unhide (hd0,2) rootnoverify (hd0,2) chainloader +1 makeactive title DOS 6.22 hide (hd0,0) unhide (hd0,1) hide (hd0,2) rootnoverify (hd0,1) chainloader +1 makeactive # Для загрузки Linux title Linux (single user) root (hd0,7) kernel /boot/vmlinuz-2.2.17 root=/dev/hda8 video=matrox:vesa:261 single title Partition 2 (floppy) hide (hd0,0) unhide (hd0,1) hide (hd0,2) chainloader (fd0)+1 title Partition 3 (floppy) hide (hd0,0) hide (hd0,1) unhide (hd0,2) chainloader (fd0)+1
Проверьте, что можете загрузить linux с дискеты. Если у вас проблемы, вы можете войти в командную строку GRUB и выяснить в чём дело. GRUB очень хорошо документирован, если у вас возникли проблемы, посмотрите документацию.
Мне потребовалось инициализировать первый раздел перед установкой windows 2000. Вставьте стартовый диск DOS и перегрузите компьютер. После появления командной строки DOS сделайте следующее:
FDISK /MBR SYS C:
Теперь вы можете продолжать и устанавливать windows 2000. В этот момент Windows 2000 спросит о разделе, в который вы хотите установить. Раздел, созданный вами с помощью fdisk, будет выглядеть как разрушенный (damaged) или неотформатированный. Продолжайте и выбирайте его.
Чтобы спрятать меню Windows 2000 отредактируйте файл boot.ini, который должен быть на диске C:. Измените время таймаута с 30 на 0.
[boot loader] timeout=0 default=multi(0)disk(0)rdisk(1)partition(1)\WINNT [operating systems] ...
Вставьте дискету GRUB. Когда вы увидите меню, вставьте загрузочную дискету DOS. Выберите из меню раздел 2 (floppy). Нажмите enter. Загрузится дискета, а разделы 1 и 3 будут скрыты.
Запустите FDISK и проверьте, что устройство C: является разделом 2. Затем установите DOS:
SYS C:
Вставьте дискету GRUB. Когда увидите меню, вставьте аварийную (Emergency) дискету Windows 98. Выберите в меню раздел 3 (floppy). Нажмите enter. Дискета загрузится, а разделы 1 и 2 будут скрыты.
Запустите FDISK и проверьте, что устройство C: является разделом 3. Затем установите Windows 98:
SYS C:
Протестируйте, что из GRUB всё работает:
Вы должны загрузить все 4 операционные системы с дискеты GRUB.
Если всё в порядке, то можно продолжать и установить GRUB на свой жесткий диск. Из linux наберите:
grub-install /dev/hda
Теперь вы можете загрузить все 4 операционные системы из меню GRUB. Наслаждайтесь!