Загрузка системы на персональном компьютере

До этого момента описывалась общая схема начальной загрузки. Теперь некоторые наиболее важные (и сложные) ее этапы необходимо рассмотреть подробнее, проанализировав особенности функционирования Intel-систем.

Загрузка системы на персональном компьютере — это многоступенчатый процесс. Когда включается компьютер, начинает выполняться код, записанный на постоянном запоминающем устройстве. Точное его местонахождение и структура зависят от типа оборудования. В компьютерах, созданных специально для UNIX или другой коммерческой операционной системы, код "прошивается" разработчиком, который заранее задает алгоритм подключения устройств, базовой инициализации сети и распознавания локальных файловых систем. Это очень удобно для системного администратора. Ему достаточно ввести лишь имя нового файла ядра, а код постоянного запоминающего устройства автоматически обнаружит и прочитает этот файл.

На персональных компьютерах код начальной загрузки представлен в виде базовой подсистемы ввода-вывода — BIOS (Basic Input/Output System), которая чрезвычайно упрощена в сравнении с фирменным кодом UNIX-станций. В действительности в системе BIOS есть несколько уровней кода: для самого компьютера, для видеоплаты, для SCSI-адаптера, если таковой имеется, и иногда для других периферийных устройств вроде сетевых плат.

Встроенному коду BIOS известно об устройствах, расположенных на материнской плате, в частности о IDE- и SATA-контроллерах (и жестких дисках), плате сетевого адаптера, измерителе мощности и температуры, контроллере клавиатуры, последовательных и параллельных портах. SCSI-адаптеры знают только об устройствах, подключенных непосредственно к ним. К счастью, за последние несколько лет сложные взаимодействия, необходимые для обеспечения совместной работы этих устройств, были стандартизованы и теперь почти не требуют вмешательства оператора.

В режиме конфигурирования можно выбрать, с какого устройства требуется загружаться. Обычно последовательность загрузки задается в виде правила, например: "сначала — DVD, затем — "флешка" (USB drive), в последнюю очередь — жесткий диск". Распространенным вариантом также считается сетевая загрузка с помощью среды РХЕ (см. раздел 12.1).

Когда компьютер определил, с какого устройства следует загружаться, считывается его (устройства) первый блок. Этот сегмент (512 байт) называется главной загрузочной записью ^master boot record — MBR). В ней хранится программа, которая сообщает компьютеру о том, в каком разделе диска расположена программа вторичной загрузки (загрузчик операционной системы). Дополнительная информация о разделах дисков на персональных компьютерах и главной загрузочной записи.

Стандартная программа, находящаяся в главной загрузочной записи, дает компьютеру указание извлечь загрузчик операционной системы из первого раздела диска. В некоторых системах поддерживаются более сложные программы, которые могут работать с несколькими операционными системами и ядрами. Найдя раздел, с которого будет выполняться загрузка системы, программа главной загрузочной записи пытается запустить загрузочную программу, связанную с этим разделом. В случае успеха этой программе передаются полномочия по дальнейшей загрузке ядра.

GRUB: универсальный загрузчик

Программа GRUB (GRand Unified Boot loader), разработанная в рамках проекта GNU, используется как стандартный загрузчик в большинстве UNIX- и Linux-систем, оснащенных процессорами Intel. GRUB поставляется в составе многих дистрибутивов Linux и Solaris (с архитектурой х86) начиная с версии 10. Задача GRUB — выбрать из предварительно подготовленного списка ядро и загрузить его с опциями, заданными администратором.

Существует две ветви развития GRUB: оригинальная, официально именуемая "GRUB Legacy", и более новая — GRUB 2. Название "GRUB 2" может ввести в заблуждение, поскольку выпуски GRUB 2 в действительности имеют номера версий 1 и 2: Все наши примеры систем в настоящее время используют исходный вариант — GRUB Legacy, и именно эта версия описывается в данной книге. Версия GRUB 2 в концептуальном плане подобна исходной, но отличается синтаксисом файла конфигурации.

По умолчанию GRUB читает параметры загрузки из файла /boot/grub/menu. 1st или /boot/grub/grub. conf. Считывание содержимого файла конфигурации происходит в период запуска (что само по себе уже впечатляет), и это позволяет реализовать динамические изменения при каждой загрузке системы. Файлы menu. Ist и grub. conf отличаются незначительно, но имеют аналогичный синтаксис. Системы Red Hat используют файл grub.conf, a Solaris, SUSE и Ubuntu — файл menu. 1st. Вот образец файла grub.conf.

