Шесть этапов загрузки Linux
Вы когда-нибудь задумывались, что происходит за кулисами с момента нажатия кнопки питания до появления приглашения для входа в Linux? Ниже приведены 6 этапов типичного процесса загрузки Linux.
А теперь обо всем по порядку.
1. BIOS
Что можно сказать про BIOS:
- BIOS означает базовую систему ввода/вывода.
- Выполняет некоторые проверки целостности системы.
- Ищет, загружает и запускает программу загрузчика.
- Он ищет загрузчик на дискете, компакт-диске или жестком диске. Вы можете нажать клавишу (обычно F12 или F2, но это зависит от вашей системы) во время запуска BIOS, чтобы изменить последовательность загрузки.
- Как только программа загрузчика обнаружена и загружена в память, 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. Выполните
Также:
- 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. Спасибо всем!