устанавливаем cmake-2.4.5-1.i386.rpm

# rpm -ihv cmake-2.4.5-1.i386.rpm

или из src.rpm

# rpm --rebuild cmake-2.4.5-1.src.rpm

# rpm -ihv cmake-2.4.5-1.i386.rpm


устанавливаем initng-0.6.10.2.tar.bz2

распаковываем initng-0.6.10.2.tar.bz2 и переходим в папку

# tar xvjfp initng-0.6.10.2.tar.bz2

# cd initng-0.6.10.2


создаем папку build и переходим в нее

#mkdir build; cd build


запускаем cmake (используется здесь вместо ./configure)

# cmake ..


далее make и make install

# make

# make install



по аналогии устанавливаем конифигурационные файлы initng-ifiles-0.1.4.tar.bz2


# tar xvjfp initng-ifiles-0.1.4.tar.bz2

# cd initng-ifiles-0.1.4

#mkdir build; cd build

# cmake ..

# make

# make install


в принципе вышесказанное написано в initng-*/doc/FAQ и INSTALL, initng-ifiles-*/doc/INSTALL


теперь будем конфигурировать

в grub.conf в конце строки kernel добавляем init=/sbin/initng


kernel /boot/vmlinuz root=LABEL=fc4root ro elevator=as ramdisk_size=100000 vga=791 quiet init=/sbin/initng


кстати runlevel: single в строке kernel не работает не смотря на заявление в initng-0.6.10.2/doc/INSTALL. (об этом смотри в конце)


удаляем все файлы из /etc/initng/runlevel

они имеют только тестовый смысл.


Командой

#genrunlevel -all

пользоваться не стоит, мне она сформировала runlevel.default и system.default одинакового содержания. Загрузка была безуспешная соответственно.


Первая задача была запустить fedora в текстовом режиме. Для этого нужно чтобы запустился agetty или mingetty.

Создаем файл /etc/initng/runlevel/default.runlevel

из него читает конфигурацию initng по умолчанию, если прописать все в нем то файл system.runlevel не нужен. В противном случае, если планируется использовать system.runlevel то в первой строке default.runlevel нужно вставить system.

То есть как я понимаю в system.runlevel можно забить фундамент а в *.runlevel опции, но я этим не пользуюсь.


Добавляем в default.runlevel

system/mingetty


перезагружаемся и через 1.5 секунды загружка завершена, первая консоль не доступна, нажимаем Alt+F2 , вводим логин и пароль и мы в консоли. При этом конечно много чего нет например установленного hostname и прочего. Перезагрузка

# reboot

либо

# ngc -6

посмотреть статус успешности запуска

# ngs -s


для запуска mingetty нужно чтобы предварительно были загружены другие службы. Как это можно увидеть в

/etc/initng/system/mingetty


#!/sbin/itype

# This is a i file, used by initng parsed by install_service


# NAME:

# DESCRIPTION:

# WWW:


daemon system/mingetty/1 {

need = system/bootmisc system/mountfs/home;

provide = virtual/getty/1;

term_timeout = 3;

exec daemon = /sbin/mingetty tty1;

respawn;

last;

}


