Обзор процесса загрузки
Программа init управляет запуском системы, а затем поддерживает работу системы. Например, когда процессы умирают, именно
init собирает значения их статуса выхода, чтобы ядро могло выполнить их выгрузку. Конкретные процедуры запуска меняются от одной версии Linux к другой. В данном случае нашу тестовую систему будет запускать версия
init
из busybox.
Возможно, возникнет вопрос, почему в предыдущем стартовом скрипте используется
exec /sbin/init вместо того, чтобы просто запустить
init. Причина этого в том, что стартовый скрипт был прежним
initи у него был специальный ID 1. Программа
init становится системным стартовым демоном, только если ее ID равен 1;
exec заставляет ее перехватить идентификатор процесса вызывающей оболочки, а не запрашивать новый.
Программа init начинает работу с запуска первого системного стартового скрипта,
/etc/init.d/rcS. (Если такого файла нет, она выводит предупреждающее сообщение и продолжает без него.) После этого она работает в соответствии с инструкциями в
/etc/inittab, если он существует. В отсутствие
/etc/inittab программа
init из busybox запускает командный процессор в консоли и аккуратно обрабатывает запросы на перезагрузку и останов.
Теперь, когда у нас есть свое ядро, слегка изменённый initrd и своя собственная корневая файловая система, можно загрузить систему до получения приглашения командной строки. Если есть файл
rcS система должна выдать приветствие по завершении загрузки. Теперь имеется рабочая, хоть и довольно скромная, Linux-система, собранная целиком из исходных текстов и вручную
Что делать дальше, зависит от потребностей. Я предлагаю установить какие-нибудь видеоигры, но кто-то может предпочесть сконфигурировать систему под сервер базы данных или веб-сервер. Если планируется делать что-то, что потребует большой дисковой активности, следует рассмотреть использование внешнего жесткого диска, подключенного через USB.