Готовый перевод Linux Fundamentals, Part 4 / Основы Linux от основателя Gentoo. Часть 4: Booting the system
Загрузка системы
Об этом разделе
Данный раздел является обзором процедуры загрузки Linux. Мы охватим концепцию загрузчика, как настроить опции ядра для загрузки, и как проверить лог загрузки на наличие ошибок.
Процесс загрузки схож для всех машин, не зависимо от используемого дистрибутива. Рассмотрим следующиу пример жесткого диска:
+----------------+
| MBR |
+----------------+
| Partition 1: |
| Linux root (/) |
| containing |
| kernel and |
| system. |
+----------------+
| Partition 2: |
| Linux swap |
+----------------+
| Partition 3: |
| Windows 3.0 |
| (last booted |
| in 1992) |
+----------------+
В начале BIOS считывает первые несколько секторов вашего жесткого диска. Эти сектора содержат очень маленьккую программу, называемую "Master Boot Record" или "MBR". MBR содержит месторасположение ядра Linux на жестком диске (раздел 1 в примере выше), далее он загружает ядро в память и запускает его.
Процесс загрузки ядра
Следующая вещь, которую вы увидите (вероятнее всего на мгновение) - это строка, подбная слудующей:
Linux version 2.4.16 (root@time.flatmonk.org) (gcc version 2.95.3 20010315 (release)) #1 Sat Jan 12 19:23:04 EST 2002
Это первая строка, которая появляется при старте ядра. Первая часть содержит версию ядра, следующая - информацию о том, кто собрал ядро, каким компилятором, и когда оно было собрано.
Далее идет уйма строк выводимых ядром, которые касаются аппаратной части вашей системы: процессор, шина PCI, дисковый контроллер, диски, последовательные порты, флоппи дисководы, USB устройства, сетевые адаптеры, звуковые карты и возможно будут статусы других устройств.
/sbin/init
После окончания загрузки ядра, загружается программа init. Она же завершает работу системы при выключении. ID этого процесса всегда равен 1, в чем вы можете убедиться:
$ ps --pid 1
PID TTY TIME CMD
1 ? 00:00:04 init.system
Init заружает ваш дистрибутив используя ряд скриптов. Эти скрипты обычно находятся в /etc/rc.d/init.d или /etc/init.d и они выполняют функции такие как установка имени хоста системы, проверку файловой системы на ошибки, монтирование других файловых систем, активацию сети, запуск сервисов печати и т.д.. Когда скрипты завершают свои действия, init запускает программу getty, которая отобраает приглашение залогиниться.
Копаем глубже: LILO
Теперь, когда мы ознакомились с процессом загрузки, давайте подробнее рассмотрим первую часть: MBR и загрузку ядра. MBR отвечает за старт загрузчика. Двумя наиболее популярными загрузчиками для x86 Linux являются "LILO" (LInux LOader) и "GRUB" (GRand Unified Bootloader).
Из этих двоих, LILO - старший и более распространенный загрузчик. О том, что на вашей системе используется LILO, можно узнать по приглашению "LILO boot:". Учтите, что вам возможно нужно удерживать SHIFT при загрузке, чтобы получить приглашение, т.к. обычно система настроена на загрузку без остановок.
LILO нас встречает без особых аваций, но если нажать клавишу Tab, вам будет представлен список ядер (или других ОС) для загрузки. Чаще это только один пункт в списке. Вы можете загрузить один из них выбрав и нажав Enter. В качестве альтернативы вы можете просто нажать Enter и первый вариант из списка будет загружен по умолчанию.
Использование LILO
Иногда вам может стать нужным указать опцию для загрузки ядра. Некоторые из многочисленных доступных опций: root= для определения альтернативной корневой файловой системы, init= для альтернативой программы init (такой как init=/bin/sh для восстановления после краха системы), и mem= для определения количества памяти в системе (для примера mem=512M, в случае если автоопределяет только 128M).
Вы можете указать эти параметры ядра в коммандной строке зарузчика LILO:
LILO boot: linux root=/dev/hdb2 init=/bin/sh mem=512M
Если вам требуется регулярно использовать специфичные опции коммандной строки, вы можете подумать о добавлении их в /etc/lilo.conf. Формат этого файла описан в man странице lilo.conf(5).
Важные понятия LILO
До перехода на GRUB, там были важные понятия LILO. Всякий раз, когда вы делаете изменения в /etc/lilo.conf, или всякий раз, когда вы инсталлируете новое ядро, вы должны запускать lilo. Програма lilo перезаписывает MBR, отражая сделанные вами изменения, включая записывание абсолютного положения ядра на диске. Например, используем флаг -v для подробного вывода:
# lilo -v
LILO version 21.4-4, Copyright (C) 1992-1998 Werner Almesberger
'lba32' extensions Copyright (C) 1999,2000 John Coffman
Reading boot sector from /dev/hda
Merging with /boot/boot.b
Mapping message file /boot/message
Boot image: /boot/vmlinuz-2.2.16-22
Added linux *
/boot/boot.0300 exists - no backup copy made.
Writing boot sector.
Копаем глубже: GRUB-legacy
Загрузчик GRUB-legacy - другой популярный Linux загрузчик. GRUB-legacy поддерживает больше операционных систем, чем LILO, обеспечивает некоторую безопасность с использованием паролей в меню загрузки и проще для администрирования.
GRUB-legacy обычно устанавливается командами grub-install или grub-legacy-install. Однажды инсталлированный, меню GRUB-legacy администрируется редактированием файла /boot/grub/grub.conf. Но эти задачи выходят за рамки данного руководства, вы можете прочитать информационную страницу по GRUB-legacy до того, как попробуете установить или администрировать GRUB-legacy.
Использование GRUB-legacy
Для передачи параметру ядру вы можете нажать e в меню загрузки. Это обеспечивает вас возможностью для редактирования (снова нажмите e) любого именя ядра на загрузку или указания параметров для загрузки ядра. Когда вы закончили редактирование, нажмите b для загрузки ваших измеений.
dmesg
Загрузочные сообщения ядра и init скриптов обычно пролистываются очень быстро. Вы можете быть оповещены об ошибке, но сообщение изчезнет до того, как вы сможете должным образом прочитать его. В этом случае существует пара способов просмотреть эти сообщение просле загрузки системы (и надеюсь поймете как исправить их).
Если ошибка случается во время загрузки ядра или определения устройств, вы можете получить копию лога ядра используя команду dmesg:
Linux version 2.4.16 (root@time.flatmonk.org) (gcc version 2.95.3 20010315 (release)) #1 Sat Jan 12 19:23:04 EST 2002
Эй, мы узнаём эту строку! Это первая строка, которую выводит ядро призагрузке. Действительно, если вы выведите вывод команды dmesg на экран, вы сможете увидеть все сообщения, которые выводило ядро при загрузке, плюс любые сообщения ядра выводимые в консоль во время работы.
/var/log/messages
Второе место, где можно увидеть эту информацию, это файл /var/log/messages. Этот файл записыван демоном syslog, который принимает вывод от библиотек, демонов и ядра. Каждая строка в сообщениях содержит время. Этот файл является хорошим метом для поиска ошибок, которые случаются во время загрузки init скриптов. Для примера посмотрим нескольок последних сообщений от nameserver:
# grep named /var/log/messages | tail -3
Jan 12 20:17:41 time /usr/sbin/named[350]: listening on IPv4 interface lo, 127.0.0.1#53
Jan 12 20:17:41 time /usr/sbin/named[350]: listening on IPv4 interface eth0, 10.0.0.1#53
Jan 12 20:17:41 time /usr/sbin/named[350]: running
Дополнительная информация
Дополнительная информация относящаяся к этому разделу может быть найдена здесь:
Tutorial: Getting to know GRUB
LILO Mini-HOWTO
GRUB home
Kernel command-line options in /usr/src/linux/Documentation/kernel-parameters.txt.
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется
Переведено на Нотабеноиде
http://notabenoid.org/book/24016/79540
Переводчики: Bomber
Настройки
Готово:
