Познай свою ОС j1m (j1m@list.ru) Хакер, номер #080, стр. 080-098-3 3. Подключить swap, куда же без него. 4. Загрузить модули, так как поддержка некоторых ФС может находиться в модулях - это нужно сделать до их проверки и монтирования. 5. Проверить файловые системы на наличие ошибок. 6. Примонтировать все локальные ФС. 7. Очистить каталоги /tmp, /var/run и им подобные от временных файлов. 8. Установить системное время. 9. Установить нужный консольный шрифт и раскладку клавиатуры. 10. Поднять интерфейс обратной петли. А теперь посмотрим, как все это выглядит в стартовых скриптах. Если судить по файлу /etc/inittab из LFS, то для начальной инициализации необходимо запустить скрипт /etc/rc.d/init.d/rc с параметром sysinit (si::sysinit:/etc/rc.d/init.d/rc sysinit). Этот скрипт, в свою очередь, переходит в каталог /etc/rc.d/rcsysinit.d и запускает скрипты (которые на самом деле являются ссылками) в этом каталоге. Их запуск будет происходить в следующем порядке (он может не совпадать с порядком, предложенным мной): S00mountkernfs - монтирование ядерных ФС. Получив параметр start, скрипт проверяет, не смонтирован ли /proc и, в случае отрицательного ответа, подключает ее командой "mount -n /proc". Затем скрипт выясняет, поддерживает ли ядро файловую систему /sys и монтирует ее (mount -n /sys). S05modules - загрузка модулей. О том, поддерживает ли ядро модули, скрипт узнает по наличию файлов /proc/ksyms и /proc/modules. Далее следует чтение файла /etc/sysconfig/modules, в котором прописаны имена модулей и аргументы. К каждому из модулей применяется команда modprobe. S10udev - инициализация udev. Проверяется факт монтирования /sys и наличие файла /sbin/udev. Затем создается несколько полезных записей в каталоге /dev (например, "ln -s /proc/self/fd /dev/fd"). После проверки, не активирована ли уже udev, происходит монтирование виртуальной ФС к каталогу /dev (mount -n -t ramfs ramfs /dev). Это нужно для того, чтобы записи в каталоге создавались не на физическом диске, а в оперативной памяти. С помощью команды "echo /sbin/udevsend > /proc/sys/kernel/hotplug" ядру сообщается о том, что если к компу было подключено новое устройство, то об этом должно быть немедленно известно системе udev, чтобы та могла создать новый файл для этого устройства. Все, теперь можно запустить udev командой udevstart. S20swap - подключение swap. Здесь все предельно просто: одна команда "swapon -a", которая монтирует все имеющиеся swap-разделы. S30checkfs - проверка файловых систем. Проверка любой файловой системы осуществляется командой fsck, которая, в зависимости от типа ФС, запускает другую программу проверки с именем fsck.тип_фс (например, fsck.ext2 или fsck.reiserfs). Такие утилиты обычно распространяются в пакетах ext2progs, reiserfsprogs и им подобных. Теперь разберем, как выполняет проверку скрипт checkfs. Все начинается с подтверждения существования файла /fastboot (в некоторых дистрибутивах он может иметь имя /etc/fastboot). Наличие такого файла означает, что проверку осуществлять не нужно, поэтому скрипт, увидев его, немедленно завершается. Далее скрипт перемонтирует корневую ФС в режим read-only (mount -n -o remount,ro /) для того, чтобы обеспечить возможность ее проверки. Чтобы узнать, не нужно ли производить принудительную проверку всех ФС, даже если они были корректно размонтированы, скрипт ищет файл /forcefsck (в некоторых дистрах /etc/forcefsck). В случае, если такого файла не было найдено, выполняется команда "fsck -a -A -C -T", проверяющая все файловые системы, прописанные в /etc/fstab. |