Try English version of Quizful



Раздаем бесплатные Q! подробности в группе Quizful.Alpha-test
Партнеры
Рекрутерам: Прескрининг кандидатов about
Топ контрибуторов
loading
loading
Знаете ли Вы, что

Лучшие IT работодатели регулярно просматривают рейтинги и профили пользователей в поисках кандидатов. Для корректного отображения ваших данных рекомендуем заполнить ваш профиль и добавить информацию о вас и вашей профессии.

Лента обновлений
ссылка Sep 24 20:31
Комментарий от Anton__1998:
Вот это да.
ссылка Sep 24 07:08
Добавлен вопрос в тест C# - Средний уровень
ссылка Sep 24 03:33
Комментарий от Myxach:
Хмм, мне кажется или такие конструкции желательно не допу...
ссылка Sep 23 23:56
Добавлен вопрос в тест PHP 4 - Средний уровень
ссылка Sep 23 22:39
Комментарий от k0nstant1n:
Интересно, такие операторы где-то на практике использ...
Статистика

Тестов: 152, вопросов: 8545. Пройдено: 380734 / 1844236.

Последовательность загрузки Linux

head tail Статья
категория
Администрирование
дата15.07.2009
авторanalizer
голосов12

[Disclaimer: Данная статья была переведена в рамках "Конкурса на лучший перевод статьи" на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]

Последовательность загрузки Linux системы состоит из следующих этапов:

  1. BIOS
  2. MBR
  3. Загрузчик операционной системы
  4. Ядро
  5. init
  6. Уровни запуска (runlevel)

BIOS (Basic Input-Output System - базовая система ввода вывода)

BIOS - это интерфейс самого низкого уровня между компьютером и периферией, который ищет и исполняет загрузочный сектор на каком-либо устройстве хранения данных подключённых к компьютеру.

Как правило это:

  • Привод CD-ROM
  • Жёсткий диск
  • Дисковод (используются всё реже)

Список зависит от возможностей конкретного BIOS'а, а также вашего оборудования.

Приоритет загрузки может быть изменён в BIOS'е. Войти в меню настройки BIOS'а, как правило, можно нажав Del, F1, F2 или F10 во время загрузки компьютера.

MBR (Master Boot Record - главная загрузочная запись)

Первый сектор загружаемого устройства хранения данных зарезервирован под главную загрузочную запись. Когда происходит загрузка с устройства, BIOS загружает и исполняет загрузчик операционной системы (boot loader), находящийся в MBR.

В большинстве случаев загрузчик достаточно сложен и не может вместиться в 512 байт отведённые MBR. В этом случае в MBR находится так называемый stage1, программа которая просто загружает программу второго этапа загрузки операционной системы - stage2 (иногда в качестве stage2 загружается загрузочный сектор активного раздела, boot manager или программа авторизации и защиты доступа).

В частности, stage2 загрузчика GRUB считывает данные из файла /boot/grub/grub.conf (или /boot/grub/menu.lst, в зависимости от версии), который содержит список всех доступных операционных систем и их параметры загрузки. После этого на экран выводится список операционных систем из которого пользователь выбирает ОС для загрузки.

Загрузчик операционной системы

В некоторых случаях stage1 загрузчика GRUB (GRand Unified Bootloader) производит загрузку stage1.5 код которого находится в первых тридцати килобайтах устройства хранения данных следующих сразу за MBR, и уже stage1.5 производит загрузку stage2.

Когда stage2 получает управление, на экран выводится (псевдо)графическое меню для выбора пользователем ОС для загрузки. Стоит отметить, что параметры загрузки могут быть изменены из этого же меню, что позволяет восстановить систему после того как menu.lst или grub.conf были случайно испорчены.

Как только параметры загрузки были выбраны, GRUB загружает выбранное ядро в память и передаёт управление ядру, которое уже само продолжает загрузку системы. Также GRUB может передать управление не ядру, а другому загрузчику, используя так называемую цепную загрузку (chain loading), например загрузчику ОС не поддерживающей стандарт Multiboot.

Ядро

В свою очередь, ядро проверяет конфигурацию оборудования, инициализирует устройства и запускает initrd (опционально), после чего монтирует с устройство указанное в параметрах загрузки как "root" как корневую файловую систему.

Файловая система устройства определяется автоматически. Если по каким либо причинам монтирование не удаётся, система выдаёт kernel panic и загрузка останавливается.

После успешного монтирования файловой системы, ядро запускает демон init, которая получает идентификатор процесса равный единице и запускает оставшуюся часть системы.

init

init - это последний шаг в последовательности загрузки системы. init является родителем (или же более далёким предком) для всех процессов исполняемых в системе. Этот процесс запускается первым в системе и его запуск производится непосредственно ядром. Он же запускает все системные процессы так как это указано в /etc/inittab.

Покуда система работает, init не будет завершён. Стоит отметить что init - пользовательский процесс, а не системный, не смотря на то что он запущен от root'а.

Уровни запуска (runlevel)

Каждая запись в /etc/inittab содержит так называемый "уровень запуска" для процесса, т.е. информацию о том на каком уровне запуска системы данный процесс должен быть запущен.

В Linux системах существует семь возможных значений для уровня запуска: от 0 до 6 включительно:

  1. Останов системы
  2. Однопользовательский режим
  3. Определяется пользователем, как правило это многопользовательский режим без поддержки сети и графической оболочки
  4. Многопользовательский режим без графической оболочки
  5. Определяется пользователем, как правило, не используется
  6. Многопользовательский режим с графической оболочкой
  7. Перезагрузка

Основываясь на текущем уровне запуска, init запускает скрипты находящиеся в поддиректориях /etc/rc.d/, для каждого уровня запуска существует своя поддиректория, от /etc/rc.d/rc0.d до /etc/rc.d/rc6.d.

В действительности же запуск скриптов каждого уровня запуска выполняется скриптом /etc/rc который вызывается на каждом уровне запуска с параметром равным текущему уровню. Вызов же /etc/rc параметром прописан в /etc/inittab, для каждого из возможных уровней запуска.

Уровень запуска по умолчанию определяется записью в /etc/inittab:

id:3:initdefault:

Текущий уровень запуска может быть изменён путём вызова:

/sbin/telinit #

Где # - желаемый уровень запуска. Т.е. вызов "/sbin/telinit 6" приведёт к перезагрузке системы.

----------
Оригинальный текст статьи: Linux Boot Sequence

Если Вам понравилась статья, проголосуйте за нее

Голосов: 12  loading...
pasis   c0nst   yohan   googperson   googman   googler   admin   l7l23qp   globus   misha91   neepolas   stokarev