Linux Fundamentals, Part 4 / Основы Linux от основателя Gentoo. Часть 4: Booting the system
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Загрузка системы Bomber 03.12.11 в 13:24 |
|
|
Данный раздел является обзором процедуры загрузки Linux. Мы охватим концепцию загрузчика, как настроить опции ядра для загрузки, и как проверить лог загрузки на наличие ошибок. Bomber 03.12.11 в 13:27 |
||
|
Процесс загрузки схож для всех машин, не зависимо от используемого дистрибутива. Рассмотрим следующиу пример жесткого диска: Bomber 03.12.11 в 13:28 |
||
|
+----------------+ Bomber 03.12.11 в 13:28 |
||
|
В начале BIOS считывает первые несколько секторов вашего жесткого диска. Эти сектора содержат очень маленьккую программу, называемую "Master Boot Record" или "MBR". MBR содержит месторасположение ядра Linux на жестком диске (раздел 1 в примере выше), далее он загружает ядро в память и запускает его. Bomber 03.12.11 в 13:31 |
||
|
Следующая вещь, которую вы увидите (вероятнее всего на мгновение) - это строка, подбная слудующей: Bomber 03.12.11 в 13:34 |
||
|
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 Bomber 03.12.11 в 13:35 |
||
|
Это первая строка, которая появляется при старте ядра. Первая часть содержит версию ядра, следующая - информацию о том, кто собрал ядро, каким компилятором, и когда оно было собрано. Bomber 03.12.11 в 13:41 |
||
|
Далее идет уйма строк выводимых ядром, которые касаются аппаратной части вашей системы: процессор, шина PCI, дисковый контроллер, диски, последовательные порты, флоппи дисководы, USB устройства, сетевые адаптеры, звуковые карты и возможно будут статусы других устройств. Bomber 03.12.11 в 13:47 |
||
|
После окончания загрузки ядра, загружается программа init. Она же завершает работу системы при выключении. ID этого процесса всегда равен 1, в чем вы можете убедиться: Bomber 03.12.11 в 13:54 |
||
|
$ ps --pid 1 Bomber 03.12.11 в 13:55 |
||
|
Init заружает ваш дистрибутив используя ряд скриптов. Эти скрипты обычно находятся в /etc/rc.d/init.d или /etc/init.d и они выполняют функции такие как установка имени хоста системы, проверку файловой системы на ошибки, монтирование других файловых систем, активацию сети, запуск сервисов печати и т.д.. Когда скрипты завершают свои действия, init запускает программу getty, которая отобраает приглашение залогиниться. Bomber 03.12.11 в 14:01 |
||
|
Теперь, когда мы ознакомились с процессом загрузки, давайте подробнее рассмотрим первую часть: MBR и загрузку ядра. MBR отвечает за старт загрузчика. Двумя наиболее популярными загрузчиками для x86 Linux являются "LILO" (LInux LOader) и "GRUB" (GRand Unified Bootloader). Bomber 03.12.11 в 14:08 |
||
|
Из этих двоих, LILO - старший и более распространенный загрузчик. О том, что на вашей системе используется LILO, можно узнать по приглашению "LILO boot:". Учтите, что вам возможно нужно удерживать SHIFT при загрузке, чтобы получить приглашение, т.к. обычно система настроена на загрузку без остановок. Bomber 03.12.11 в 14:13 |
||
|
LILO нас встречает без особых аваций, но если нажать клавишу Tab, вам будет представлен список ядер (или других ОС) для загрузки. Чаще это только один пункт в списке. Вы можете загрузить один из них выбрав и нажав Enter. В качестве альтернативы вы можете просто нажать Enter и первый вариант из списка будет загружен по умолчанию. Bomber 03.12.11 в 14:20 |
||
|
Иногда вам может стать нужным указать опцию для загрузки ядра. Некоторые из многочисленных доступных опций: root= для определения альтернативной корневой файловой системы, init= для альтернативой программы init (такой как init=/bin/sh для восстановления после краха системы), и mem= для определения количества памяти в системе (для примера mem=512M, в случае если автоопределяет только 128M). Bomber 03.12.11 в 14:29 |
||
|
LILO boot: linux root=/dev/hdb2 init=/bin/sh mem=512M Bomber 03.12.11 в 14:29 |
||
|
Если вам требуется регулярно использовать специфичные опции коммандной строки, вы можете подумать о добавлении их в /etc/lilo.conf. Формат этого файла описан в man странице lilo.conf(5). Bomber 03.12.11 в 14:33 |
||
|
До перехода на GRUB, там были важные понятия LILO. Всякий раз, когда вы делаете изменения в /etc/lilo.conf, или всякий раз, когда вы инсталлируете новое ядро, вы должны запускать lilo. Програма lilo перезаписывает MBR, отражая сделанные вами изменения, включая записывание абсолютного положения ядра на диске. Например, используем флаг -v для подробного вывода: Bomber 03.12.11 в 14:40 |
||
|
# lilo -v Bomber 03.12.11 в 14:41 |
||
|
Reading boot sector from /dev/hda Bomber 03.12.11 в 14:42 |
||
|
Копаем глубже: GRUB-legacy Bomber 03.12.11 в 14:43 |
||
|
Загрузчик GRUB-legacy - другой популярный Linux загрузчик. GRUB-legacy поддерживает больше операционных систем, чем LILO, обеспечивает некоторую безопасность с использованием паролей в меню загрузки и проще для администрирования. Bomber 03.12.11 в 14:44 |
||
|
GRUB-legacy обычно устанавливается командами grub-install или grub-legacy-install. Однажды инсталлированный, меню GRUB-legacy администрируется редактированием файла /boot/grub/grub.conf. Но эти задачи выходят за рамки данного руководства, вы можете прочитать информационную страницу по GRUB-legacy до того, как попробуете установить или администрировать GRUB-legacy. Bomber 03.12.11 в 14:49 |
||
|
Для передачи параметру ядру вы можете нажать e в меню загрузки. Это обеспечивает вас возможностью для редактирования (снова нажмите e) любого именя ядра на загрузку или указания параметров для загрузки ядра. Когда вы закончили редактирование, нажмите b для загрузки ваших измеений. Bomber 03.12.11 в 14:52 |
||
|
Загрузочные сообщения ядра и init скриптов обычно пролистываются очень быстро. Вы можете быть оповещены об ошибке, но сообщение изчезнет до того, как вы сможете должным образом прочитать его. В этом случае существует пара способов просмотреть эти сообщение просле загрузки системы (и надеюсь поймете как исправить их). Bomber 03.12.11 в 20:28 |
||
|
Если ошибка случается во время загрузки ядра или определения устройств, вы можете получить копию лога ядра используя команду dmesg: Bomber 03.12.11 в 20:30 |
||
|
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 Bomber 03.12.11 в 20:30 |
||
|
Эй, мы узнаём эту строку! Это первая строка, которую выводит ядро призагрузке. Действительно, если вы выведите вывод команды dmesg на экран, вы сможете увидеть все сообщения, которые выводило ядро при загрузке, плюс любые сообщения ядра выводимые в консоль во время работы. Bomber 03.12.11 в 20:36 |
||
|
Второе место, где можно увидеть эту информацию, это файл /var/log/messages. Этот файл записыван демоном syslog, который принимает вывод от библиотек, демонов и ядра. Каждая строка в сообщениях содержит время. Этот файл является хорошим метом для поиска ошибок, которые случаются во время загрузки init скриптов. Для примера посмотрим нескольок последних сообщений от nameserver: Bomber 03.12.11 в 20:41 |
||
|
# grep named /var/log/messages | tail -3 Bomber 03.12.11 в 20:41 |
||
|
Дополнительная информация Bomber 03.12.11 в 20:41 |
||
|
Дополнительная информация относящаяся к этому разделу может быть найдена здесь: Bomber 03.12.11 в 20:42 |
||
|
Tutorial: Getting to know GRUB Bomber 03.12.11 в 20:42 |
