Молниеносная загрузка тукса

Денис Колисниченко

Хакер, номер #087, стр. 087-126-1

(dhsilabs@mail.ru)

Initng - следующее поколение начальной инициализации SystemV Init

Сегодня мы поговорим о initng - новой системе инициализации твоего Linux'а. Initng является следующим поколением init, о чем красноречиво говорят символы ng (next generation) в названии этой системы. Основное призвание initng - стать достойной заменой старому доброму init. В этой статье мы убедимся, так ли это.

[init vs initng]

Что же такого хорошего в initng, что о ней заговорили? Чтобы понять суть отличия, давай вспомним, как работает классическая версия init. Первым делом запускается ядро, которое монтирует корневую файловую систему и запускает программу инициализации /sbin/init. При необходимости с помощью специального параметра ядра можно изменить это значение:

init=/путь/к/программе/инициализации

Ядро после загрузки успокаивается, так как всю дальнейшую работу берет на себя init. Если эту программу запустить не удается, то ядро паникует, и дальнейшее продолжение работы невозможно. Чтобы вычислить требуемый уровень запуска, init просматривает файл /etc/inittab:

id:5:initdefault:

Затем, в зависимости от уровня, init запускает сценарии из каталога /etc/rc.d и его подкаталогов. Здесь ключевая фраза - "запускает сценарии", выполнением которых занимается командный интерпретатор (обычно /bin/bash), то есть "посторонняя" программа.

Initng самостоятельно выполняет свои файлы конфигурации, в которых указаны действия по инициализации системы, в результате чего время загрузки системы резко сокращается. Действительно, с использованием initng мой FC3 стартует практически мгновенно. После того как я все правильно настроил и перезапустил систему, я даже сначала не понял, что загрузка системы уже завершена.

[подготовка к установке initng]

Скачать initng можно по адресу: initng.thinktux.net/download/v0.5/ (либо взять с нашего CD/DVD). Там будут как файлы, содержащие исходный код, так и уже откомпилированные rpm-пакеты. Советую скачать именно исходный код, причем самую последнюю версию.

Лично я использую Linux не только для экспериментов, но и для повседневной работы, поэтому не часто переустанавливаю дистрибутивы. Сейчас на моем винте по-соседски разместились Linux Mandrake 10 и Fedora Core 3. Да, дистры не первой свежести, но они меня вполне устраивают.

Сначала я попытался установить initng в моем любимом Linux Mandrake. Установить-то я ее установил, то работать "система инициализации следующего поколения" отказалась. Почему? Она рассчитана на... более новые дистрибутивы. Если попытаешься установить rpm-пакет с initng на Linux Mandrake 10 или на ту же Fedora Core 3, то ты увидишь, что нужно для установки этой версии. Версия 0.5.3 требует пакет filesystem версии 2.2.4 или выше, библиотеку glibc версии 2.3.4 или выше, а также наличие SELinux.

Устанавливать Mandriv'у из-за initng я посчитал излишним, поэтому "под нож" пустил третью версию Fedora Core. В данной версии присутствует пакет filesystem версии 2.3, есть SELinux, а то, что нет glibc версии 2.3.4 - не беда. Я предпочитаю компилировать initng из исходных кодов, поэтому при сборке будет использоваться та версия glibc, которая есть в наличии (2.3.3). При попытке установить rpm-пакет на FC3 без удовлетворения зависимостей выясняется, что initng работать не будет. Причем об этом красноречиво доложит само ядро, когда при перезагрузке ты увидишь сообщение о невозможности запуска initng (поскольку rpm от разработчиков собран на glibc версии 2.3.4).

Содержание  Вперед на стр. 087-126-2
ttfb: 3.4511089324951 ms