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




Содержание


Возможно потому, что "пристрастный" анализ практически неминуемо убеждает, что GRUB превосходит соперника. Оставим в стороне функции, которых нет у LILO, но есть у GRUB: в конце концов, может вам никогда и не требовалось работать с удалёнными терминалами или загружаться исключительно с дискеты (по причине невозможности загрузки с HDD или CD-ROM). Сравним, как эти загрузчики выполняют только одну, общую для них функцию. Причём - основную: собственно загрузку ядер ОС.

Любой из загрузчиков при инсталляции "перехватывает инициативу", записывая начальную порцию своего кода (всё те же 512 байт - больше BIOS просто не прочитает) в главную загрузочную запись устройства. В этом смысле все они одинаковы: другого способа получить управление от BIOS не существует. Эта начальная порция кода в терминологии GRUB называется stage1. Трудно, однако, в 512 байтах (даже, меньше, как мы уже выяснили) разместить код, способный загружать разные ядра или даже ОС, да ещё и в меню-ориентированном режиме. Ближе всех к этому был Илья Евсеев, предложивший код главного загрузчика, способный загружать любой из загрузчиков трёх первичных разделов. Здорово, но при чём тут ядра Linux, BSD и прочая? Чай не DOS... Да и почему ограничиваться только первичными разделами?... "Патовая" ситуация разрешается загрузкой второй порции загрузчика. Вот тут-то и начинаются различия. Где BIOS находит код первой фазы загрузки (для GRUB - stage1) - известно: 0:0:0, как и договаривались, а вот где, в свою очередь, эта первая фаза будет искать своё продолжение (для GRUB - stage2, то есть)? LILO поступает просто: первая часть кода при инсталляции получает адрес продолжения в виде списка блоков, в которых и записано это самое "продолжение". "Продолжение" - не обязательно код. Это может быть и список необходимых файлов, но адресуемых физически, как блоки. GRUB же поступает изощрённее: в блоки, следующие за загрузочным, последовательно записывается код промежуточной фазы: stage1_5.


Содержание  Назад  Вперед