Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Исследуем процесс загрузки Linux

(C) В.А.Костромин, 2007
(последние изменения в файл внесены 29.09.2007 г.)


Назад Оглавление Вперед

Этап 4: Ядро

4.2. Параметр "init="

Между прочим, имеется возможность посмотреть на состояние системы сразу после загрузки ядра. Одним из последних действий, выполняемых ядром в процессе инициализации, является запуск программы init, которая организует дальнейшую настройку системы, запуск всех необходимых служб и процессов. Однако с помощью параметра начальной загрузки "init=" можно заставить ядро вместо процесса init запустить любую другую программу (конечно, если это имеет смысл). Так вот, если в качестве такой программы указать оболочку bash, то мы фактически остановим процесс загрузки сразу после инициализации ядра. Задать параметр "init=/bin/bash" (или даже просто "init=bash", поскольку переменная PATH в этот момент равна "/usr/local/bin:/bin:/usr/bin") можно либо в файле /boot/grub/grub.lst (для загрузчика GRUB, для LILO это будет, соответственно, /etc/lilo.conf), либо в строке ввода загрузчика, либо же установить в процессе компиляции ядра в числе параметров загрузки, используемых по умолчанию.

Так как ядро - это основная программа, обеспечивающая работу аппаратуры, система в этот момент уже вполне работоспособна. Оболочка обеспечивает взаимодействие с пользователем. Таким образом, имеется возможность проанализировать состояние системы сразу после запуска ядра. А можно продолжить процесс загрузки в "ручном режиме", выполняя все (или часть) операций, обычно выполняемых процессом init, из командной строки. Но вторая возможность нас пока не интересует, давайте посмотрим, что мы имеем на данный момент на примере ситуации с моим тестовым компьютером.

Во-первых, выполним команду "whoami", которая скажет нам, что по умолчанию оболочка загружается от имени root-а (причем не спрашивая пароля, sig!). Команда "pwd" сообщает, что находимся мы в корневом каталоге. Состав подкаталогов в нем знакомый: bin, boot, dev, etc, home, lib, lost+found, media, mnt, opt, proc, root, sbin, selinux, srv, sys, usr, var. Непривычно только видеть подкаталог tftpboot. Однако, если заглянуть чуть глубже, то окажется, что каталоги boot и home пусты. Команда df показывает, что смонтировано только одно устройство /dev/hda3, хотя в файле /etc/fstab имеются записи для всех четырех разделов моего жесткого диска. После выполнения команды mount /dev/hda2 каталог /boot стал уже непустым, в нем появились те файлы, которые видны при стандартной загрузке.

Корневой каталог (с устройства /dev/hda3) оказался смонтированным только для чтения.

Вы можете сами поэкспериментировать с заданием параметра загрузки "init=", а мы перейдем к рассмотрению других параметров, обрабатываемых ядром.


Назад Оглавление Вперед