Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #80, АВГУСТ 2005 г.

Познай свою ОС

j1m (j1m@list.ru)

Хакер, номер #080, стр. 080-098-2


/etc/rc.conf - конфигурационный файл

/etc/rc.local - запуск команд пользователя

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

В противоположность монолитным BSD-скриптам, SystemV-скрипты представляют собой огромное количество различных сценариев, задача каждого из которых - выполнить один шаг инициализации (например: подключить swap, запустить sendmail, установить шрифт). Все сценарии лежат в каталоге /etc/rc.d/init.d, помимо него в /etc/rc.d присутствует еще восемь каталогов: rc0.d - rc6.d и rcsysinit.d. Их имена соответствуют уровням запуска. В каждом из них создаются символические ссылки, указывающие на сценарии каталога /etc/rc.d/init.d. Имя ссылки может начинаться с буквы S (запустить сервис) или K (остановить сервис). Затем идут две цифры, обозначающие порядок, в котором следует запускать скрипты. К примеру, если в rc3.d присутствуют ссылки S10sysklogd и S15cron, то это значит, что на третьем уровне запуска следует сначала выполнить скрипт /etc/rc.d/init.d/syslogd, а затем /etc/rc.d/init.d/cron. Каждому из них будет передан параметр start. Довольно часто в системах со стилем инициализации SystemV присутствует каталог /etc/sysconfig, содержащий конфигурационные файлы, с помощью которых можно влиять на процесс загрузки.

[что скрипты нам готовят]

Перед тем, как продолжить нашу эпопею, хочу обратить твое внимание на важную деталь. Так как стартовые скрипты представляют собой сценарии командного интерпретатора, значит, уже в момент загрузки появляется необходимость в bash - это первое. Второе, скрипты не могут обходиться только встроенными средствами bash, и им нужны стандартные команды типа: cat, echo, hostname, rm, uname. Все эти базовые программы, а также множество других содержится в пакете coreutils. Также для приведения системы в рабочее состояние скрипты не могут обойтись и без сервисных утилит (hwclock, mount, swapon и т.д.). Такие утилиты входят в состав пакета util-linux, который включает в себя беспорядочную смесь различных, не связанных между собой программ (more и cal находятся именно в нем). Прибавь сюда программы обработки текста sed и awk и поймешь, что уже на этапе инициализации появляется необходимость во многих стандартных программах. Причем все они должны находиться в каталогах /bin и /sbin, потому как файловая система, в которой содержится /usr, может быть не смонтирована на начальном этапе загрузки.

[магия инициализации]

Настало время перейти непосредственно к описанию процесса загрузки. Чтобы никого не обидеть, возьмем для примера скрипты из нейтрального дистрибутива LFS :). Его стартовые скрипты предельно просты и относятся к классу SystemV. Итак, давай подумаем логически, что нужно сделать на начальной ступени инициализации (той, которая не зависит от уровня запуска). А сделать нужно следующее (по приоритету):

1. Примонтировать ядерные файловые системы /proc и /sys, иначе без них мало что будет работать.

2. Инициализировать систему udev, которая занимается созданием элементов в каталоге /dev.

Назад на стр. 080-098-1  Содержание  Вперед на стр. 080-098-3