Каким образом?
Что касается знаний, то без них, к сожалению, не обойтись: слишком скудны средства, которыми располагает персональный компьютер в момент загрузки. Поэтому и рассчитывать на исчерпывающе-содержательный интерфейс мультизагрузчиков не приходится. Если система "не грузится", то некому поведать языком "интуитивно-понятного интерфейса", почему это случилось. Приходится рассчитывать на аскетическое ПО, размещающееся, как правило, на дискете, и на собственные знания. Минимальный набор знаний, необходимых для осуществления самостоятельных осмысленных операций над разделами диска IBM PC, укладывается в сравнительно небольшое число постулатов:
- загрузка IBM PC всегда начинается с переноса в память содержимого нулевого блока загрузочного устройства (HDD, FDD, CDROM - как уж в BIOS Setup задано) и передачи на него управления. Размер блока - всего 512 байт и для всех устройств, кроме HDD, ничего, кроме инструкций загрузки следующей порции кода, в нём не содержится;
- HDD же, по замыслу создателей IBM PC, может иметь несколько загружаемых разделов. Поэтому часть главной загрузочной записи (master boot record - MBR), как уважительно назвали нулевой блок винчестера, отведена под таблицу разделов (Partition Table);
- таблица эта содержит описание не более чем четырёх первичных (primary) разделов, причём только один из них может быть расширенным (extended), в котором, в свою очередь, могут содержаться свои разделы. Эти разделы, в отличие от разделов первичных, называются логическими. Число логических разделов не ограничено;
-
описание каждого первичного раздела, кроме данных о его физическом размещении, содержит пару весьма существенных байт: байт активности (загружаемости) раздела и байт типа файловой системы. Первый из этих двух байт принимает всего два значения: 0x80 или 000 (для загружаемого и не загружаемого разделов, соответственно). Типов же файловых систем существует значительно больше. Современному приверженцу MicroSoft достаточно знания следующих:
- 004 - FAT16, объёмом менее 504 MB
- 005 - расширенный раздел, заканчивающийся ниже 8 GB
-
006 - FAT16, объёмом менее 2 GB, заканчивающийся ниже 8 GB - 007 - Windows NT NTFS
- 00B - FAT32, заканчивающийся ниже 8 GB
- 00C - FAT32, заканчивающийся выше 8 GB (как 00B, но для LBA)
- 00E - FAT16, объёмом менее 2 GB, заканчивающийся выше 8 GB (как 0х06, но для LBA)
- 00F - расширенный раздел, объёмом более 8 GB или заканчивающийся выше 8 GB (как 0х05, но для LBA)
- 0xFF - таблица дефектных блоков Xenix
Тип " таблица дефектных блоков Xenix" используется для "маскировки" разделов, а зачем такая "маскировка" нужна, станет ясно чуть позднее; - прибавление 0x10 к идентификатору типа раздела делает его "скрытым" (hidden). Правда, на эту "скрытость" MicroSoft перестала обращать внимание, начиная от win'2000.
- исполняемый код MBR, в отличие от таблицы разделов, не стандартизирован и разные ОС относятся к нему по разному: некоторые при инсталляции переспрашивают, можно ли перезаписать MBR, а некоторые - нет. Младшие MS Windows - нет. Спасибо, хоть таблицу разделов не затирают. Отсюда вывод: MBR нужно уметь сохранять, восстанавливать, а лучше - формировать заново;
-
и, наконец, схема загрузки, исповедуемая MicroSoft. Порядок изложения - "обратный". То есть, от загрузки собственно ОС до операций BIOS, выполняемых по включению компьютера:
- ОС загружается начальным загрузчиком, записанным в нулевой блок первичного раздела, в который инсталлировалась ОС (в отличие от MBR, он уже не "master", а просто "boot record"). Начальный загрузчик записывается ОС при инсталляции;
- начальный загрузчик, в свою очередь, загружается главным загрузчиком (тем, что записан в MBR);
- код главного загрузчика, записываемый в MBR ОС MicroSoft, бесхитростен: найти в таблице разделов первый из загружаемых первичных, считать в память его начальный загрузчик и передать на него управление;
- ну, а главный загрузчик, если помните, считывается в память самим BIOS.
Действия над MBR, выполняемые ОС при инсталляции (в том случае, если MBR всё-таки переписывается, разумеется), таковы:- переписать исполняемый код MBR;
- установить бит загружаемости (активности) раздела, в котором инсталлируется ОС, сбросив его при этом у всех остальных первичных разделов.
- инсталлировать первую систему, не занимая ею всё дисковое пространство, разумеется;
- "маскировать" первую систему;
- инсталлировать вторую систему;
- при желании: таким же образом - третью;
- "демаскировать" все установленные системы;
- инсталлировать мультизагрузчик.