Linux: Полное руководство
Шрифт:
Конфигурационный файл GRUB называется /boot/grub/grub.conf. В мгновенно устаревающих руководствах вы можете встретить другое название — /boot/grub/menu.1st — но это не страшно: этот файл является символической ссылкой на первый. Пример такого файла приведен ниже.
Листинг 9.2. Примерный файл /boot/grub/grub.conf
Закомментированная
Команда splashimage указывает, какой рисунок будет использован в качестве фона. Если у вас что-то не ладится с видеорежимом, закомментируйте это строку.
Труднее всего смириться с тем, как GRUB именует жесткие диски и их разделы. Диски отсчитываются не с буквы «а», а с нуля, а разделы — не с единицы, а тоже с нуля. Таким образом, раздел, который Linux именует
Команда rootnoverify нужна для не-Linux систем, a chainloader +1 —для ОС, понимающих только «цепочечную» загрузку (MBR → загрузочная запись активного раздела). Если вы зачем-то разместили Windows на неактивном разделе, откуда она сама загрузиться не сможет, то команде chainloader должна предшествовать команда makeactive.
GRUB имеет графический интерфейс, но попасть в его командную строку все-таки можно: увидев меню вторичного загрузчика, выберите курсором нужную позицию и нажмите <с> (нажав <Ввод>, вы загрузите выбранную систему, нажав <а>, вы сможете передать ядру дополнительные параметры, а нажав <е> — отредактировать последовательность команд, выполняемых при загрузке выбранной системы).
Итак, вы в командной строке. Редактировать вводимые команды можно в стиле bash: поддерживается автодополнение команд и путей к файлам, пролистывание истории команд стрелками «вверх» и «вниз». Список всех доступных команд можно получить по команде help, а получить краткую справку о команде — введя
Установить диспетчер загрузки GRUB (если вы не сделали этого при инсталляции системы) можно командой
Много интересных картинок, пригодных для установки в качестве фона загрузчика GRUB, можно найти по адресу
Выбранную картинку поместите в каталог
Собственную картинку можно использовать как фон для загрузчика, если преобразовать ее в формат, поддерживаемый GRUB. Преобразование выполняется утилитой convert, после чего картинку нужно сжать компрессором gzip:
9.1.2.
Продолжение загрузки.С момента загрузки ядра процесс начальной загрузки системы идет под управлением самой системы. Первой получает управление процедура автозапуска ядра. Она определяет объем доступной оперативной памяти, тип и быстродействие процессора, тип видеоадаптера, переинициализирует жесткие диски, не полагаясь на инициализацию, выполненную BIOS.
Это делается для того, чтобы выбрать из возможных вариантов выполнения ядром основных функций оптимизированные именно для данной архитектуры компьютера, повысив тем самым быстродействие всей системы. Здесь же определяется системная консоль, на которую выводятся диагностические сообщения.
Наконец, процедура автозапуска распаковывает загруженный в память образ ядра (на этом этапе вы видите сообщение: «Uncompressing Linux…») и передает ему управление («OK, booting the kernel»). Теперь ядро инициализирует таблицу страниц виртуальной памяти, устанавливает обработчики прерываний, разбирает параметры, переданные ему диспетчером загрузки, и настраивается в соответствии с ними.
Завершив самонастройку, ядро создает несколько системных «процессов», фактически представляющих собой части самого ядра: планировщик процессов, диспетчер виртуальной памяти, различные обработчики сигналов ядра.
В списке текущих процессов, который вы видели по команде
Ядро монтирует корневую файловую систему в режиме «только чтение», находит исполняемый файл демона init (в каталоге
Ядро покорно запустит в качестве первопроцесса любую программу, которую вы укажете ему как init:
Конечно, оболочка sh не запустит других процессов, но она предоставит вам интерфейс командной строки, в которой вы сможете выполнить необходимые ремонтные работы.
Процесс init прочитывает свой конфигурационный файл
Уровень выполнения (runlevel) — это такой режим работы системы, в котором разрешается существование только определенной группы процессов. В каждый момент времени система находится на одном из уровней выполнения (на каком именно, можно узнать по команде
Разрешенные на каждом уровне процессы указаны в файле