Шесть этапов загрузки Linux | OTUS
Запланируйте обучение с выгодой в Otus!
-15% на все курсы до 22.11 Забрать скидку! →
Выбрать курс

Шесть этапов загрузки Linux

Вы когда-нибудь задумывались, что происходит за кулисами с момента нажатия кнопки питания до появления приглашения для входа в Linux? Ниже приведены 6 этапов типичного процесса загрузки Linux.

loading_1024x767_1-1801-9284a9.jpg

А теперь обо всем по порядку.

1. BIOS

Что можно сказать про BIOS:

  1. BIOS означает базовую систему ввода/вывода.
  2. Выполняет некоторые проверки целостности системы.
  3. Ищет, загружает и запускает программу загрузчика.
  4. Он ищет загрузчик на дискете, компакт-диске или жестком диске. Вы можете нажать клавишу (обычно F12 или F2, но это зависит от вашей системы) во время запуска BIOS, чтобы изменить последовательность загрузки.
  5. Как только программа загрузчика обнаружена и загружена в память, BIOS передает ей управление.

Итак, говоря простым языком, BIOS загружает и запускает загрузчик MBR.

2. MBR

MBR расшифровывается как Master Boot Record. Он находится в 1-м секторе загрузочного диска. Обычно это /dev/hda или / dev/sda. MBR имеет размер менее 512 байт. Он состоит из трех компонентов: 1) информация основного загрузчика в первых 446 байтах; 2) информация таблицы разделов в следующих 64 байтах; 3) проверка правильности mbr в последних 2 байтах.

Он содержит информацию о GRUB (или LILO в старых системах).

Итак, проще говоря, MBR загружает и запускает загрузчик GRUB.

3. GRUB

GRUB расшифровывается как Grand Unified Bootloader.

Если в вашей системе установлено несколько образов ядра, вы можете выбрать, какой из них будет выполнен.

GRUB отображает экран-заставку, ждет несколько секунд, если вы ничего не вводите, загружает образ ядра по умолчанию, как указано в файле конфигурации grub. GRUB знает файловую систему (старый загрузчик Linux LILO не понимал файловую систему).

Файл конфигурации Grub – это /boot/grub/grub.conf (/etc/grub.conf – это ссылка на него). Ниже приведен пример файла grub.conf из CentOS.

# загрузка = / dev / sda
по умолчанию = 0
тайм-аут = 5
splashimage = (hd0,0) /boot/grub/splash.xpm.gz
скрытое меню
название CentOS (2.6.18-194.el5PAE)
корень (hd0,0)
ядро /boot/vmlinuz-2.6.18-194.el5PAE ro root = LABEL = /
initrd /boot/initrd-2.6.18-194.el5PAE.img

Как вы заметили из приведенной выше информации, он содержит ядро ​​и образ initrd. Проще говоря, GRUB просто загружает и выполняет образы ядра и initrd.

4. Ядро

Монтирует корневую файловую систему, как указано в «root =» в grub.conf Ядро выполняет программу /sbin/init.

Поскольку init была первой программой, выполняемой ядром Linux, она имеет идентификатор процесса (PID) 1. Выполните ps -ef | grep init и проверьте pid.

Также:

  • initrd означает начальный RAM-диск;
  • initrd используется ядром как временная корневая файловая система до тех пор, пока ядро ​​не загрузится и не смонтирована настоящая корневая файловая система. Он также содержит необходимые драйверы, скомпилированные внутри, которые помогают ему получить доступ к разделам жесткого диска и другому оборудованию.

5. Init

Смотрит на файл /etc/inittab, чтобы определить уровень запуска Linux.

Ниже приведены доступные уровни запуска:

  • 0 – остановка;
  • 1 – однопользовательский режим;
  • 2 – многопользовательский, без NFS;
  • 3 – полный многопользовательский режим;
  • 4 – не используется;
  • 5 – X11;
  • 6 – перезагрузка.

Init определяет уровень инициализации по умолчанию из/etc/inittab и использует его для загрузки всей соответствующей программы.

Выполните grep initdefault/etc/inittab в вашей системе, чтобы определить уровень запуска по умолчанию.

Если вы хотите попасть в затруднительное положение, вы можете установить уровень запуска по умолчанию на 0 или 6. Поскольку вы знаете, что означают 0 и 6, возможно, вы этого не сделаете.

Обычно вы устанавливаете уровень запуска по умолчанию на 3 или 5.

6. Runlevel

Когда система Linux загружается, вы можете увидеть запуск различных служб. Например, можно увидеть «запуск sendmail… В ПОРЯДКЕ”. Это программы уровня выполнения, выполняемые из каталога уровня выполнения, как определено вашим уровнем выполнения.

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

  • Уровень запуска 0 – /etc/rc.d/rc0.d/
  • Уровень выполнения 1 – /etc/rc.d/rc1.d/
  • Уровень выполнения 2 – /etc/rc.d/rc2.d/
  • Уровень запуска 3 – /etc/rc.d/rc3.d/
  • Уровень запуска 4 – /etc/rc.d/rc4.d/
  • Выполните уровень 5 – /etc/rc.d/rc5.d/
  • Уровень запуска 6 – /etc/rc.d/rc6.d/

Обратите внимание, что для этого каталога есть также символические ссылки, которые находятся непосредственно в /etc. Итак, /etc/rc0.d связан с /etc/rc.d/rc0.d.

В каталогах /etc/rc.d/rc*.d/ вы увидите программы, которые начинаются с S и K. Программы, начинающиеся с буквы S, используются при запуске. S для запуска. Программы, начинающиеся с K, используются при выключении. K для удаления. В названиях программ рядом с S и K есть цифры. Это порядковые номера, по которым программы должны быть запущены или завершены.

Например, S12syslog запускает демон syslog с порядковым номером 12. S80sendmail запускает демон sendmail с порядковым номером 80. Таким образом, программа syslog запускается перед sendmail.

Вот и все. Это то, что происходит в процессе загрузки Linux. Спасибо всем!

pinguin_1-1801-c40c84.jpeg

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто
Черная пятница в Otus! ⚡️
Скидка 15% на все курсы до 22.11 →