2009-02-11
Первый случай, как мы помним, имел место при установке Zenwalk'а. Можно предположить, что он собственно его инсталлятором и реализуется, но это не так. За установку и конфигурирование Lilo в этом дистрибутиве отвечает специальная утилита — liloconfig, унаследованная от Slackware. Она может быть запущена и вне инсталлятора — в любой последующий момент времени. Важно только перед этим выполнить процедуру копирования существующего конфига:
# cp /etc/lilo.conf /etc/lilo.oldПочему — будет ясно ближе к концу раздела.
Программа liloconfig запускается от лица суперпользователя одноименной командой:
# /sbin/liloconfigпосле чего демонстрирует свой простой псевдографический интерфейс, основанный на библиотеке ncurces, в характерном для Slackware стиле:


Напомню, что утилита liloconfig не слишком «умная», и, обнаружив первый же раздел с FAT любого рода или NTFS, сочтёт, что он несёт на себе соответствующую ОС, даже если её там и близко не лежала, и, исходя из этого предположения, допишет в меню соответствующий пункт, сделав его умолчальным. Разумеется, загрузить через него не удастся ничего, и исправление этой не вполне удобной ситуации потребует ручного вмешательства.
Кроме того, следует помнить, что «простой» способ приемлем только в том случае, если мы твёрдо решили сделать Lilo первичным мультисистемным загрузчиком, потому что его конфигурация в этом случае безальтернативно будет записана в MBR диска.
Другое дело — экспертный вариант загрузки: тут пользователю предлагается субменю с рядом пунктов:

Начнём с первого пункта, Begin, который обеспечивает заполнение глобальной секции этого файла.
Перво-наперво будет предложено задать параметры ядра, те самые, значения которых будут фигурировать в строке append глобальной секции конфига загрузчика:

Следующим будет вопрос о месте размещения Lilo — в MBR диска или на корневом разделе для Linux-системы:

Далее надо установить время, отводимое пользователю на выбор операционки. Варианты — none, то есть мгновенная загрузка (целесообразно, если на машине установлена единственная ОС с единственным же вариантом загрузки), 5 и 30 секунд — выбирать в зависимости от быстроты реакции, и Forever — ожидание выбора до бесконечности.


Затем следует задать уникальное имя для субсекции — оно будет значением строки label в конфигурационном файле и названием пункта в меню Lilo при загрузке. Как явствует из рисунка, имя должно быть однословным, но всякого рода цифры, дефисы и подчёркивания в нём допукаются.

Однако это компенсируется возможностью добавить вариант загрузки какой-либо Windows. Это делается совсем просто. Сначала выбирается раздел, несущий эту ОС, из списка разделов с подходящими файловыми системами:


После того, как мы расправились со всеми пригодными для загрузки наличными операционками, нужно выполнить последнее деяние: увековечить результаты наших действий через пункт меню Install: до сих пор не было выполнено ни одного необратимого действия, и если появились сомнения в правильности настроек загрузчика, можно просто через Cancel (или через комбинацию Control+C) выйти из liloconfig без всяких последствий и без малейшего вреда для существующей конфигурации.
А вот после перехода к пункту Install всё происходит быстро и молча: старый файл /etc/lilo.conf перезаписывается сгенерированным заново, и новые параметры записываются (посредством скрытого исполнения команды /sbin/lilo) туда, куда им было предписано — в MBR диска или BR раздела. После чего liloconfig завершает свою работу с возвратом в командную оболочку, из которой он был запущен:

И теперь изменить что-либо можно, только повторив процедуру конфигурирования. И вернуться к исходной конфигурации загрузчика — выполнив обратное копирование резервной копии старого конфига (мы ведь не забыли её сделать, не так ли?):
# cp /etc/lilo.old /etc/lilo.confНе забыв после этого перезапустить /sbin/lilo.
Я довольно подробно остановился на работе с утилитой liloconfig потому, что она, с одной стороны, снимает у начинающего пользователя страх перед ручной правкой конфига загрузчика, с другой же — способствует понимаю того, что скрывается за строками файла /etc/lilo.conf. Но на практике к ней прибегают достаточно редко (лично я — так ни разу в жизни, за исключением тех случаев, когда она автоматом вызывается установщиком дистрибутива). Гораздо проще править конфиг Lilo вручную в любом текстовом редакторе — надеюсь, что приведённых в настоящем разделе сведений достаточно для осмысленного выполнения этой процедуры. Самое главное — не забывать после неё про необходимость перезапуска /sbin/lilo.
Можно видеть, что конфигурационный файл Lilo устроен очень просто, а сама загрузочная программа — проста в настройке и использовании (если не забывать про перезапуск /sbin/lilo). Однако у неё есть несколько... ну не столько недостатков, сколько ограничений.
Первое вытекает из положения конфига этого загрузчика внутри какой-либо из нативных файловых систем Linux. Так что для изменения его конфигурации из другой ОС необходимо иметь доступ к той файловой системе, на которой лежит корень инсталлированного Linux'а, причем в режиме записи. И если примонтировать Ext2fs/Ext3fs к файловой системе, например, FreeBSD в режиме read/write можно без проблем, то доступ из любой ОС BSD-семейства к разделам с ReiserFS или XFS в настоящее время возможен только для чтения (и неизвестно, будет ли возможен в обозримом будущем).
Конечно, можно взять за правило размещать корневую систему Linux только на разделе с Ext2fs/Ext3fs. Однако второе ограничение — необходимость перезапуска /sbin/lilo — этим не обходится, ведь эта программа предназначена для работы в родной ОС, сиречь Linux (интересно, а пробовал ли кто-нибудь запустить /sbin/lilo под FreeBSD в режиме Linux Compability?). И, соответственно, непременное условие для переконфигурирования Lilo — возможность запуска Linux в каком-никаком виде, хотя бы — с rescue-дискеты или LiveCD.
Есть и третье ограничение, не столь важное: относительно слабые интерактивные возможности. Конечно, Lilo позволяет в режиме командной строки вмешиваться руками в ход загрузки — но только загрузки Linux же (например, передавать параметры ядру). Да и то — в ограниченном объеме. Возможности же вмешательства в ход загрузки чужой ОС вообще заканчиваются в момент выбора соответствующего ей варианта.
И ещё: вся информация о конфигурации загрузчика записывается в MBR, объем которого, как мы помним, далеко не безграничен. И потому втиснуть в меню Lilo можно только конечное число вариантов загрузки, а именно — 16. Впрочем, практическое значение этот лимит имеет только для коллекционеров операционных систем (есть и такое хобби), а для их целей более пригоден будет GRUB.
Раз уж речь зашла об ограничениях Lilo, то, пользуясь случаем, подчеркну: прочие ограничения, на которые можно натолкнуться в литературе, как то: невозможность загрузить ядро Linux с области диска, лежащей за пределами первых 1024 его цилиндров, или с логического раздела в разделе Extended DOS, или с раздела с файловой системой ReiserFS, смонтированной в режиме тайлинга, — давно потеряли силу. И пользователь любого современного дистрибутива о них может смело забыть.
Тем не менее, основная сфера применения Lilo — это работа преимущественно (или исключительно) в Linux, при эпизодическом использовании какой-либо другой ОС. Причем рискну предположить, что под другой ОС будет выступать, скорее всего, какая-либо из версий Windows. Экспериментирование же с многочисленными операционками разных семейств — это, по моему мнению, прерогатива GRUB.