Установить диспетчер загрузки GRUB (если вы не сделали этого при инсталляции системы) можно командой /sbin/grub-install /dev/hda
. Утилита grub-install, как и все остальные компоненты GRUB, содержится в пакете grub, который можно скачать по адресу http://www.sisyphus.ru/srpm/grub
.
Как установить графический фон загрузчика GRUB
Много интересных картинок, пригодных для установки в качестве фона загрузчика GRUB, можно найти по адресу http://ruslug.rutgers.edu/~mcgrof/grub-images/images/working-splashimages.
Чтобы не загружать все эти картинки, можно просмотреть их уменьшенные изображения по адресу http://ruslug.rutgers.edu/~mcgrof/grub-images/images
, а потом уже загрузить понравившуюся картинку.
Выбранную картинку поместите в каталог /boot/grub
и укажите ее в директиве splashimage конфигурационного файла:
splashimage=(hd0,0)/boot/grub/image.xpm.gz
Собственную картинку можно использовать как фон для загрузчика, если преобразовать ее в формат, поддерживаемый GRUB. Преобразование выполняется утилитой convert, после чего картинку нужно сжать компрессором gzip:
# convert myimage.png -colors 14 -resize 640x480 myimage.xpm
# gzip myimage.xpm
9.1.2. Продолжение загрузки.
Демон init
С момента загрузки ядра процесс начальной загрузки системы идет под управлением самой системы. Первой получает управление процедура автозапуска ядра. Она определяет объем доступной оперативной памяти, тип и быстродействие процессора, тип видеоадаптера, переинициализирует жесткие диски, не полагаясь на инициализацию, выполненную BIOS.
Это делается для того, чтобы выбрать из возможных вариантов выполнения ядром основных функций оптимизированные именно для данной архитектуры компьютера, повысив тем самым быстродействие всей системы. Здесь же определяется системная консоль, на которую выводятся диагностические сообщения.
Наконец, процедура автозапуска распаковывает загруженный в память образ ядра (на этом этапе вы видите сообщение: «Uncompressing Linux…») и передает ему управление («OK, booting the kernel»). Теперь ядро инициализирует таблицу страниц виртуальной памяти, устанавливает обработчики прерываний, разбирает параметры, переданные ему диспетчером загрузки, и настраивается в соответствии с ними.
Завершив самонастройку, ядро создает несколько системных «процессов», фактически представляющих собой части самого ядра: планировщик процессов, диспетчер виртуальной памяти, различные обработчики сигналов ядра.
В списке текущих процессов, который вы видели по команде ps -e
, эти системные процессы взяты в квадратные скобки. Один из них получает идентификатор 1, он-то и станет полноценным пользовательским процессом, в котором будет выполняться код демона init. Этот демон запустит все остальные службы и процессы, управляющие базовыми операциями: например, входом пользователей в систему.
Ядро монтирует корневую файловую систему в режиме «только чтение», находит исполняемый файл демона init(в каталоге /bin
, /sbin
или там, где вы укажете, передав ядру параметр init=/путь_к_init
) и посредством системного вызова exec() загружает его код в процесс номер 1. Все остальные процессы порождает init и его потомки путем деления с помощью системного вызова fork() .
Примечание
Ядро покорно запустит в качестве первопроцесса любую программу, которую вы укажете ему как init:
LILO: my_linux init=/bin/sh
Конечно, оболочка shне запустит других процессов, но она предоставит вам интерфейс командной строки, в которой вы сможете выполнить необходимые ремонтные работы.
Процесс initпрочитывает свой конфигурационный файл /etc/inittab
и запускает другие процессы согласно указанным в нем инструкциям. В этот момент выводится приглашение нажать определенную клавишу (обычно ), чтобы войти в интерактивный режим, позволяющий запускать каждый процесс вручную или отказываться от такого запуска.
Уровни выполнения
Уровень выполнения ( runlevel ) — это такой режим работы системы, в котором разрешается существование только определенной группы процессов. В каждый момент времени система находится на одном из уровней выполнения (на каком именно, можно узнать по команде who -r
. Она покажет также значение предыдущего уровня).
Разрешенные на каждом уровне процессы указаны в файле /etc/inittab
. Демон initзаведует переключением уровней, остановкой запрещенных на новом уровне процессов и запуском предписанных. В ОС Linux определено:
Читать дальше
Конец ознакомительного отрывка
Купить книгу