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

         

"С чего начинается..."


Жизнь вычислительных систем изрядно скучна. Это у нас, если верить Ф.Энгельсу, жизнь - это, прежде всего самовоспроизведение, а у них... Оператор за оператором, иногда - прерывания, да и те не всегда "по делу". К тому же, всё это (спасибо Джону фон Нейману) в одном и том же пространстве: и инструкции, и данные... Главное - не сбиться. С самого начала. С загрузки, то есть. Есть, конечно, системы, не использующие динамических данных, и поэтому не нуждающиеся в ОЗУ, но, по нынешним временам, это - экзотика.

Для большинства вычислительных систем пространство, в котором находятся эти самые инструкции и данные - это пространство ОЗУ. Следовательно, прежде чем "жить", вычислительной системе нужно загрузить в ОЗУ нечто и передать на него управление. Легко сказать, если единственное, что умеешь - это выполнять инструкции, УЖЕ находящиеся в памяти. Именно об этом сказано: "поднять себя за шнурки собственных ботинок". И словечко подходящее подобрали: "boot". Наше "загрузить" - только полдела описывает. А вот: "с носка её!". К счастью, память бывает не только оперативная. В ПЗУ, например, программу загрузки можно записать при производстве ЭВМ, а она уже остальное загрузит... Только вот, что - остальное? Операционных систем много больше, чем аппаратных платформ. Не исключено также, что аппаратура переживёт ПО... Хотя может - и наоборот, конечно. Требуется соглашение и инициатором его, как правило, выступает производитель ЭВМ. Для персональных компьютеров это - IBM, как известно.

В первом приближении соглашение о загрузке IBM PC выглядит достаточно просто: загрузка происходит с блочного устройства и состоит в переносе в память "нулевого" блока этого самого устройства с последующей передачей на него управления. Размер/sлока - 512 байт: не шибко "разгуляешься". Блок этот назвали boot record (загрузочная запись), а для жёсткого диска, который предполагалось разделить на несколько разделов, добавили эпитет master.
Отсюда аббревиатура MBR (master boot record) - главная загрузочная запись, по-нашему. Не захотели, стало быть, конструкторы от IBM оставлять своё детище заведомо "моноосным". То ли предчувствовали грядущую размолвку с MicroSoft, то ли действительно дорожили идеалами свободной конкуренции, однако договорились: часть MBR отвести под таблицу, описывающую максимум четыре раздела, любой из которых может загружаться. Таблицу эту, "не мудрствуя лукаво", так и назвали - partition table (таблица разделов). Описывает она физические размеры и расположение разделов (с некоторых пор: с учётом логической адресации блоков - LBA), типы их файловых систем и, так называемую, "активность" - признак загружаемости: если равноправных разделов больше одного, то надо же знать, который именно загружается. Технические детали этого описания опустим: "ищущий да обрящет".

За вычетом таблицы разделов в MBR остаётся всего-то 384 байта. Они-то и стали "полем боя" для программок, называемых загрузчиками. Не серьёзно, на первый взгляд. Но если эти без малого четыре сотни байт определяют, какая ОС загружается дальше... Не к ночи будь названа, MicroSoft определилась моментально: возможность "потеснить" потенциальных конкурентов намного важнее количества первичных разделов или какой-то там мультизагрузки. Нет их - и всё тут. Сработало. Абсолютное большинство пользователей IBM PC в "обёртке" от MicroSoft понятия не имеют о мультизагрузке, да и о разделах вообще. Естественно, как реакция, тут же нашлись желающие продавать "потенциально" существующую мультизагрузку. Их продукты стали называть "менеджерами загрузки", но... MicroSoft почти не оставила им шансов на выживание, "походя" переписывая MBR при каждой инсталляции. Учитывая то, что реинсталляция MS Windows требуется приблизительно так же часто, как размораживание холодильника (говорят, и эффект тот же: помогает, но ненадолго), не удивительно, что сохранять при этом работающим мультизагрузчик удавалось только самым компетентным.

Другое дело - Open Source. Здесь никто никого не теснил. Напротив: обязательным казалось предоставление возможности загрузки как можно большему числу ОС. MS Windows - в том числе. Стандартный загрузчик Linux (LILO - LInux LOader) для линуксоидов практически всем хорош: не пугает их ни необходимость переустановки LILO после каждой реконфигурации, ни то, что для такой переустановки нужно сначала загрузить Linux. Последним словом в истории мультизагрузчиков LILO, однако, не стал...


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