Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 37
Текст из файла (страница 37)
Если он не указан, при загрузке программаinit попросит вас ввести уровень выполненияsysinitПроцесс будет запущен во время загрузки, но перед выполнением процессов, которыезапускаются с помощью действия boot или bootwaitpowerwaitПроцесс будет запущен, когда исчезнет напряжение в сети. Естественно, для корректнойработы этой записи нужен источник бесперебойного питания, от которого система иполучит уведомление об исчезновении напряжения. Программа init будет ждать завершенияэтого процессаpowerfailpowerokwaitctrlaltdelТо же, что и powerwait, но программа init не будет ждать завершения процессаПроцесс будет запущен сразу после того, как программа init получит сведения о том,что питание восстановленоС помощью этого действия можно установить реакцию системы на нажатие комбинацииклавиш Ctrl+Alt+DelТеперь рассмотрим листинг обычного файла / e t c / i n i t t a b(см.
листинг 5.2).147ПроцессыЛистинг 5.2. Файл /etc/inittabid 5:initdefault:si :sysinit:/etc/re.d/rc.sysinit10 0:wait:/etc/re.d/rc 011' 1:wait:/etc/re.d/rc 112 2:wait:/etc/re.d/rc 213 3:wait:/etc/re.d/rc 314 4rwait:/etc/re.d/rc 415 5:wait:/etc/re.d/rc 516 6:wait:/etc/re.d/rc 6# Things to run in every runlevel.ud::once:/sbin/update# Trap CTRL-ALT-DELETEc a : : c t r l a l t d e l : / s b i n / s h u t d o w n -t3 -r nowpf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"1: 2 3 4 5 : r e s p a w n : / s b i n / m i n g e t t y2:2345:respawn:/sbin/mingetty3 : 2345:respawn:/sbin/mingetty4:2345:respawn:/sbin/mingetty5:2345:respawn:/sbin/mingetty6:2345:respawn:/sbin/mingettyttyltty2tty3tty4tty5tty6# Run xdm in runlevel 5# xdm is now a separate servicex : 5 : r e s p a w n : / e t c / X l l / p r e f d m -nodaemonРассмотрим подробно приведенный пример.
Самая первая строка определяет уровень выполнения по умолчанию. Очень рекомендую вам установить это значение. Во-первых, вводить уровень загрузки каждый раз призапуске системы не очень удобно. Во-вторых, если не установлен уровеньвыполнения по умолчанию, система не сможет запускаться автоматически:при загрузке она будет ждать ввода номера уровня выполнения. Для загрузки системы подойдут два уровня: или 3, или 5. Я рекомендую использоватьтретий уровень выполнения, использовать уровень выполнения 5 нужнотолько в том случае, если вы хотите, чтобы система X Window запускаласьавтоматически при старте системы.Затем указываются программы, которые будут выполнены во времясистемной инициализации (sysinit). В нашем случае будет запушен сценарийзагрузки системы / e t c / r e .
d / r c . sysinit.148ПроцессыДалее следуют описания действий для каждого из уровней выполнения.Например, для уровня выполнения номер 5 будет запущен сценарий/ e t c / r e . d / r c с параметром 5. Программа init будет ждать завершенияпроцесса / e t c / r e . d / r c .Программа /sbin/update будет запускаться на каждом из уровней выполнения один раз.Реакция на нажатие комбинаций клавиш Ctrl+Alt+Del устанавливается спомощью действия ctrlaltdel.
Будет запущена программа shutdown для немедленной (now) перезагрузки (-г) системы. Задержка перед переключением нашестой уровень (перезагрузка) составит три секунды (-t3).Реакция на перебои с питанием устанавливается с помощью действийpowerfail и powerokwait.
В качестве реакции на событие powerfail будет запущена программа shutdown для останова системы (-h). Опция -f указывает,что при перезагрузке будет пропущена проверка файловой системы с помощью fsck. Задержка перед переключением на шестой уровень выполнениясоставит две минуты (+2). На всех активных терминалах пользователи увидят сообщение «Power Failure; System Shutting Down». Если в течение двухминут питание будет восстановлено, запустится программа shutdown дляотмены останова системы (-с).
На терминалах пользователей будет отображено сообщение «Power Restored; Shutdown Cancelled».Наглядным примером для действия respawn может послужить система X Window.Можете провести такой эксперимент: перейдите на уровень выполнения 5:init 5Если уровень 5 уже активен, этого делать, естественно, не нужно. Находясь в системе X Window, нажмите Ctrl+Alt+Backspace — эта комбинацияклавиш используется для экстренного останова системы X Window. Послеостанова система X Window будет перезапущена.5.6.
Сценарии загрузки системыВсе Red Hat-подобные системы, в отличие от BSD-подобных (Slackware),используют систему инициализации SysV, хотя и несколько переработанную.Примечание.Система инициализации — это набор файлов, необходимых для запуска операционной системы.
Обычно система инициализации представляет собой сценарии загрузкисистемы. В процессе развития Unix (см. гл. 1) выделились два основных типа систем — BSD-подобные системы и Sys ^-совместимые. Первые были совместимы (полностью или частично) с операционной системой BSD, разработанной Калифорнийскимуниверситетом, а вторые .использовали в качестве своего предка операционную систему Unix System V, разработанную компанией AT&T. Системы инициализации BSD иSysV отличаются набором входящих в них файлов и их назначением.Запуск и останов демонов осуществляется с помощью сценариев, расположенных в каталоге / e t c / r e .
d / i n i t . d . Демон — это программа, котораяв фоновом режиме периодически выполняет какие-нибудь действия. Например, демон ftpd непрерывно проверяет наличие пользовательских запросовна соединение по протоколу FTP.149ПроцессыСценарии каталога / e t c / r e . d выполняются автоматически при запускесистемы. В этом каталоге есть несколько подкаталогов rcN.d, где N — этономер уровня выполнения. В большинстве случаев у вас будет установленуровень 5 в качестве уровня по умолчанию.
Этот уровень соответствуетмногопользовательскому режиму с автоматическим запуском системы XWindow. В каталоге / e t c / r d . d / r c 5 .d находятся символические ссылки насценарии, расположенные в каталоге /etc/rc.d/init.d.Для запуска какого-нибудь демона нужно выполнить соответствующийему сценарий в каталоге / e t c / r c . d / i n i t .
d с опцией start. Для останованужно запустить тот же сценарий, но с опцией stop.Чтобы обеспечить автоматический запуск какого-нибудь сервера, нужно создать сценарий для его запуска и поместить его в каталоге /etc/rc.d/init.d.Затем, в зависимости от уровня выполнения, в каталоге rcN.d нужно создатьсимволическую ссылку на этот сценарий.Для выбора демонов, которые будут запускаться автоматически при загрузке системы, обычно используют профамму drakconf в операционной системе Linux Mandrake (см. рис.
5.2) или программу setup в ОС Red Hat Linux.Если вы хотите сами создать сценарий для запуска своего демона,можете воспользоваться приведенным ниже шаблоном (см. листинг 5.3).! .:т е^ '•,;,аУХ". •• /;.Настройка*••-••Ш.__ ._,., -...-. . . ---.;••••/'-. . . - . -вшшinternetConnectionSharing- •"''1тСтартовыесервисыДиспетчерBool-сервисов::.VjjjUUve updatemНастройкаВыйтиjРис. 5.2.
Конфигуратор DrakConfЛистинг 5.3. Шаблон для запуска демона#!/bin/basht Шаблон для запуска демона# Подключаем библиотеку функций. /etc/init.d/functions# Определяемы параметры750Изменениеразрешения .. Xш. . Networkand internetconfgurationQ)•#'• •Настройкаоборудования-0DrakFontiProfileManagerш|||(1и|ВыборdСтепеньсекретностиЯЯЙШйШLinuxeonfклавиатуры' ' • "-fei-€2AОбновлениеLinux-MandrakeMenu editorRpmDrakeUser endшШftDraKBoot^manager«Г'MouseDrakeПроцессыcase "$1" instart)# Запуск демонаecho "Starting my_daemon..."daemon my_daemontouch /var/lock/subsys/my_daemonstop)# Останов демонаkillproc my_daemonrm -f /var/lock/subsys/my_daemonrm -f /var/run/my_daemon.pidristatus)# Выводим статистику работыt/restart|reload)_# действия, выполняемые при перезагрузке демона# Произошел вызов без параметровecho "Usage: my_daemon { s t a r t | s t o p | s t a t u s | r e s t a r t | r e l o a d } "exit 1esacexit 0Теперь рассмотрим весь процесс загрузки системы, начиная с самогоначала: от включения питания.
Итак, вы включаете питание, система выполняет процедуру самотестирования POST (Power On Self Test). Если вовремя самотестирования ошибок обнаружено не было, из главной загрузочной записи MBR (Master Boot Record) вызывается загрузчик операционнойсистемы. Поиск загрузчика происходит на загрузочных устройствах в соответствии с последовательностью загрузки (Boot Sequence). Данная последовательность определяется в программе настройки компьютера — SETUP.Например, у вас может быть установлена такая последовательность загрузки:FLOPPY, HDD-0, CDROMВ этом случае система сначала будет искать загрузчик на дискете (диск А,устройство /dev/fdO).