daemon system/mingetty/* {

need = system/bootmisc system/mountfs/home;

provide = virtual/getty/${NAME};

term_timeout = 3;

exec daemon = /sbin/mingetty tty${NAME};

respawn;

}


virtual system/mingetty {

need = system/mingetty/2 system/mingetty/3 system/mingetty/4 system/mingetty/5 system/mingetty/6;

use = system/mountfs/essential service/issue;

}



need это то что должно быть обязательно загружено перед , то есть от чего запускаемый объект (служба, daemon) зависит

use это то что загружается перед, при условии что вообще будет использоваться. Если нет, то и не загружается.


на примере system/mingetty: перед mingetty должно быть запущено system/mingetty/2 system/mingetty/3 system/mingetty/4 system/mingetty/5 system/mingetty/6;


system/mountfs/essential service/issue – должны быть запущены при условии что их планируется использовать.


Возникает вопрос, как смог запуститься mingetty если те объекты от которых он зависит не были прописаны нами, оказывается что initng читает default.runlevel смотрит чего не хватает (на основе зависимостей ) для запуска тех объектов что там прописаны определяет порядок запуска и подгружает их. Делает это достаточно неплохо.


Можно вручную разрешить зависимости и свериться посмотрев после загрузки ngc -s или посмотреть сам процесс загрузки добавив в kernel в grub - «interactive».


kernel /boot/vmlinuz root=LABEL=fc4root ro elevator=as ramdisk_size=100000 vga=791 quiet init=/sbin/initng interactive



Вот как выглядел бы полный список необходимых обьектов для system/mingetty в default.runlevel


initial/loglevel

initial/mountvirtfs

system/initial/filldev

system/initial

system/mountroot/check

system/mountroot/rootrw

system/mountroot/

system/checkfs

system/mountfs/essential

system/mountfs/home

system/bootmisc

system/mingetty/2

system/mingetty/3

system/mingetty/4

system/mingetty/5

system/mingetty/6

system/mingetty


для запуска GNOME по минимуму нужно прописать в default.runlevel


system/udev

daemon/instant-gdm (либо daemon/gdm)


далее опишу опции которые подключают те или иные функции.


system/hdparm – оптимизация работы винчестера

system/clock – сверка времени linux и биос

system/sysctl – переменные в sysctl.conf

system/swap – активизация swap

system/mountfs – монтирование разделов на основе fstab

daemon/syslogd – включает syslog

daemon/acpid – мне нужно для отображения статуса заряда батареи в gnome.

net/lo – сеть, активация кольцевого интерфейса

net/eth0 – активация сетевой карты

system/hostname – установка hostname







что сейчас не могу преодолеть - при перезагрузке пишет:

system/udev/udevd DAEMON_FAIL_START_RCODE

далее шел выброс в sulogin, избавился от него так:

в файле /etc/initng/system/udev

в районе daemon system/udev/udevd

закомментировал # critical



далее из-за этого самого daemon_fail_start_rcode перед самым good bye , restart была 15 секундная задержка, избавился так:

перекомпилировал заново initng, предварительно удалив sleep (15)

в файле

initng-0.6.10.2/src/initng_main.c

в районе

printf («Will sleep for 15 seconds before reboot/halt so you can see them. \n\n»);



--------------------------------------------------------

в итоге мой default.runlevel выглядит так:



system/hdparm
system/clock
system/sysctl
system/swap
system/mountfs
daemon/syslogd
daemon/acpid
net/lo
net/eth0
system/hostname
system/udev
daemon/instant-gdm
--------------------------------------------------
про interactive и прочие плагины можно почитать в  initng-0.6.10.2/plugins/...

в итоге загрузка от grub до экрана login gnome сократилась с 31 секунды (через init) до 20 секунд.


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


Еще момент - в system-config-services отображается не весь список загружаемых daemons из папки /etc/init.d при помощи init.


например xfs или bluetooth

наличие которых в запуске обнаружится через

# chkconfig --list | grep 5:вкл


xfs – это сервер шрифтов что то в этом роде у меня и без него все работает, при его отключении в /etc/X11/xorg.conf нужно закомментировать в Section «Files» строки с RgbPath и FontPath, иначе Gnome не загрузится.

-------------------------------------------


runlevel: single в строке kernel + наличие в /etc/initng/runlevel файла single.runlevel либо файла single = не работает, не смотря на заявление в initng-0.6.10.2/doc/INSTALL.

Чтоб заработало нужно писать runlevel:single.runlevel и иметь в /etc/initng/runlevel файл конфигурации single.runlevel

при этом при загрузке получаем надпись ignoring unknown boot option «runlevel:single.runlevel», однако все срабатывает.


Содержимое файла single.runlevel


system/hdparm
system/clock
system/sysctl
system/swap
system/mountfs
daemon/syslogd
net/lo
system/hostname
system/mingetty

---------------------------------------


Сайт управляется системой uCoz