Библиотека сайта rus-linux.net
Как поставить много операционных систем на одном компьютере
версия 0.1 от 01.03.98 Московских Александр mosk@chat.ruМичуринцы всех стран, объединяйте!
Предлагаемая Вашему вниманию статья описывает методику установки на одной машине всех основных операционных систем для персональных компьютеров: MS DOS + Windows 3.11 + Windows 95 + Windows NT + OS/2 + Linux.
Рассматриваются способы организации загрузки систем с использованием загрузчиков от Linux, Windows NT и OS/2.
Изложение рассчитано на пользователя, способного самостоятельно инсталлировать каждую из необходимых ему систем по отдельности, но не слишком искушенного в их настройке и использовании.
1. Пролог
Эта статья написана для тех, кто хочет держать под рукой сразу несколько операционок. А также для тех, кто любит их периодически сносить и ставить заново. Одна система может быть рабочей, другая - для изучения, третья - для развлечения и т.д. Наличие нескольких ОС на одном десктопе облегчит кому-то переход с одной системы на другую.
1.1. Постановка задачи: о чем шумим, мужики?
У меня есть маленькая слабость - люблю пообщатьс с новенькими, симпатичными (и не очень) операционными системами.
Основной рабочей системой для меня в настоящий момент является Windows NT. Под ней я пишу программы, планирую работу, пишу отчеты и т.п.. DOS никогда не помешает, места не требует, часто нужен для игрушек. Иногда попадаются игрушки и энциклопедии, которые не хотят нормально работать ни на чем, кроме Виндовоза 95-й модели. Мой ручной сканер теоретически должен работать под Win95 и под Win3.11. Но тем не менее почему-то совершенно не переваривает Win95 (с чего бы это?). Принтер (BJC-240) печатает везде. Но под DOS проблема с русификацией. А цветная печать лучше идет под 3.11. Ну и так далее. Список продолжите сами. Ну а Linux... Linux - это для души, что бы в жизни не разочароваться.
Возникло естественное желание иметь все при себе - сразу и много.
Проштудировав все найденные HowTo, Help'ы и др. первоисточники, поэкспериментировав, насадив синяков и шишек я добился, чтобы на моем компьютере мирно уживался целый зоопарк разнообразных систем. Просто прилепить их одну к другой было не сложно. Хотелось сделать это по возможности элегантно. В частности, в статье не рассматриваются варианты с трехэтажным меню, двойная загрузка и т.д.
Специально для тех, кто все время работал только в одной из перечисленных систем, я буду стараться отмечать особенности поведения разных ОС в рассматриваемых ситуациях.
1.2. Первоисточники: не я первый, не я последний
При написании статьи были использованы следующие материалы:
- LILO - Generic Boot Loader for Linux ("LInux LOader") by Werner Almesberger
- Large Disk mini-HOWTO, v1.0, 960626 Andries Brouwer, aeb@cwi.nl (использование больших - более 504М дисков, структура записи таблицы разделов).
- Linux + OS/2 (+ DOS) mini-HOWTO, version 0.2. May 20, 1996. by Hamish Moffatt, moffatt@yallara.cs.rmit.edu.au.
- Microsoft TechNet (описание процесса загрузки MS DOS и Windows NT 4)
1.3. Лицензия: чужой земли мы не хотим ни пяди...
Отказ от ответственности.
Вы можете использовать изложенные здесь идеи, примеры и другую информацию на свой страх и риск. Автор материала не несет ни какой ответственности за повреждения программ и данных, наступившие в результате использования приведенной в данной статье информации.
ВНИМАНИЕ! Удаление и реорганизация разделов диска, их форматирование ведет к необратимой потере данных, хранящихся в этих разделах. До начала экспериментов сделайте копии данных, которые Вам было бы жалко потерять, запаситесь загрузочными дискетами.
Автор не несет никакой ответственности, включая и моральную ответственность, за качество информации, полученной в результате использования ссылок на другие материалы.
Ни одна из приведенных в статье рекомендаций не является ни наилучшим ни единственно возможным способом решения поставленной проблемы.
Дерзайте! Не повторяйте чужих ошибок - гораздо приятнее иметь собственные.
Авторские права.
Данная статья находится под защитой Генеральной Общедоступной Лицензии GNU (GPL или copyleft), под которой находится и Linux.
В частности это означает, что материалы, приведенные в данной статье могут использоваться без какой-либо оплаты (даром). Материалы могут копироваться как в целом так и по частям на любом носителе, снабженном заметным и подобающим образом представленным уведомлением о copyright и уведомлением об отсутствии гарантии.
Вы можете модифицировать предлагаемую методику или ее части, а далее копировать и распределять эти модификации и другие работы снабдив модифицированные файлы на видном месте в начале уведомлением, что вы изменили файлы, и датой изменений.
При этом Вышеуказанные материалы могут быть использованы дл извлечения прибыли как путем продажи копий самих материалов так и их составных частей а также путем следования рекомендациям, в них содержащимся.
К копиям вышеуказанных материалов не может применяться копирайт, ограничивающий права покупателей по сравнению с данным копирайтом.
1.4. Термины и определения: что в имени тебе моем
Винтеловская платформа - компьютер PC с одной из следующих операционных систем: MS DOS, Windows95, WindowsNT или OS/2.
Загрузочный файл - файл, содержащий образ загрузочного сектора раздела. Не знаю как в DOS'е, а в LINUX'е его можно получить командой
dd if=/dev/hda of=boot.save bs=512 count=1
MBR может иметь два формата: DOS MBR и lilo MBR.
2. Немного теории
В данном разделе рассказывается о логической организации данных на винчестере и о процессе загрузки операционных систем. Изложенный в разделе материал необходим для понимания процессов, происходящих при переключении между установленными ОС в процессе загрузки.
Если Вы собираетесь экспериментировать, использовать схемы загрузки, отличные от предлагаемых в данной статье, если изложенная здесь методика по каким-либо причинам не работает, если Вы просто хотите понять, почему и как это работает, то этот раздел следует прочитать или хотя бы просмотреть (в зависимости от степени подготовки).
Если Вы хотите просто иметь под рукой несколько систем и это Вам удалось сделать, то данный раздел можно пропустить.
2.1. Организация диска
Физический диск состоит из нескольких областей, называемых разделами (партициями, partitions). На одном диске может быть от 1 до 4 первичных разделов (primary partition). Один из них можно объявить расширенным разделом (extended partition). Расширенный раздел делится на логические разделы (logical partitions). Такой механизм позволяет разбить большой диск на необходимое количество разделов.
Нулевой сектор каждого физического диска содержит таблицу разделов (partition table). Этот сектор называется master boot record (MBR).
Первые 446 (0x1BE) байт MBR заняты программой-загрузчиком. За ними следует таблица разделов длиной 64 (0x40) байт. Последние два байта содержат "магическое число" которое используется для проверки, является ли данный сектор загрузочным.
+------------------------+ 0x000 | | | Program code | | | | | |------------------------| 0x1BE | Partition table | | | |------------------------| 0x1FE | Magic number (0xAA55) | +------------------------+
Таблица разделов содержит 4 записи для 4 первичных разделов. Каждая запись имеет следующую структуру:
struct partition { char active; /* 0x80: bootable, 0: not bootable */ char begin[3]; /* CHS for first sector */ char type; char end[3]; /* CHS for last sector */ int start; /* 32 bit sector number (counting from 0) */ int length; /* 32 bit number of sectors */ };
(где CHS означает Cylinder/Head/Sector).
Каждый первичный раздел, расширенный раздел и каждый логический раздел также содержат свою таблицу разделов. Таблицы разделов хранятся в загрузочных секторах своих разделов (нулевой сектор раздела).
В Linux диск в целом (то есть физический диск) доступен по имени устройства /dev/hda, /dev/hdb, /dev/sda, и т.п..
В винтеловских операционных системах легального доступа к физическому диску нет (т.е. я не могу, например, подставить имя физического диска в команду копирования).
Первичные разделы (и расширенный раздел) в Linux доступны по именам /dev/hda1 ... /dev/hda4. В винтеловских системах доступно только по одному первичному разделу из каждого физического диска по именам C:, D: и т.д. Такой раздел называется активным. Расширенный раздел и остальные первичные разделы недоступены.
Логические разделы в Linux доступны по именам /dev/hda5, /dev/hda6 ... В остальных системах логические разделы получают однобуквенные имена, начина с последнего задействованного имени первичного раздела. В конфигурациях с одним винчестером логические разделы получат имена D:, E: и т.д.
Пример:
+-------------------------------------------------+ | Partition table /dev/hda | | +-----------------------------------------------| | | Partition 1 /dev/hda1 | | | | | |-----------------------------------------------| | | Partition 2 /dev/hda2 C: | | | | | |-----------------------------------------------| | | Extended partition /dev/hda3 | | | +---------------------------------------------| | | | Extended partition table | | | |---------------------------------------------| | | | Partition 3 /dev/hda5 D: | | | | | | | |---------------------------------------------| | | | Extended partition table | | | |---------------------------------------------| | | | Partition 4 /dev/hda6 E: | | | | | +-------------------------------------------------+
Этот диск содержит два первичных раздела (/dev/hda1 и /dev/hda2) и расширенный раздел (/dev/hda3). Раздел 2 объявлен активным. Пользователи DOS, обратите внимание - имя раздела /dev/hda4 не задействовано, т.к. соответствующий ему первичный раздел не создан.
Расширенный раздел состоит из двух логических разделов (/dev/hda5 и /dev/hda6).
В итоге пользователи Linux видят устройства /dev/hda, /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda5, /dev/hda6. Пользователи винтеловских систем видят устройства C:, D:, E:. Почуствуйте разницу...
2.2. Загрузка системы
Этот раздел является свободным переводом (пересказом) соответствующего раздела из Microsoft TechNet.
При включении компьютера CPU устанавливается в реальный режим, исполняемый адрес (IP) устанавливается в 0xFFFF:0x0000. По этому адресу расположена программа POST (Power on Self Test). Она определяет количество доступной памяти, тестирует ее, определяет наличие других компонент (клавиатура, винчестер...), инициализирует карты адаптеров. На экране обычно появляются сообщения о количестве памяти, о ее тестировании, перечень обнаруженных устройств (гибкие и жесткие диски, процессор, COM-порты и т.д.).
В конце POST выдает int 19h - прерывание на перезагрузку компьютера. Обработчик прерывания пытается найти загрузочное устройство.
... Пропустим мимо загрузку с дискеты ...
Жесткий диск является загрузочным устройством в случае, если его первый сектор содержит Главную Загрузочную Запись (Master Boot Record, MBR), которая загружается в память. MBR содержит программу, которая начинает выполняться. Эта программа ищет активный раздел в таблице разделов.
Далее загрузочная запись активного раздела считывается в память. Она начинается в первом логическом секторе активного раздела.
В разделе, отформатированном под файловую систему FAT, загрузочная запись занимает один сектор (512 байт).
В разделе, отформатированном под файловую систему HPFS (вероятно, имелась в виду NTFS?) загрузочная запись занимает 16 секторов.
Программа, расположенная в загрузочной записи, загружает первый слой программ, необходимых для запуска операционной системы.
Если по каким-либо причинам на диске C: не найден активный раздел, процесс загрузки продолжается обработкой прерывания 18h.
Реальная программа по этому адресу располагается очень редко, но такой "крючок" может быть очень полезен в некоторых ситуациях. При удаленной загрузке, когда операционная система загружается с сервера, это прерывание перенаправляется на ROM сетевой карты программой POST сетевой карты.
В случае MS DOS программа, размещенная в загрузочной записи, загружает IO.SYS по адресу 700h, затем MSDOS.SYS и передает управление разделу SYSINIT модуля IO.SYS.
2.3. Расфасовка
Первая проблема при инсталляции ОС: как разбить диск на разделы, какую файловую систему использовать, как распределить системы по разделам.
Я при разметке винчестера придерживаюсь следующих правил (примечание - я работал только с дисками IDE).
- На первом диске создается 3 первичных и 1 расширенный раздел. Первичные:
FAT на устройстве /dev/hda1 (C:), Boot Meneger, swap для Linux'а.
Все остальные разделы делаю логическими. - Если есть 2-й диск (и далее), то делаю один первичный и один расширенный разделы.
- Если у Вас большой диск и старые BIOS или LINUX (не поддерживают режим LBA), то все разделы, содержащие загружаемые части систем, все FAT-разделы и Boot Meneger должны размещаться в пределах первых 1024 цилиндров. После загрузки NT, OS/2 и LINUX не исполь зуют BIOS и, следовательно, видят весь диск. См. также "Large Disk mini-HOWTO", Andries Brouwer, aeb@cwi.nl Владельцам маленьких дисков эта проблема не знакома - у них другие проблемы. Владельцы относительно новых компьютеров и свежих LINUX'ов включают режим LBA и наслаждаются жизнью.
- Разделы FAT делаю не более 256М. Иначе начинают резко расти потери пространства на диске.
- На диске C: (/dev/hda1) размещаю DOS и Windows 3.11. На другом диске FAT размещаю WIndows95. Оставляю резерв под файлы, которые надо видеть из всех систем. Обычно это мои исходники, какие-то тексты и т.п. Они занимают немного места на диске. Оставляю резерв для перекачки файлов из одной системы в другую и резерв под DOS и Win95 программы, которые будут установливаться временно (например, игры). Чем меньше занимают разделы FAT, тем меньше потери дискового пространства.
- Если Вы собираетесь активно работать в среде Windows95, то отводите под нее раздел не менее 100М (а лучше больше!). Подавляющее большинство виндусячих пакетов, особенно "мелкомягкие", при инсталляции будут дописывать в системную директорию много файлов. Д иректория Windows95 будет неуклонно расти и перенести ее содержимое на другой диск не удастся!
- Прочие системы ставлю в разделы со своей файловой системой. Windows NT - NTFS, OS/2 - HPFS, LINUX - ну, тут глаза разбегаются. Я использую ext2, но ввиду отсутствия опыта ничего посоветовать не могу.
- Очередность установки
- DOS
- WIndows 3.11
- Далее - без разницы. Единственное, что необходимо - иметь загрузочные дискеты для DOS и OS/2 с утилитой fdisk и для LINUX с lilo и с минимальным джентльменским набором - текстовый редактор и что-нибудь вроде Norton Commander, Midnight Commander, FC.
- Если Вы собираетесь ставить Windows NT, то обязательно ... обязательно ... ОБЯЗАТЕЛЬНО перед этим поставьте либо Windows 3.11 либо досовский SMARTDRV.EXE. Вы сэкономите примерно по полдня на каждой попытке установить NT! А попыток мож ет быть несколько.
- Инсталляция систем выполняется в соответствии с их инструкциями. Во всех случаях выбирается вариант с сохранением установленной версии DOS. Если после установки какой-либо из систем другая станет не видна при загрузке (например, LINUX после Виндовозов) - не страшно, потом исправим.
3. Как примирить кошку с собакой
Пусть имеется диск
/dev/hda1 C: DOS /dev/hda2 Boot Maneger /dev/hda3 swap for LINUX /dev/hda5 D: Windows 95 /dev/hda6 E: Windows NT /dev/hda7 E: OS/2 /dev/hda8 LINUX
3.1. Концептуальная схема
- Для MS DOS загрузка описана в п.2.2.
- Windows95 загружается так же, как и DOS, но заменяет IO.SYS и MSDOS.SYS своими файлами. DOS'овские сохраняются в файлах IO.DOS и MSDOS.DOS соответственно. Когда Вы выбираете загрузку сохраненного DOS, Windows95 переименовывает свои в *.W40 и восстанавливает первоначальные имена досовским системным файлам. Процесс продолжаетс с загрузки досовского IO.SYS. Таким образом, загрузочные сектора DOS и Windows95 одинаковые.
- Windows NT4 использует MBR DOS, но заменяет загрузочную запись активного
раздела (диск C:) таким образом, что вместо IO.SYS загружается (?NTLDR? -
посмотреть название). Ее загрузчик смотрит boot.ini и, если параметр
timeout > 0, предлагает меню загрузки.
Если загружаем NT, то выполняется загрузка по адресу раздела, указанному в строке. Если выбираем MS DOS, то в его строке указан диск "C:\". Имя загрузочного файла берется по умолчанию bootsect.dos. Файл грузится в память и загрузка продолжается так, как если бы загрузочная запись раздела была загружена программным кодом из MBR.
В boot.ini можно добавить строки, содержащие ссылки на другие загрузочные файлы. При выборе такой строки будет загружатьс соответствующая ОС.
-
- (Пока не перепроверил - только предположения)
OS/2 Boot Manager получает управление от MBR обычным порядком. Далее передает управление загрузочному сектору выбраного раздела. NT из NTFS напрямую не грузит. Видимо не понимает ее загрузочной записи (16 секторов, см. выше).
- Загрузочный сектор LILO спроектирован так, чтобы его можно было
использовать как загрузочный сектор раздела (т.е. в нем есть место для таблицы
разделов). Таким образом, загрузочный сектор LILO можно разместить в следующих
местах:
- загрузочный сектор дискеты в формате Linux (/dev/fd0, ...).
- MBR первого жесткого диска (/dev/hda, ...).
- загрузочный сектор первичного раздела файловой системы Linux на первом жестком диске (/dev/hda1, ...).
- загрузочный сектор логического раздела на первом жестком диске (/dev/hda1, ...)
Windows95 (и, вероятно, DOS, NT, про OS/2 не знаю) записывают DOS MBR при инсталляции.
Содержимое MBR можно поменять явно:
- команда fdisk /mbr записывает DOS MBR
- команда lilo записывает MBR в формате lilo
При установке Windows95 необходимо сохранить старую DOS. В файле MSDOS.SYS должны быть указаны параметры: BootMulti=1 (разрешает загрузку старого DOS'а) и BootMenu=1 (показывает меню загрузки) или BootKeys=1 (по умолчанию загружает Windows95, но по F8 переходит в режим меню).
[Paths] WinDir=D:\WIN95 WinBootDir=D:\WIN95 HostWinBootDrv=D [Options] BootMenu=1 BootKeys=1 BootMulti=1 BootGUI=1 DoubleBuffer=1 Network=1 ; ;The following lines are required for compatibility with other programs. ;Do not remove them (MSDOS.SYS needs to be >1024 bytes). ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxa
3.2. Управление загрузкой
Возможно большое количество разнообразных вариантов конфигураций загрузки. Некоторые наиболее общие варианты описаны в последующих разделах.
Рассматриваются варианты, базирующиеся на использовании NT Loader, OS/2 Boot Meneger, lilo и на загрузка родного DOS из-под Windows 95.
3.3. Схема с lilo
Lilo можно загружать с дискеты. из DOS MBR, в качестве MBR. Меняется только инсталляция / деинсталляция. Настройка lilo во всех случаях одинаковая.
LILO, запускаемая с дискеты
LILO, запускаемая DOS-MBR
+-------------------------------------------------------+ | Master Boot Record Boot sector Operating system | |-------------------------------------------------------| | DOS-MBR ------------> LILO --------> Linux | | ---> other OS | +-------------------------------------------------------+
Это "безопасная" ("safe") установка LILO: LILO загружается стандартной DOS-MBR. Никакие другие загрузочные сектора не затрагиваются. Если что-то должно загружаться без участия LILO, то соответствующий раздел помечается как "активный" программой fdisk.
Инсталляция:
- установите LILO, указав в качестве загрузочного раздел Linux.
- пометьте раздел как активный программой fdisk.
- перезагрузитесь.
Деинсталляция:
- сделайте активным другой раздел.
LILO в качестве MBR
+----------------------------------------+ | Master Boot Record Operating system | |----------------------------------------| | LILO ---------------> Linux | | ---> other OS | +----------------------------------------+
LILO может также управлять процессом загрузки в целом. Установленная как MBR, LILO обеспечивает загрузку как Linux так и любой другой ОС. Данный метод имеет недостаток: старый MBR затирается и его необходимо восстанавливать (выполнив команду MS-DOS "FDISK /MBR" или установив Win95 ... 8={} ) если Linux необходимо удалить из системы.
Инсталляция:
- загрузите Linux.
- сделайте копию MBR на дискету, например, командой
dd if=/dev/hda of=/fd/MBR bs=512 count=1
- установите LILO, указав в качестве загрузочного раздел MBR.
- перезагрузитесь.
Деинсталляция:
- загрузите Linux.
- восстановите старую MBR, например, командой
dd if=/fd/MBR of=/dev/hda bs=446 count=1
или fdisk /mbr.
Ниже приведен файл lilo.conf, обеспечивающий загрузку WinNT, WIn95 + MS DOS, Linux и OS/2 Boot Manager. В c:\boot.ini необходимо поставить timeout=0, чтобы не показывать меню WIndows NT.
# # general section # boot = /dev/hda install = /boot/boot.b message = /boot/message prompt # wait 20 seconds (200 10ths) for user to select the entry to load timeout = 200 # # default entry # other = /dev/hda1 label = nt4 table = /dev/hda loader = /boot/chain.b # # additional entries # other = /boot/bootsect.dos label = dos loader = /boot/chain.b image = /vmlinuz.gen label = linux root = /dev/hda7 read-only other = /dev/hda3 label = bm loader = /boot/chain.b
Файл bootsect.dos создается при инсталляции NT и лежит в корневой директории диска C:\. Его необходимо скопировать в каталог LINUX'а, т.к. lilo не понимает FAT. Прочие файлы поставляются с LINUX'ом.
Не забывайте выполнять lilo после изменения файла конфигурации.
3.4. Схема с NT Loader
При установке Windows NT загрузочная запись заменяется для поддержки загрузки ОС Windows NT.
Загрузочная запись текущей ОС сохраняется в файле BOOTSECT.DOS, независимо от того, какая ОС была установлена перед Windows NT.
Ниже приведен файл boot.ini, обеспечивающий загрузку WinNT, WIn95 + MS DOS и Linux. В файле bootsect.lnx должна быть копия загрузочного сектора Linux.
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(4)\WINNT [Operating Systems] multi(0)disk(0)rdisk(0)partition(4)\WINNT="Windows NT Server Version 4.00" multi(0)disk(0)rdisk(0)partition(4)\WINNT="Windows NT Server Version 4.00 [VGA mode]" /basevideo /sos C:\="MS-DOS + Win95" C:\bootsect.lnx="Linux"
Все строки, кроме последней, созданы WinNT при инсталляции. Последняя строка добавляется вручную. Файл bootsect.lnx получается в среде LINUX командой
dd if=/dev/hda7 of=bootsect.lnx bs=512 count=1
и затем переписывается в корень диска C:\.
3.5. Схема с OS/2 Boot Meneger
3.6. Очередность установки систем,
кто что создает и прописывает ОС можно ставить в любом порядке, но иногда потребуется ручна зачистка. Особенности переустановки ОС. Проверить Вынь-311 после 95
4.
4.1. Меры безопасности
Минуточку ... есть несколько простых правил, которые помогут Вам избежать большинства проблем, с которыми сталкиваются люди, экспериментирующие с LILO:
- Не паникуйте Если что-то не работает, попробуйте понять, что неправильно, постарайтесь проверить Ваши предположения и только затем применяйте их.
- Читайте документацию. Особенно если поведение системы не соответствует тому, что Вы от нее ожидали.
- Проверьте, есть ли у Вас в запасе загрузочная дискета.
- Выполняйте /sbin/lilo каждый раз, когда Вы меняете конфигурационный файл lilo.
Выполнение ??? может привести к нарушению работы системы вследствие Ваших ошибок, специфики оборудования, других непредвиденных обстоятельств. Для восстановления работоспособности компьютера необходимо запастись загрузочными дискетами. В данной методике я исхожу из предположения, что у Вас есть загрузочная дискета для MS DOS. Для разбиения винчестера на разделы удобно пользоваться программой FDISK из OS/2. Для этого необходимо иметь загрузочные дискеты для нее.
4.2. Неприятности:
снос MBR, NT File Manager, сдвиг букв при переразметке диска и при добавлении (удалении) второго.
4.3. Linux в FAT'е
4.4. Конкретные инструкции
Где-нибудь в стороне готовлю один или несколько разделов, переписываю туда все, то хотел бы сохранить. Как правило, это результаты моей работы, конфигурационные файлы (autoexec.bat, config.sys). Готовлю загрузочную дискету (внимание - СД должен читаться, если ставиться будете с него. Проверьте.) Переразмечаю заново диск С:. Ставлю MS DOS 6.22. Настраиваю autoexec.bat и config.sys по минимуму. В том числе СД, мышь, Командир Нортон, архиваторы. Русифицировать можно позже. Ставлю Windows 3.11 Добавляю остальное, прогоняю MemMaker.