Шрифт:
Интервал:
Закладка:
♦ Действие: одно из действий, перечисленных в таблице 9.1.
♦ Запускаемый_процесс: процесс, над которым производится действие. Это может быть исполняемый файл или сценарий.
Действия над процессами, задаваемые а файле /etc/inittab Таблица 9.1
Действие Описание respawn В случае завершения процесс будет перезапущен wait Процесс будет запущен при переключении на любой из указанных уровней, и init будет ждать его завершения once При переключении на любой из указанных уровней процесс будет запущен только однажды boot Процесс будет запущен во время загрузки системы. Поле «уровни_выполнения» игнорируется bootwait То же, что и boot, но init ждет завершения процесса off Не выполняет никаких действий ondemand Процесс выполняется в режиме по требованию, то есть, он будет запущен при переключении на уровни a, b или с initdefault Определяет уровень выполнения по умолчанию sysinit Процесс запускается во время загрузки системы до любых процессов, стартующих через boot или bootwait powerwait Процесс будет запущен, когда исчезнет напряжение в сети. Естественно, для корректной работы этой записи нужен источник бесперебойного питания, от которого система и получит уведомление об исчезновении напряжения; init будет ждать завершения этого процесса powerfail То же, что и powerwait, но init не будет ждать завершения процесса powerokwait Процесс запускается по получении init сигнала о восстановлении питания powerfailnow Процесс запускается, когда источник бесперебойного питания подает сигнал о том. что его батареи почти разряжены ctrlaltdel Процесс запускается при получении init сигнала INT. посланного нажатием комбинации клавиш Ctrl+Alt+Del. Обычно это процесс перезагрузки, выключения или перехода в однопользовательский режим. kbrequest Процесс запускается при получении init сигнала, посланного нажатием «специальной» комбинации клавиш. Назначить клавишам специальное значение можно с помощью утилит из пакета kbdСценарий, помеченный действием sysinit, выполняется во время запуска системы, однократно, вне зависимости от запрошенного уровня. Затем запускаются процессы, помеченные действиями boot и bootwait.
На данном этапе загрузки системы происходят следующие действия по инициализации, результат которых необходим на любом уровне выполнения:
1. Устанавливается имя машины (hostname).
2. Конфигурируются параметры ядра.
3. Устанавливаются раскладка клавиш и системный шрифт,
4. Активируются разделы подкачки.
5. Корневая система проверяется программой fsck. Если будут найдены ошибки, которые невозможно исправить автоматически, будет запрошен пароль администратора для входа в административный режим, что равноценно переходу на уровень выполнения 1. В этом режиме вы запустите программу fsck с аргументом «/», который означает проверку корневой файловой системы. После исправления всех ошибок введите команду exit для перезагрузки системы. Если программа fsck ошибок не обнаружила, файловая система монтируется в режиме чтение/запись.
6. Проверяются зависимости модулей ядра.
7. Выполняется проверка других файловых систем.
8. Монтируются локальные файловые системы.
9. Включаются квоты.
10. Подключается (не активизируется!) раздел подкачки. С этого момента система начинает использовать раздел подкачки.
Дальше включается сценарий загрузки, специфичный для запрошенного уровня, и начинается разница между дистрибутивами.
В процессе развития UNIX-подобных ОС выделились две основных системы инициализации (набора сценариев загрузки). Одна была разработана в рамках ОС BSD (Berkeley Software Distribution) Калифорнийского университета, от которой произошли бесплатная FreeBSD и коммерческая SunOS. Другая применяется в классической System V от AT&T и ее потомках, среди которых UnixWare, IRIX, HP-UX и Solaris. ОС Linux заимствовала удачные решения с обеих эволюционных ветвей, и в результате часть дистрибутивов следует в инициализации стилю BSD (Slackware, CRUX, Gentoo), а часть (Red Hat-подобные) — стилю System V.
Инициализация в стиле BSDДля этого стиля характерно наличие конфигурационного файла стартовых сценариев /etc/rc.conf. Уровней выполнения как таковых в BSD и ориентированных на нее реализациях Linux нет, вместо них вводится понятие режима — группы процессов, объединенных общей функциональностью. Режимов обычно два: однопользовательский и многопользовательский. Каждый режим запускается своим сценарием. Файлы этих сценариев обычно находятся в /etc и называются rc.* (рис. 9.1).
Рис. 9.1. Порядок инициализации в стиле BSD
В дистрибутиве Slackware этим сценариям присвоены имена:
♦ rc.S — сценарий запуска (действие sysinit);
♦ rc.0 — останов системы;
♦ rc.6 — перезагрузка;
♦ rc.K — однопользовательский режим;
♦ rc.M — многопользовательский текстовый режим;
♦ rc.4 — многопользовательский режим с графическим входом в систему.
В /etc/default/rc.conf хранятся в неизменном хорошо откомментированном виде все системные настройки в количестве нескольких сотен, а редактируемый администратором /etc/rc.conf содержит только отличия желаемой конфигурации системы от /etc/defaults/rc.conf, которых раз в десять меньше. Загрузочные сценарии режимов прочитывают оба эти файла и и зависимости от требуемой конфигурации могут запускать из-под себя дополнительные сценарии инициализации различных служб: rc.inetd*, rc.cdrom и т.п. Последним при загрузке выполняется сценарий rc.local, содержание которого определяется администратором конкретной системы.
Инициализация в стиле System VВ этом стиле каждому уровню выполнения соответствует целый каталог, все сценарии в котором выполняются при переключении на этот уровень. Это подкаталоги /etc с именами rc0.d, rc1.d, …, rc6.d. Сценарии в этих каталогах — файлы с именами вроде S12syslog или K95kudzu — только символические ссылки на настоящие сценарии, находящиеся в /etc/init.d. Каждый из настоящих сценариев, будучи вызван с аргументом start, запускает свою службу, а с аргументом stop — останавливает ее. Какой аргумент будет ему передан, зависит от первой буквы имени символической ссылки: S означает start, K (kill) — stop. Следующее за этой буквой число определяет порядок вызова настоящих сценариев: чем оно больше, тем позже срабатывает данная ссылка при включении текущего уровня. Сначала выполняются все сценарии останова процессов, не разрешенных на данном уровне, потом — все сценарии запуска (рис. 9.2).
Рис. 9.2. Порядок инициализации в стиле System V
Переключением уровней выполнения занимается центральный сценарий /etc/rc. Вызванный с аргументом N, где N — это номер включаемого уровня, он ищет каталог /etc/rc.N и выполняет в нем сначала все стоп-сценарии, потом все старт-сценарии.
Для выбора демонов, которые будут запускаться автоматически при загрузке системы, обычно используют конфигуратор drakconf в операционной системе Linux Mandrake, system-config-services в Fedora Core (рис.9.3) или setup в других Red Hat-подобных дистрибутивах.
Рис. 9.3. Конфигуратор служб system-config-services
Чтобы обеспечить автоматический запуск какого-нибудь сервиса, нужно создать сценарий для его запуска и поместить его в каталоге /etc/init.d. Затем, в зависимости от уровня выполнения, в каталоге /etc/rcN.d нужно создать символические ссылки на этот сценарий для его запуска и останова.
Если вы хотите сами создать сценарий для запуска своего демона, можете воспользоваться шаблоном, приведенным в листинге 9.3.
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Разработка приложений в среде Linux. Второе издание - Майкл Джонсон - Программное обеспечение
- Искусство программирования для Unix - Эрик Реймонд - Программное обеспечение
- Linux - Алексей Стахнов - Программное обеспечение
- Fedora 8 Руководство пользователя - Денис Колисниченко - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Архитектура операционной системы UNIX - Морис Бах - Программное обеспечение
- Windows Vista. Трюки и эффекты - Юрий Зозуля - Программное обеспечение