default=0

timeout=10

splashimage=(hdO,0)/boot/grub/splash.xpm.gz

title Red Hat Enterprise Linux Server (2.6.18-92.1.10.el5)

root (hd0,0)

kernel /vmlinuz-2.6.18-92.1.10.el5 ro root=LABEL=/

В этом примере конфигурируется единственная операционная система, которая будет загружена автоматически (default=0), если в течение 10 секунд с клавиатуры не поступят никакие данные (timeout=10). Корневая файловая система для конфигурации "Red Hat Enterprise Linux Server" находится в разделе (hdO, 0), что для GRUB означает обращение к первому разделу первого жесткого диска системы (нумерация "первый раздел" и "первый диск"определяется в BIOS).

Программа GRUB загрузит ядро из файла /vmlinuz-2.6.18-92.1.10.е15, а затем выведет начальный образ экрана, хранящийся в файле /boot/grub/splash.xpm.gz. Путь поиска ядра указывается относительно раздела загрузки, который обычно монтируется в каталоге /boot.

Программа GRUB поддерживает мощный интерфейс командной строки и ряд функций, которые позволяют редактировать записи файла конфигурации в ходе загрузки. Для того чтобы перейти в режим командной строки, в окне загрузки GRUB необходимо ввести команду с. Из командной строки можно загружать операционные системы, не отраженные в файле grub. conf, выводить на экран информацию о системе и выполнять простейшую проверку файловой системы. Загрузчик предоставляет также ряд функций, подобных функциям интерпретатора команд, в том числе — функции завершения не полностью введенных команд и перемещения курсора. Любые действия, которые могут быть выполнены с помощью файла grub. conf, могут быть выполнены и посредством командной строки загрузчика GRUB.

Нажатие клавиши <ТаЬ> позволяет вывести на экран краткий список доступных команд. Некоторые из наиболее полезных команд перечислены ниже:

reboot    Мягкая перезагрузка системы

find         Поиск файла во всех смонтированных логических разделах

root        Указание корневого устройства (логического раздела)

kernel     Загрузка ядра с корневого устройства

help        Вывод интерактивной справки по команде

boot       Загрузка системы с указанного образа ядра

 

Для получения подробной информации о загрузчике GRUB и его параметрах командной строки обратитесь к официальному руководству: gnu.org/software/grub/ manual.

 

Параметры ядра

Программа загрузчика GRUB позволяет передавать ядру параметры командной строки. Как правило, эти параметры изменяют значения параметров ядра, вынуждают его опросить конкретные устройства, указывают путь поиска демона init или назначают конкретное корневое устройство. Несколько примеров этих параметров приведены ниже:

 

acpi=of f                Отключает компоненты Advanced Configuration (усовершенствованный интерфейс

конфигурации) и Power Interface (интерфейс управления питанием)

init=/bin/bash      Заставляет ядро запускать только интерпретатор bash; используется при восстановлении системы в случае сбоев

root=/dev/f oo        Сообщает ядру о том, что корневым является устройство /dev/f oo

single     Задает режим однопользовательской загрузки (только для Linux. Используйте

ключ -sb системах Solaris — он предназначен для администраторов, знакомых
со стандартом OpenBoot в других CPU-архитектурах)

 

Параметры ядра, отредактированные во время загрузки, не сохраняются. Чтобы сохранить изменения на будущие перезагрузки, отредактируйте строку kernel в файле grub. conf или menu. 1st.

Ядро Linux постоянно совершенствуется с помощью заплат, повышающих уровень безопасности, исправлений ошибок и новых функций. Но, в отличие от других программных пакетов, старые версии ядра обычно не заменяются новыми. Новые ядра инсталлируются наряду со старыми, чтобы в случае возникновения проблемы вы могли тут же вернуться к старому ядру. Это соглашение помогает администраторам отказаться от модернизации, если заплата ядра разрушает их систему. По прошествии некоторого времени загрузочные меню GRUB заполняются различными версиями ядра. Обычно выбор версии ядра по умолчанию не представляет опасности, но если окажется, что ваша система не загружается после добавления заплаты, позаботьтесь о возможности выбора другого ядра.

Комментарии (0)

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.