Без
init'a
Linux
невозможен.
..
За более чем два с половиной года, которые я читаю журнал, в
нем не упоминалась тема загрузки Linux'а (я имею в виду не U LO
и GRUB, а загрузку именно системы). Настало время осветить этот
вопрос.
загрузчиках вы можете прочитать
в статье Сергея ЯРЕМЧУКА «Как
грузят пингвины» (МК, № 46
48
(217, 219)). Так что мы начнем сра-
зу с загрузки ядра. О но, по сути, явля-
ется программой, которая после запус-
ка захватывает все ресурсы компьюте-
ра и потом раздает их по мере необ-
ходимости другим программам. Загруз-
чики при загрузке ядра могут переда-
вать ему параметры, руководствуясь ко-
торыми, ядро выполняет то или иное
действие. Знание этих параметров м о-
жет помочь правильно сконф игуриро-
вать ядро и наладить загрузку Linux. П о-
этому я приведу наиболее применяемые
из них, за исключением специфических
или редко используемых.
П арам етр r o o t задает корневую
файловую систему. Ядро при компиля-
ции запоминает устройство, на котором
оно собиралось, и считает его корне-
вым. Но так как ядро собирается на од-
ном компьютере, а используется на дру-
гих, то и устройства могут не совпасть.
Например, собирали ядро на устройст-
ве /d e v /h d a 2 , а при установке корне-
вая Ф С оказалась на /d e v /h d a 5 — в
таком случае ядро будет пытаться най-
ти Ф С на /d e v /h d a 2 и, не найдя, уст-
роит панику (panic), отказываясь грузить
систему. Задав параметр r o o t= /d e v /
hda5, можно указать ядру, где будет на-
ходиться корневая Ф С . Значением па-
раметра r o o t могут быть не только IDE-
устройства, но и SCSI-диски. Есть еще
особый случай — загрузка бездисковых
компьютеров по локальной сети. В этом
случае параметр будет выглядеть так:
r o o t= /d e v /n f s (nfs — N e tw o rk File Sys-
tem). При таком раскладе нужно ука-
зать еще один параметр n fs r o o t. Его
значение имеет вид n f
sroot=/<IP-an-
рес серверах/<устройство с корне-
вой ФС на сервере >/<параметры NFS>.
Следующие два параметра — го и
rw. Вернее, даже не два, а варианты
одного: г о говорит ядру, что корневая
Ф С должна быть смонтирована в режи-
ме «только для чтения», а rw, соответ-
ственно, «чтение-запись».
П араметр mem используется в том
случае, если ядро не видит всей памя-
ти, установленной в системе. Эта ситуа-
ция касается компьютеров с объемом
О ЗУ более 64 мегабайт. Используя этот
параметр, нужно просто указать объем
памяти, установленной в системе. На-
пример, если ядро видит 64 мегабайта,
а на самом деле их 256, то просто на-
пишите в конфигурационном файле за-
грузчика
mem=256
(в зависимости от за-
грузчика это может быть в разных мес-
тах конфига, смотрите справку по ва-
шему загрузчику), но здесь нужно быть
осторожным — нельзя указывать в этом
параметре памяти больше, чем ее есть,
иначе система будет виснуть при запус-
ке первой же программы или даже при
загрузке. Дело тут вот в чем: Linux рас-
р в »
Сергей ГАВРИЛЕНКО
пределяет память не с нижних адресов,
как W indows или DOS, а с верхних (то
есть не с начала, а с конца). Таким об-
разом удалось справиться с проблемой
первых 640 килобайт. И если указать
памяти больше, чем есть на самом де-
ле, то ядро, выделяя память для про-
грамм, будет обращаться к несущест-
вующим адресам и, не найдя их, «вис-
нуть».
Если ядро не определяет какие-то уст-
ройства или выдает ошибку при загруз-
ке, стоит воспользоваться параметром
debug,
который даст возможность ядру
выводить на консоль всю информацию
и сообщения. Если же проблемы настоль-
ко серьезные, что ядро выдает «Kernel
panic» — может помочь параметр
pan-
ic.
Суть вот в чем: ядро «в панике» ждет,
когда человек перезагрузит компьютер,
если же указать параметр
panic=<n се-
кунд»,
то ядро само перезагрузит ма-
шину через п секунд.
Еще одна проблема связана с про-
граммой
init
— единственным процес-
сом Linux'a, который работает наряду
с ядром, и имеет самый высокий статус
среди программ в системе. Ядро после
загрузки пытается запустить
init,
что-
бы передать ему бразды правления за-
грузкой оставшейся части системы. Но
может случиться, что исполняемый файл
init
поврежден или находится не там,
где его ищет ядро. В таком случае мо-
жет помочь параметр загрузки
init —
в качестве его аргумента можно ука-
зать место, где расположен резервный
файл программы или указать другую
программу, которая исполнится вместо
init.
В ядрах, которые не используют
de-
vfs,
для некоторых устройств нужно
указать особые параметры — их дос-
таточно большое количество, но один
нужно знать. Это параметр для CD-RW
приводов, который имеет
BHflhd*=ide-
scsi,
где
hd*
— ваш R W '
luhhk, причем
hd*
может принимать значения от
hda
до
hdd,
в зависимости от шины и рас-
положения на ней. В основном это
hdc
(Master на вторичной шине), хотя я ви-
дел и
hdd
(slave на вторичной шине).
Один совет: не сажайте CD-RW на slave,
после двух-трех выброшенных болва-
нок пожалеете.
После чтения параметров ядро мон-
тирует временную корневую Ф С , кото-
рая называется
initial ram disk
или
initrd,
и содержит модули ядра и про-
граммы, необходимые ядру для монти-
рования настоящей корневой файло-
вой системы. I n i t r d — это упакован-
ный образ, распаковывающийся в уча-
сток памяти, выделенный ему ядром при
старте системы. Далее следует опреде-
ление ядром аппаратной части компь-
ютера, монтирование настоящей кор-
невой Ф С и запуск журналирования яд-
ра. Последняя операция, которую яд-
ро выполняет непосредственно в про-
цессе загрузки, — запуск программы
i n i t . Программа i n i t является цен-
тральной программой системы и выпол-
няется при любых условиях, i n i t м о-
жет легально завершить работу только
в одном случае — при завершении ра-
боты системы. В остальных случаях, ес-
ли i n i t перестала работать, ядро пе-
резапускает ее. i n i t берет на себя ос-
новную работу по контролю за систе-
мой и работой программ.
При запуске i n i t читает свой кон-
фигурационный файл / e t c / in it t a b . В
этом файле содержатся настройки in it 'a
и действия, которые необходимо выпол-
нить при запуске. Ф айл / e t c / in it t a b
состоит
из
строк такого
ф ормата:
id :ru n le v e l:a c tio n :p ro c e s s , где id —
номер строки (не должно быть двух оди-
наковых id ); r u n le v e l — уровень запус-
ка системы (читайте ниже); p ro c e s s —
команда для выполнения; a c tio n — дей-
ствие, которое нужно выполнить над
p ro ce ss. Разновидности a c tio n строго
ограничены: w a it — ждать завершения
process; once — запустить pro ce ss один
раз; respaw n — перезапустить p ro c e s s
в случае завершения; o f f — завершить
p ro ce ss; b o o t — запускать p ro ce ss при
запуске системы.
Далее по регламенту (пишу под м ер-
ный писк системы «Рада» и народных
депутатов © ), поговорим об уровне за-
пуска, или r u n le v e l. У Linux- и Unix-
систем есть так называемые уровни за-
пуска — нечто вроде расписания в ми-
ре людей. Например: в понедельник ут-
ром мы идем на работу и, соответст-
венно, выполняем подготовительные про-
цедуры, в пятницу вечером, готовясь к
уходу домой и выходным, нам приходит-
ся делать соверш енно иные процеду-
ры, а, уезжая в командировку, мы со-
бираем вещи, берем билет на поезд
и т.д. Так и в Linux: при запуске систе-
мы необходимо выполнить одни про-
граммы, при останове — другие. Вот и
определили для Linux (описываю для Red
№ 9 /3 36 28 февраля-07 марта 2005
предыдущая страница 26 Мой Компьютер 2005 09 читать онлайн следующая страница 28 Мой Компьютер 2005 09 читать онлайн Домой Выключить/включить текст