Мичуринцы всех стран, объединяйте!
Предлагаемая Вашему вниманию статья описывает методику установки на одной машине всех основных операционных систем для персональных компьютеров: MS DOS + Windows 3.11 + Windows 95 + Windows NT + OS/2 + Linux.
Рассматриваются способы организации загрузки систем с использованием загрузчиков от Linux, Windows NT и OS/2.
Изложение рассчитано на пользователя, способного самостоятельно инсталлировать каждую из необходимых ему систем по отдельности, но не слишком искушенного в их настройке и использовании.
Эта статья написана для тех, кто хочет держать под рукой сразу несколько операционок. А также для тех, кто любит их периодически сносить и ставить заново. Одна система может быть рабочей, другая - для изучения, третья - для развлечения и т.д. Наличие нескольких ОС на одном десктопе облегчит кому-то переход с одной системы на другую.
У меня есть маленькая слабость - люблю пообщатьс с новенькими, симпатичными (и не очень) операционными системами.
Основной рабочей системой для меня в настоящий момент является Windows NT. Под ней я пишу программы, планирую работу, пишу отчеты и т.п.. DOS никогда не помешает, места не требует, часто нужен для игрушек. Иногда попадаются игрушки и энциклопедии, которые не хотят нормально работать ни на чем, кроме Виндовоза 95-й модели. Мой ручной сканер теоретически должен работать под Win95 и под Win3.11. Но тем не менее почему-то совершенно не переваривает Win95 (с чего бы это?). Принтер (BJC-240) печатает везде. Но под DOS проблема с русификацией. А цветная печать лучше идет под 3.11. Ну и так далее. Список продолжите сами. Ну а Linux... Linux - это для души, что бы в жизни не разочароваться.
Возникло естественное желание иметь все при себе - сразу и много.
Проштудировав все найденные HowTo, Help'ы и др. первоисточники, поэкспериментировав, насадив синяков и шишек я добился, чтобы на моем компьютере мирно уживался целый зоопарк разнообразных систем. Просто прилепить их одну к другой было не сложно. Хотелось сделать это по возможности элегантно. В частности, в статье не рассматриваются варианты с трехэтажным меню, двойная загрузка и т.д.
Специально для тех, кто все время работал только в одной из перечисленных систем, я буду стараться отмечать особенности поведения разных ОС в рассматриваемых ситуациях.
При написании статьи были использованы следующие материалы:
Вы можете использовать изложенные здесь идеи, примеры и другую информацию на свой страх и риск. Автор материала не несет ни какой ответственности за повреждения программ и данных, наступившие в результате использования приведенной в данной статье информации.
ВНИМАНИЕ! Удаление и реорганизация разделов диска, их форматирование ведет к необратимой потере данных, хранящихся в этих разделах. До начала экспериментов сделайте копии данных, которые Вам было бы жалко потерять, запаситесь загрузочными дискетами.
Автор не несет никакой ответственности, включая и моральную ответственность, за качество информации, полученной в результате использования ссылок на другие материалы.
Ни одна из приведенных в статье рекомендаций не является ни наилучшим ни единственно возможным способом решения поставленной проблемы.
Дерзайте! Не повторяйте чужих ошибок - гораздо приятнее иметь собственные.
Данная статья находится под защитой Генеральной Общедоступной Лицензии GNU (GPL или copyleft), под которой находится и Linux.
В частности это означает, что материалы, приведенные в данной статье могут использоваться без какой-либо оплаты (даром). Материалы могут копироваться как в целом так и по частям на любом носителе, снабженном заметным и подобающим образом представленным уведомлением о copyright и уведомлением об отсутствии гарантии.
Вы можете модифицировать предлагаемую методику или ее части, а далее копировать и распределять эти модификации и другие работы снабдив модифицированные файлы на видном месте в начале уведомлением, что вы изменили файлы, и датой изменений.
При этом Вышеуказанные материалы могут быть использованы дл извлечения прибыли как путем продажи копий самих материалов так и их составных частей а также путем следования рекомендациям, в них содержащимся.
К копиям вышеуказанных материалов не может применяться копирайт, ограничивающий права покупателей по сравнению с данным копирайтом.
Винтеловская платформа - компьютер 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.
В данном разделе рассказывается о логической организации данных на винчестере и о процессе загрузки операционных систем. Изложенный в разделе материал необходим для понимания процессов, происходящих при переключении между установленными ОС в процессе загрузки.
Если Вы собираетесь экспериментировать, использовать схемы загрузки, отличные от предлагаемых в данной статье, если изложенная здесь методика по каким-либо причинам не работает, если Вы просто хотите понять, почему и как это работает, то этот раздел следует прочитать или хотя бы просмотреть (в зависимости от степени подготовки).
Если Вы хотите просто иметь под рукой несколько систем и это Вам удалось сделать, то данный раздел можно пропустить.
Физический диск состоит из нескольких областей, называемых разделами (партициями, 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:. Почуствуйте разницу...
Этот раздел является свободным переводом (пересказом) соответствующего раздела из 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.
Первая проблема при инсталляции ОС: как разбить диск на разделы, какую файловую систему использовать, как распределить системы по разделам.
Я при разметке винчестера придерживаюсь следующих правил (примечание - я работал только с дисками IDE).
Пусть имеется диск
/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
Если загружаем NT, то выполняется загрузка по адресу раздела, указанному в строке. Если выбираем MS DOS, то в его строке указан диск "C:\". Имя загрузочного файла берется по умолчанию bootsect.dos. Файл грузится в память и загрузка продолжается так, как если бы загрузочная запись раздела была загружена программным кодом из MBR.
В boot.ini можно добавить строки, содержащие ссылки на другие загрузочные файлы. При выборе такой строки будет загружатьс соответствующая ОС.
OS/2 Boot Manager получает управление от MBR обычным порядком. Далее передает управление загрузочному сектору выбраного раздела. NT из NTFS напрямую не грузит. Видимо не понимает ее загрузочной записи (16 секторов, см. выше).
Windows95 (и, вероятно, DOS, NT, про OS/2 не знаю) записывают DOS MBR при инсталляции.
Содержимое MBR можно поменять явно:
При установке 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
Возможно большое количество разнообразных вариантов конфигураций загрузки. Некоторые наиболее общие варианты описаны в последующих разделах.
Рассматриваются варианты, базирующиеся на использовании NT Loader, OS/2 Boot Meneger, lilo и на загрузка родного DOS из-под Windows 95.
Lilo можно загружать с дискеты. из DOS MBR, в качестве MBR. Меняется только инсталляция / деинсталляция. Настройка lilo во всех случаях одинаковая.
+-------------------------------------------------------+ | Master Boot Record Boot sector Operating system | |-------------------------------------------------------| | DOS-MBR ------------> LILO --------> Linux | | ---> other OS | +-------------------------------------------------------+
Это "безопасная" ("safe") установка LILO: LILO загружается стандартной DOS-MBR. Никакие другие загрузочные сектора не затрагиваются. Если что-то должно загружаться без участия LILO, то соответствующий раздел помечается как "активный" программой fdisk.
Инсталляция:
Деинсталляция:
+----------------------------------------+ | Master Boot Record Operating system | |----------------------------------------| | LILO ---------------> Linux | | ---> other OS | +----------------------------------------+
LILO может также управлять процессом загрузки в целом. Установленная как MBR, LILO обеспечивает загрузку как Linux так и любой другой ОС. Данный метод имеет недостаток: старый MBR затирается и его необходимо восстанавливать (выполнив команду MS-DOS "FDISK /MBR" или установив Win95 ... 8={} ) если Linux необходимо удалить из системы.
Инсталляция:
dd if=/dev/hda of=/fd/MBR bs=512 count=1
Деинсталляция:
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 после изменения файла конфигурации.
При установке 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:\.
кто что создает и прописывает ОС можно ставить в любом порядке, но иногда потребуется ручна зачистка. Особенности переустановки ОС. Проверить Вынь-311 после 95
Минуточку ... есть несколько простых правил, которые помогут Вам избежать большинства проблем, с которыми сталкиваются люди, экспериментирующие с LILO:
Выполнение ??? может привести к нарушению работы системы вследствие Ваших ошибок, специфики оборудования, других непредвиденных обстоятельств. Для восстановления работоспособности компьютера необходимо запастись загрузочными дискетами. В данной методике я исхожу из предположения, что у Вас есть загрузочная дискета для MS DOS. Для разбиения винчестера на разделы удобно пользоваться программой FDISK из OS/2. Для этого необходимо иметь загрузочные дискеты для нее.
снос MBR, NT File Manager, сдвиг букв при переразметке диска и при добавлении (удалении) второго.
Где-нибудь в стороне готовлю один или несколько разделов, переписываю туда все, то хотел бы сохранить. Как правило, это результаты моей работы, конфигурационные файлы (autoexec.bat, config.sys). Готовлю загрузочную дискету (внимание - СД должен читаться, если ставиться будете с него. Проверьте.) Переразмечаю заново диск С:. Ставлю MS DOS 6.22. Настраиваю autoexec.bat и config.sys по минимуму. В том числе СД, мышь, Командир Нортон, архиваторы. Русифицировать можно позже. Ставлю Windows 3.11 Добавляю остальное, прогоняю MemMaker.