RSS
 

Использование initng

12 Окт

Initng (Init Next Generation) — это система инициализации Linux следующего поколения, позволяющая существенно ускорить запуск Linux.

Давайте разберемся, за счет чего достигается ускорение запуска Linux и чем нас не устраивает обычный init. Рассмотрим вкратце процесс загрузки Linux. Запускается ядро, оно монтирует корневую файловую систему и запускает программу init. Именно init выполняет всю дальнейшую инициализацию системы.

Первым делом init читает поле initdefault в файле /etc/inittab — это уровень запуска по умолчанию. В зависимости от уровня запуска init запускает сценарии, находящиеся в одном из подкаталогов каталога /etc/rc.d.

Система initng работает иначе. Она не запускает сценарии, а сама выполняет действия, указанные в файлах, которые играют роль сценариев инициализации. То есть в случае с обычным init на самом деле инициализирует систему старый добрый bash, a init только запускает нужные сценарии. Выполнение передается другой программе (bash), которая и выполняет сценарии. A initng сама выполняет инициализацию системы, без посредников, поэтому и достигается сокращение времени загрузки.

Скачать initng можно по адресу: http://download.initng.org/.

Initng можно установить далеко не на каждый дистрибутив, например, можете даже не пытаться установить на Mandrake 10 и более старые версии. В случае с Mandrake вам нужна версия Mandriva 2006, а если у вас Fedora Core, то она должна быть, как минимум, третьей версии.

Для простоты установки я рекомендую вам скачать RPM-пакет с initng. На данный момент последней является версия 0.6, поэтому вам нужно скачать файл:http://download.mitng.org/initng/v0.6/initng-0.6.0-l.i386.rpm.

Установить пакет можно с помощью rpm: # rpm -ihv initng-0.6.0-l.i386.rpm

Что не говори, а установка из RPM намного проще установки из исходных кодов. Кстати, установку лучше производить на третьем уровне запуска и по умолчанию установить также третий уровень запуска. После установки нужно будет отредактировать конфигурационные файлы загрузчика. После перезагрузки вы должны быть готовы к тому, что система загрузится быстро, но не все службы будут работать. Мы это подправим, разумеется.

Если у вас LILO, то откройте файл /etc/lilo.conf и добавьте в него следующие строки:

image=/boot/vmlinuz label="initng" #    укажите свою корневую файловую систему root=/dev/hda6 initrd=/boot/initrd.img append=" init=/sbin/initng" vga=788

После этого не забудьте перезаписать загрузчик:

#    lilo

Если у вас GRUB, то нужно открыть файл /boot/grub/grub.conf и добавить в него строки:

title initng kernel (hd0,5)/vmlinuz-2.6.9-1.667 root=/dev/hda2 init=/sbin/initng

Ясно, что нужно изменить имя раздела, на котором у вас установлена система Linux (hd0,5). Перезаписывать загрузчик не нужно.

После произведенных действий можно перезагрузить Linux. Загрузка должна произойти быстро и без ошибок. Возможно, некоторые сервисы не запустятся, но об этом мы поговорим позже, а пока рассмотрим формат конфигурационных файлов.

Конфигурационные файлы

При работе с initng вам придется редактировать два типа конфигурационных файлов: файлы уровней запуска (находятся в каталоге /etc/initng и обладают «расширением» .runlevel) и файлы сервисов («расширение» .i). Файлы уровней запуска содержат список сервисов, которые нужно выполнить на соответствующем уровне. Инструкции по запуску того или иного сервиса находятся в файлах сервисов.
Всего существуют три основных файла уровней запуска:

  • default.runlevel — уровень запуска по умолчанию;
  • system.runlevel — системный уровень;
  • single.runlevel — однопользовательский уровень.

Первый файл содержит список служб, которые должны запускаться при обычной загрузке системы. Второй файл является базой для первого и третьего — оба файла его вызывают. На системном уровне загружается все необходимое для нормальной работы системы.

После установки initng на моем компьютере был сформирован следующий файл default.runlevel (я работал на третьем уровне доступа) — листинг.

system daemon/klogd daemon/eth0 daemon/syslogd daemon/sshd daemon/gpm daemon/xinetd daemon/xfs

В первой строке вызывается системный уровень запуска, который является обязательным для всех уровней. Вторая строка — это запуск демона протоколирования ядра, после этого — «поднимается» интерфейс eth0. В четвертой строке происходит запуск демона системного протоколирования, после — SSH-сервер, сервис мыши, суперсервер xinetd и сервер шрифтов xfs.

Зайдите в каталог /etc/initng/daemons. В нем вы обнаружите файлы для запуска различных сервисов. Например, файл для запуска программы sendmail называется sendmail.i, а файл для запуска Web-сервера Apache — httpd.i. Чтобы добавить вызов сервиса на тот или иной уровень запуска, можно просто прописать в его конфигурационном файле строку daemons/<имя_файла.i>, но это не совсем корректно. Дело в том, что сервис для своей работы может требовать дополнительных сервисов. Поэтому лучше добавлять сервис на уровень запуска программой ng-update, которая учитывает требования сервисов.

Формат i-файлов, т. е. файлов сервисов, очень прост. Рассмотрим, например, файлhttpd.i (файл Web-сервера Apache):

daemon daemon/httpd; need = system/bootmisc;require_network; use = daemon/sshd daemon/mysql daemon/postgres system/netmount; exec daemon = /usr/sbin/httpd; pid_file = /var/run/httpd.pid; }

Зависимости указываются с помощью директив need, use и require_network. Данный сервис требует сервис system/bootmisc, запускаемый на системном уровне. В свою очередь, Apache может использовать следующие сервисы: daemon/sshd daemon/mysql daemon/postgres system/netmount. Директива require_network говорит о том, что данный сервис сетевой и ему для нормальной работы нужна сеть.

Директива exec задает команду запуска сервиса, а директива pid_f ile уточняет его PID-файл (файл, содержащий идентификатор процесса).

Управление системой инициализации осуществляется текстовыми утилитами ngc и ng-update.
Программа ngc используется вместо программы service, т. е. запускает/останавливает службу. Формат ее вызова следующий:

ngc <действие> <сервис>

Для запуска сервиса нужно указать действие -и, а для останова -а. Формат вызова второй программы выглядит так:

ng-update <действие> <служба> <уровень запуска>

Рассмотрим два примера:

  • ng-update add daemons/httpd default— добавляем запуск daemons/httpd на уровень default;
  • ng-update del daemons/squid default — удаляем Запуск daemons /squid ИЗ уровня default.

Если вам больше нравятся графические конфигураторы, то рекомендую обратить свое внимание на программы initng-konf  и initng-conf-gtk. Скачать программы можно по адресу: http://download.initng.org /initng-gui/.

 
Комментарии к записи Использование initng отключены

Рубрика: Linux

 

Comments are closed.