GRUB - GRand мира загрузчиков

         

Каким образом?


Что касается знаний, то без них, к сожалению, не обойтись: слишком скудны средства, которыми располагает персональный компьютер в момент загрузки. Поэтому и рассчитывать на исчерпывающе-содержательный интерфейс мультизагрузчиков не приходится. Если система "не грузится", то некому поведать языком "интуитивно-понятного интерфейса", почему это случилось. Приходится рассчитывать на аскетическое ПО, размещающееся, как правило, на дискете, и на собственные знания. Минимальный набор знаний, необходимых для осуществления самостоятельных осмысленных операций над разделами диска 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
    Типы 00B .. 00F в настоящее время - преобладающие, как преобладающий способ адресации блоков диска - LBA.


    Тип " таблица дефектных блоков Xenix" используется для "маскировки" разделов, а зачем такая "маскировка" нужна, станет ясно чуть позднее;
  • прибавление 0x10 к идентификатору типа раздела делает его "скрытым" (hidden). Правда, на эту "скрытость" MicroSoft перестала обращать внимание, начиная от win'2000.
  • исполняемый код MBR, в отличие от таблицы разделов, не стандартизирован и разные ОС относятся к нему по разному: некоторые при инсталляции переспрашивают, можно ли перезаписать MBR, а некоторые - нет. Младшие MS Windows - нет. Спасибо, хоть таблицу разделов не затирают. Отсюда вывод: MBR нужно уметь сохранять, восстанавливать, а лучше - формировать заново;
  • и, наконец, схема загрузки, исповедуемая MicroSoft. Порядок изложения - "обратный". То есть, от загрузки собственно ОС до операций BIOS, выполняемых по включению компьютера:
    • ОС загружается начальным загрузчиком, записанным в нулевой блок первичного раздела, в который инсталлировалась ОС (в отличие от MBR, он уже не "master", а просто "boot record"). Начальный загрузчик записывается ОС при инсталляции;
    • начальный загрузчик, в свою очередь, загружается главным загрузчиком (тем, что записан в MBR);
    • код главного загрузчика, записываемый в MBR ОС MicroSoft, бесхитростен: найти в таблице разделов первый из загружаемых первичных, считать в память его начальный загрузчик и передать на него управление;
    • ну, а главный загрузчик, если помните, считывается в память самим BIOS.
    В случае с NT в результате описанных выше действий запускается не ОС, а NTLoader - собственный мультизагрузчик NT.
    Действия над MBR, выполняемые ОС при инсталляции (в том случае, если MBR всё-таки переписывается, разумеется), таковы:
    • переписать исполняемый код MBR;
    • установить бит загружаемости (активности) раздела, в котором инсталлируется ОС, сбросив его при этом у всех остальных первичных разделов.
В принципе, из вышеизложенного уже можно догадаться, что нужно сделать для достижения поставленной задачи:

  • инсталлировать первую систему, не занимая ею всё дисковое пространство, разумеется;
  • "маскировать" первую систему;
  • инсталлировать вторую систему;
  • при желании: таким же образом - третью;
  • "демаскировать" все установленные системы;
  • инсталлировать мультизагрузчик.


Содержание раздела