Этапы загрузки linux


6 шагов загрузки Linux на пальцах / Хабр

SkyManPHP

Настройка Linux *

Перевод

Автор оригинала: Ramesh Natarajan

Нажмите кнопку включения питания на вашем системнике, и спустя несколько секунд вы увидите окно входа в систему.

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

Я предлагаю вам познакомиться со следующими уровнями типичной загрузки Linux:

1. BIOS

  • BIOS отвечает за базовый ввод/вывод данных с устройств/на устройства.
  • Делает некоторые проверки целостности устройств. К тому же, за тестирование работоспособности электроники отвечает POST (Power-on self-test, он же «тест на адекватность себя самого», выполняющийся как этап пре-загрузки), который управляется BIOS
  • Ищет, загружает и выполняет программу-загрузчик ОС
  • Берет загрузчик из флопика, сидюка или жесткого диска. Во время загрузки BIOS'а вы можете нажать на кнопку (обычно это F12 или F2 или Del, зависит от платформы), если вам требуется внести некоторые изменения касательно настройки железа.
  • Как только загрузчик был обнаружен и загружен в память, BIOS передает управление ему.
  • Короче говоря, BIOS загружает и выполняет загрузочную запись (MBR).

2. MBR

  • MBR — это главная загрузочная запись, хранящаяся на жестком диске
  • Она размещена в 1-м секторе загрузочного диска, например /dev/hda или /dev/sda
  • MBR занимает меньше, чем 512 байтов. Она состоит из трех компонентов: 1) главная загрузочная информация, «живущая» в первых 446 байтах; 2) информация о таблице разделов — в следующих 64 байтах; 3) и последние 2 байта нужны для проверки корректности mbr.
  • Она содержит информацию о GRUB'е (или LILO).
  • Простыми словами — MBR загружает и выполняет загрузчик GRUB.

3. GRUB

  • GRUB — Grand Unified Bootloader.
  • Если в вашей системе установлено более, чем одно ядро, у вас есть возможность выбирать, которое из них должен выполняться
  • GRUB отображает красивую анимацию plymouth заставку, и, подождав несколько секунд интерактивного воздействия пользователя, если он не нажал ни одной клавиши, он загружает ядро, установленное по умолчанию в файле конфигурации grub.
  • GRUB понимает, что такое файловая система (древние загрузчики Linux'а, например, LILO этого не понимают).
  • Конфигурационный файл Grub обычно лежит по пути /boot/grub/grub.conf (так же /etc/grub.conf может быть символьной ссылкой на него). Вот пример файла конфигурации для CentOS:
    #boot=/dev/sda<br>default=0<br>timeout=5<br>splashimage=(hd0,0)/boot/grub/splash.xpm.gz<br>hiddenmenu<br>title CentOS (2.6.18-194.el5PAE)<br>         root (hd0,0)<br>         kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/<br>         initrd /boot/initrd-2. 6.18-194.el5PAE.img
  • В качестве примечания к информации выше, конфигурационный файл содержит путь к ядру и образу initrd
  • Если быть кратким, GRUB просто напросто загружает и выполняет образы ядра и initrd.

4. Ядро или Kernel

  • Ядро монтирует файловую систему в соответствии с настройкой «root=» в фале grub.conf
  • Выполняет программу /sbin/init
  • Поскольку init — это первый процесс, запущенный ядром Linux, поэтому она имеет идентификатор процесса (PID) №1. Можете выполнить «ps -ef | grep init» и убедиться в этом.
  • initrd — это Initial RAM Disk, он же временный диск в оперативной памяти
  • initrd используется самим ядром в качестве временной корневой файловой системы, пока kernel не загрузится в реальную примонтированную файловую систему. Этот временный диск также содержит необходимые для загрузки драйверы, позволяющие получить доступ к разделам дисков и другому оборудованию

5.
Init
  • Смотрит в файл /etc/inittab для того, чтобы определить уровень выполнения (run level).
  • Есть следующие уровни выполнения:
    • 0 – прервать выполнение
    • 1 – Однопользовательский режим, так называемый «Single user mode», или иными словами, консоль восстановления
    • 2 – Многопользовательский режим без поддержки NFS
    • 3 – Полноценный многопользовательский режим
    • 4 – не используется
    • 5 – X11
    • 6 – перезагрузка
  • Init определяет уровень выполнения по умолчанию исходя из /etc/inittab и использует его для загрузки всех необходимых программ.
  • Выполните «grep initdefault /etc/inittab» на вашей системе, и вы узнаете, какой уровень по умолчанию у вас используется
  • Если у вас не получается жить спокойно, то можете установить стандартный уровень на 0 или 6. :)
  • В большинстве случаев вам будет достаточно уровня 3 или 5.

6.
Уровень выполнения программ (Runlevel)
  • Когда Линукс выполняет свою загрузку, вы можете наблюдать загрузку различных служб. К примеру, это могут быть сообщения типа «starting Postfix … OK» (запускается Postfix). Эти службы — и называются программами уровня выполнения, выполняемые из директории, которая соответствует нужному уровню выполнения.
  • Исходя из настроек по умолчанию, система будет выполнять файлы в соответствии с нижеприведенными директориями.
    • Выполнение уровня 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, потому что startup.
  • Программы, которые начинаются с литеры K используются — правильно — для завершения работы. K, потому что kill.
  • Еще есть номера рядом с буквами S и K в именах программ. Эти номера используются для определения порядка запуска этих программ.
  • К примеру, S12syslog предназначен для запуска демона syslog, его порядковый номер 12. S80sendmail — для запуска демона sendmail, имеющего порядковый номер 80. Таким образом, программа syslog будет запущена перед sendmail.

Вот и все. Возможно, некоторым из вас это не ново и особого интереса не было при чтении статью, поскольку она более ориентирована на начально-средний уровень знакомства з Линуксом.
В таком случае могу лишь сказать, что «повторение — мать учения» (с).

Дополнения, исправления, уточнения

В комментариях неоднократно было апеллировано к тексту статьи, поэтому, думаю, стоит учесть некоторые важные комментарии хабрасообщества. (спасибо artemlight, 3al, Tishka17, HhyperH, Next_Alex, Ilya_Shmelykh, Aux, soomrack, Xpeh )

  • artemlight:: «Ну скажем прямо — так грузятся далеко не все дистры». С ним согласилось большинство, отмечая и bsd-style init, u-boot, и хоть initrd в статье пропущен, стоить заметить, что он нужен ядру не во всех дистрибутивах. Также отмечено, что в slackware поддержка rc.d осуществляется только в качестве совместимости, а встраиваемые системы грузятся иначе. На декстопах иногда бывает EFI, а кроме того Linux популярен в мире embedded и там ещё куча разных платформ. Линукс в телефоне вообще иначе грузится.
  • soomrack, ссылая на википедию: Еще хочется сделать замечание по поводу MBR, первого сектора и пр. Все несколько усложнилось за последние годы. Сейчас уместней говорить о EFI.

    «GUID Partition Table (GPT) является стандартным форматом размещения таблиц разделов на физическом жестком диске. Он является частью Extensible Firmware Interface (EFI) (Расширяемый Микропрограммный Интерфейс) — стандарта, предложенного Intel на смену отжившего BIOS, одного из последних реликтов первозданной IBM PC. EFI использует GPT там, где BIOS использует Главную загрузочную запись (MBR)....»

  • Так же просили вспомнить о LILO. LILO, ми тебя помним! Привет!
  • Xpeh доплняет, что «BIOS (и не упомянутый тут (U)EFI) прежде всего занимается инициализацией устройств (в том числе загрузку собственных биосов PCI-устройств), про это ничего не написано. Хотя эта роль постепенно сокращается, так как всё больше железа инициализирует себя само и/или поддерживает горячее подключение и потому всё равно инициализируется ОС, но, например, инициализацию оперативной памяти он делает всегда. „
  • VolCh уточняет загрузку для ОС Debian-Ubuntu:
    Для Debian/Ubuntu:
    — каталога /etc/rc. d/ нет;
    — каталоги /etc/rc?.d/ настоящие каталоги, а не ссылки;
    — в этих каталогах хранятся ссылки на скрипты в каталоге /etc/init.d/

    Вручную лучше в /etc/rc?.d/ ничего не править, а использовать команду update-rc.d, которая позволяет создавать ссылки, удалять их, запрещать (фактически переименовывать c S* на K*) и разрешать (c K* на S*) запуск.

Теги:

  • linux
  • grub
  • mbr
  • bios
  • runlevel
  • boot
  • загрузка ос
  • systemV

Хабы:

  • Настройка Linux

Всего голосов 195: ↑177 и ↓18 +159

Просмотры

183K

Комментарии 87

Сергей @SkyManPHP

Пользователь

Комментарии Комментарии 87

Процесс загрузки Linux - Losst

Задумывались ли вы о том, как происходит загрузка операционной системы? Как компьютер узнаёт о том, где находится операционная система? Давайте рассмотрим процесс запуска Linux от включения компьютера и до входа в систему.

Практически каждый этап загрузки может идти несколькими путями. Например, вы узнаете о том, чем отличается BIOS от UEFI, что делает GRUB и чем его можно заменить, почему одного лишь ядра Linux недостаточно для функционирования операционной системы.

Содержание статьи:

Процесс загрузки Linux

Процесс загрузки операционной системы можно разбить на 5 этапов, причём первые три зависят от материнской платы. Ниже вы можете видеть схематичное изображение этапов загрузки Linux.

Как видите, до того, как загрузится ядро, процесс имеет существенные отличия. И всё же любая загрузка системы начинается с включения компьютера.

Первый этап: включение компьютера

Запуск компьютера с BIOS и UEFI отличается. Первый BIOS появился в середине 70-х годов, а MBR стали использовать с 1983 года. Стоит ли говорить о том, что для современного компьютера предпочтительнее использовать UEFI и GPT. А теперь перейдём непосредственно к рассмотрению первого этапа загрузки.

BIOS + MBR

BIOS – это базовая система ввода-вывода. Она представляет из себя набор программ для взаимодействия с устройствами компьютера. BIOS хранится на микросхеме EEPROM материнской платы. При каждом запуске компьютера плата автоматически отправляет код процессору на исполнение. Далее BIOS проводит проверку оборудования (тест POST) и обращается к жёсткому диску или твердотельному накопителю. От него ему нужны первые 512 байт, именно там находится главная загрузочная запись (MBR). Ниже вы можете видеть структуру MBR.

Если подпись MBR равна 55AAh, то система начинает выполнять код первичного загрузчика. В случае с Linux, MBR передаёт управление основному загрузчику GRUB. Он располагается сразу после MBR. До начала первого раздела на накопителе есть не менее 32 килобайт свободного места (современные системы оставляют 1 Мбайт), этого достаточно для того, чтобы разместить GRUB.

Таблица разделов в MBR имеет крайне скромный размер, есть место всего на 4 позиции. В связи с этим нельзя разметить накопители объёмом более 2 терабайт. К тому же она использует устаревшую адресацию, с цилиндрами, головками и секторами жёсткого диска.

На компьютерах с UEFI поддержка MBR никуда не делась, но для этого вам придётся активировать BIOS или CSM mode, в зависимости от производителя материнской платы. Это нужно для совместимости со старыми операционными системами.

UEFI + GPT

Интерфейс расширяемой прошивки EFI (позднее унифицированный UEFI) – это разработка Intel. Он был создан потому, что BIOS имеет ряд недостатков. К ним можно причислить работу в 16-битном режиме, последовательную проверку устройств и загрузку только через MBR.

Физически поменялось не многое, разве что FLASH-накопитель для хранения прошивки стал больше. Зато программная часть претерпела значительные изменения. UEFI работает в 32- и 64-битном режиме, поддерживает таблицу разделов GPT, может иметь красивый графический интерфейс, оболочку EFI Shell и управление с помощью мыши. К тому же опрос оборудования происходит гораздо быстрее.

Оглавление таблицы GPT располагается в первом логическом блоке (LBA 1). В GPT перешли к использованию логических блоков, к тому же их понимают современные жёсткие диски и SSD. Нулевой блок по-прежнему отдаётся под MBR, но в этот раз он выполняет защитную функцию, чтобы старые операционные системы не переписали GPT.

Каждой записи таблицы даётся 128 байт, что позволяет разметить накопители практически неограниченного объёма. Да и самих записей может быть больше 100.

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

После проверки устройств, UEFI может самостоятельно обратиться к таблице разделов GPT. В ней её интересует EFI раздел. Обычно под него выделяется 520-540 Мбайт. Такой размер связан с тем, что ранние версии EFI могли выдавать ошибку при работе с меньшим объёмом. Но Windows уже отходит от этой традиции и ограничивается 100 Мбайтами.

В разделе EFI обязательно должна быть папка EFI/BOOT, в ней находится загрузчик по умолчанию. Но никто не мешает добавить свой загрузчик, например, для Ubuntu и Windows.

К минусам UEFI можно отнести Secure Boot. Загрузчик без подписи просто не сможет быть использован. Эти меры направлены в первую очередь на компьютеры с Windows, чтобы не допустить использование старых систем на новых омпьютерах. Для Linux в этом случае приходится искать подписанный загрузчик или отключать Secure Boot, если имеется такая возможность.

PXE

Ещё одним способом загрузки является PXE – загрузка через сетевой интерфейс. Первичный загрузчик находится в ПЗУ сетевой карты. С его помощью карта через протокол TFTP получает основной загрузчик.

Этот способ загрузки будет работать как с BIOS, так и с UEFI. Он полезен для работы с тонкими клиентами и для установки операционной системы по сети.

Второй этап: загрузчик

Загрузчик подготавливает систему к загрузке ядра операционной системы. Например, для Linux он может передавать параметры запуска ядра. В зависимости от того, что используется, BIOS или UEFI, выбор загрузчика отличается.

Как можете видеть, в Ubuntu есть как .efi загрузчик, так и GRUB.

GRUB

GRUB – это основной загрузчик для большинства дистрибутивов Linux. Он примечателен тем, что позволяет не только запустить ядро Linux или другой операционной системы, но ещё и сам по себе способен выполнять некоторые операции. Он имеет собственную командную строку и в теории позволяет устранить собственные ошибки. GRUB существует в версиях как для BIOS, так и UEFI. Но последний не имеет цифровой подписи для Secure Boot.

Syslinux Project

Syslinux – это целое семейство, состоящее из трёх загрузчиков: syslinux, isolinux, pxelinux. Первый выполняет аналогичную GRUB функцию, isolinux подходит для работы с файловой системой компакт-дисков (используется для загрузочных Flash-нкопителей), pxelinux загружается по сети. Версия UEFI, как и в случае с GRUB, не имеет подписи.

rEFInd

Если же вы хотите иметь возможность выбора операционной системы при запуске компьютера с UEFI, то вам стоит установить rEFInd. Этот загрузчик имеет цифровую подпись и может передать управление другим загрузчикам формата .efi.

Ещё одним загрузчиком такого плана будет Clover. Его выбирают зачастую для работы на компьютерах Apple.

EFI BOOT STUB

Начиная с версии 3.3 ядра Linux можно упаковать ядро в .efi файл. Иными словами, загрузчиком будет выступать само ядро Linux.

Несмотря на такое разнообразие загрузчиков, некоторые пользователи до сих пор продолжают использовать LILO – один из первых мультизагрузчиков Linux. Несколько лет назад имел место быть даже EFI-загрузчик ELILO.

Третий этап: ядро

Дальше выполняется загрузка ядра Linux. Ядро лежит в папке boot под названием vmlinuz. «vm» в начале говорит о том, что ядро будет размещено в виртуальной памяти. А «z» на конце означает то, что ядро запаковано в архив и требует распаковку. Это возможно благодаря тому, что в начале архива находится исполняемый код.

В процессе запуска ядра настраивается оборудование, запускается менеджер памяти, планировщик задач и многое другое, необходимое для функционирования операционной системы.

Ядро Linux монолитное, драйверы устройств хранятся прямо в нём. Однако, это утверждение верно лишь отчасти. Большая часть периферийных устройств не имеет драйверов в ядре Linux. Вместо этого в оперативной памяти распаковывается ещё один файл во временной файловой системе – initrd.img.

После запуска всех необходимых служб временный раздел удаляется. Но это происходит не всегда. Например, он остаётся после запуска в режиме liveCD и при использовании тонкого клиента.

Четвертый этап: запуск пользовательских служб

Ядро загрузилось и работает. Но этого недостаточно для работы с операционной системой. Вы по-прежнему не можете взаимодействовать с ней на прикладном уровне. Для того, чтобы можно было что-то сделать в Linux, управление получает подсистема инициализации и управления службами. Обычно этот процесс имеет идентификационный номер PID-1.

Systemd

Systemd – это самая популярная система инициализации. Она хорошо распараллеливает задачи и практически вытеснила другие решения. Запускаются десятки служб. Например, такие, которые управляют звуковыми устройствами, мультимедийными клавишами, запускают графическую оболочку. Большая часть файлов подсистемы представлена конфигурационными файлами, ссылающимися на конкретные утилиты и сервисы, но есть и собственные службы.

Стоит пару слов уделить D-Bus. Эта служба позволяет процессам взаимодействовать друг с другом. Например, через неё служба управления звуковыми устройствами узнаёт о том, что была нажата клавиша увеличения громкости, распознанная другой службой. Такой подход позволяет создавать простые, но эффективные службы.

А ещё в комплект утилит Systemd входит супервизор. Он следит за тем, чтобы все критически важные службы работали. Если он заметит, что какой-то службы не хватает, то сразу же запустит её снова. Его также применяют для поддержания работы серверов.

Sysvinit, OpenRC и другие

Sysvinit считается устаревшей системой. Она следует принципам, заложенным ещё в 80-х годах для операционной системы Unix System V. Запуск служб происходит последовательно, а настройка производится с помощью скриптов, что несколько проще, чем у systemd.

Для дистрибутива Gentoo разрабатывается система инициализации OpenRC. Её можно назвать осовремененной sysvinit. Но важно понимать, что рядовому пользователю система инициализации безразлична, она интересует лишь тех, кто добавляет свои службы и утилиты в дистрибутив Linux.

О других системах, вроде Runit, Daemontools или S6, справедливо предыдущее утверждение, к тому же их доля совсем невелика. Хотя они тоже имеют свои особенности. После этого процесс загрузки Linux практически завершен.

Пятый этап: экранный менеджер и окружение рабочего стола

Нельзя списывать со счетов и дисплейный менеджер. Это по сути первая программа с графическим интерфейсом. Она отвечает за вход в систему. Хотя и до её запуска проводились некоторые работы, был запущен сервер X11 для обращения к видеокарте и обработки команд управления c мыши и клавиатуры.

После ввода пароля запускается оконный менеджер с библиотеками отображения (обычно GTK3 или Qt) и непосредственно само окружение рабочего стола. Эти службы отвечают за то, чтобы вы могли перемещать окна, перетаскивать файлы, иметь несколько рабочих столов и тому подобное. Всё, загрузка Linux выполнена и операционная система полностью готова к использованию!

Выводы

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

Что же касается выбора между BIOS и UEFI, то последний однозначно выигрывает. Как минимум потому, что он практически не тратит время на проверку оборудования, а также позволяет практически сразу передать управление ядру Linux.

6 этапов процесса загрузки Linux (последовательность запуска)

Рамеш Натараджан 7 февраля 2011 г.

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

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

Ниже приведены 6 высокоуровневых этапов типичного процесса загрузки Linux.

1. БИОС

  • BIOS расшифровывается как Basic Input/Output System
  • .
  • Выполняет некоторые проверки целостности системы
  • Ищет, загружает и выполняет программу загрузчика.
  • Ищет загрузчик на гибком диске, компакт-диске или жестком диске. Вы можете нажать клавишу (обычно F12 или F2, но это зависит от вашей системы) во время запуска BIOS, чтобы изменить последовательность загрузки.
  • Как только программа-загрузчик обнаружена и загружена в память, BIOS передает ей управление.
  • Итак, говоря простым языком, BIOS загружает и выполняет загрузчик MBR.

2. MBR

  • MBR означает основную загрузочную запись.
  • Находится в 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.
 #boot=/dev/sda по умолчанию=0 таймаут=5 изображение всплеска=(hd0,0)/загрузка/жратва/всплеск. 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 – Х11
      • 6 — перезагрузка
    • Init определяет уровень инициализации по умолчанию из /etc/inittab и использует его для загрузки всех соответствующих программ.
    • Выполните «grep initdefault /etc/inittab» в вашей системе, чтобы определить уровень запуска по умолчанию
    • Если вы хотите попасть в беду, вы можете установить уровень запуска по умолчанию на 0 или 6. Поскольку вы знаете, что означают 0 и 6, возможно, вы не сделаете этого.
    • Обычно уровень запуска по умолчанию устанавливается на 3 или 5.

    6. Программы уровня выполнения

    • При загрузке системы 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, используются во время завершения работы. К для убийства.
    • В именах программ рядом с S и K есть цифры. Это порядковый номер, в котором программы должны быть запущены или уничтожены.
    • Например, S12syslog предназначен для запуска демона системного журнала с порядковым номером 12. S80sendmail предназначен для запуска демона sendmail с порядковым номером 80. Таким образом, программа syslog будет запущена до sendmail.

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

    Твитнуть

    Добавить комментарий

    Если вам понравилась эта статья, вам также может понравиться...


    Отмечен как: Процесс загрузки Debian, Процесс загрузки Fedora, Процесс загрузки ядра Linux, Процесс загрузки Ubuntu, Процесс загрузки UNIX

    Основное руководство по различным этапам процесса загрузки Linux

    Каждый раз, когда вы включаете свой ПК с Linux, он проходит ряд этапов, прежде чем, наконец, отобразится экран входа в систему, который запрашивает ваше имя пользователя или пароль. Каждый дистрибутив Linux проходит 4 этапа типичного процесса загрузки.

    Запрос на вход пользователя

    В этом руководстве мы расскажем о различных шагах, предпринимаемых ОС Linux с момента ее включения до момента входа в систему. Обратите внимание, что в этом руководстве рассматриваются только загрузчик GRUB2 и systemd init, так как в настоящее время они используются подавляющим большинством современных дистрибутивов Linux.

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

    • BIOS Проверка целостности ( POST )
    • Загрузка загрузчика ( GRUB2 )
    • Инициализация ядра
    • Запуск systemd , родитель всех процессов

    1. Проверка целостности BIOS (POST)

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

    Когда система Linux включается, BIOS ( Basic Input Output System ) срабатывает и выполняет Power On Self Test ( POST ). Это проверка целостности, которая выполняет множество диагностических проверок.

    ПОСТ проверяет работоспособность оборудования таких компонентов, как жесткий диск или твердотельный накопитель , клавиатура , ОЗУ , порты USB и любое другое оборудование. Если какое-либо аппаратное устройство не обнаружено или если какое-либо из устройств неисправно, например поврежденный жесткий диск или твердотельный накопитель, на экране появляется сообщение об ошибке, требующее вашего вмешательства.

    В некоторых случаях раздается звуковой сигнал, особенно в случае отсутствия модуля оперативной памяти. Однако, если ожидаемое оборудование присутствует и работает должным образом, процесс загрузки переходит к следующему этапу.

    2. Загрузчик GRUB2

    MBR — это 512-байтовый код, который находится в первом секторе жесткого диска, обычно это /dev/sda или /dev/hda , в зависимости от архитектуры жесткого диска. Обратите внимание, однако, что иногда MBR может находиться на Live USB или DVD при установке Linux.

    В Linux существует 3 основных типа загрузчиков: LILO , GRUB, и GRUB2 . Загрузчик GRUB2 является последним и основным загрузчиком в современных дистрибутивах Linux и сообщает о нашем решении исключить два других, которые со временем устарели.

    GRUB2 означает GRand Unified Bootloader версия 2. Как только BIOS находит загрузчик grub2, он выполняет и загружает его в основную память ( RAM ).

    Меню grub2 позволяет сделать несколько вещей. Это позволяет вам выбрать версию ядра Linux, которую вы хотите использовать. Если вы обновляли свою систему пару раз, вы можете увидеть в списке разные версии ядра. Кроме того, он дает вам возможность редактировать некоторые параметры ядра, нажимая комбинацию клавиш клавиатуры.

    Выберите версию ядра

    Кроме того, в конфигурации с двойной загрузкой, когда у вас установлено несколько ОС, меню grub позволяет вам выбрать ОС для загрузки. Файл конфигурации grub2 — это файл /boot/grub2/grub2.cfg . Основная цель GRUB — загрузить ядро ​​Linux в оперативную память.

    3. Инициализация ядра

    Ядро является ядром любой системы Linux. Он связывает аппаратное обеспечение ПК с базовыми процессами. Ядро управляет всеми процессами в вашей системе Linux. Как только выбранное ядро ​​​​Linux загружается загрузчиком, оно должно самораспаковываться из своей сжатой версии, прежде чем выполнять какие-либо задачи. После самораспаковки выбранное ядро ​​монтирует корневую файловую систему и инициализирует /sbin/init программа, обычно называемая init .

    Процесс инициализации ядра

    Инициализация всегда выполняется первой программой, и ей присваивается идентификатор процесса или PID, равный 1. Это процесс инициализации, который порождает различные демоны и монтирует все разделы, указанные в /etc/fstab файл.

    Затем ядро ​​монтирует начальный RAM-диск ( initrd ), который является временной корневой файловой системой, пока не будет смонтирована реальная корневая файловая система. Все ядра расположены в /boot вместе с исходным образом RAM-диска.

    4. Запуск Systemd

    Наконец ядро ​​загружает Systemd , который заменяет старый SysV init. Systemd является матерью всех процессов Linux и управляет, среди прочего, монтированием файловых систем, запуском и остановкой служб, и это лишь некоторые из них.

    Systemd использует файл /etc/systemd/system/default.target для определения состояния или цели, в которой должна загружаться система Linux.

    • Для настольной рабочей станции (с графическим интерфейсом) целевое значение по умолчанию равно 5, что эквивалентно уровню выполнения 5 для старой версии SystemV init.
    • Для сервера целью по умолчанию является multi-user.target , что соответствует уровню запуска 3 в SysV init.

    Вот разбивка целей systemd:

    • poweroff.target (уровень запуска 0) : Выключение питания или завершение работы системы.
    • escape.target (уровень запуска 1) : запускает сеанс спасательной оболочки.
    • multi-user.target (уровень выполнения 2,3,4) : Настраивает систему на неграфическую (консольную) многопользовательскую систему.
    • graphical.target (runlevel 5) : Настройте систему на использование графического многопользовательского интерфейса с сетевыми службами.
    • reboot.target (уровень запуска 6) : перезагружает систему.

    Чтобы проверить текущую цель в вашей системе, выполните команду:

     $ systemctl get-default 
    Check Run Level

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

     $ initзначение-уровня-запуска 

    Например, init 3 переводит систему в неграфическое состояние.

    Команда init 6 перезагружает вашу систему, а init 0 выключает систему. Обязательно вызовите команду sudo , когда вы хотите переключиться на эти две цели.

    Процесс загрузки заканчивается, когда systemd загружает все демоны и устанавливает значение целевого уровня или уровня выполнения. Именно в этот момент вам будет предложено ввести имя пользователя и пароль, после чего вы получите доступ к своей системе Linux.

    Отзывы об учебнике...
    Была ли эта статья полезной? Если вы не нашли эту статью полезной или обнаружили устаревшую информацию, проблему или опечатку, оставьте ценный отзыв или предложения в комментариях, чтобы помочь улучшить эту статью.

    Learn more

    Только новые статьи

    Введите свой e-mail

    Видео-курс

    Blender для новичков

    Ваше имя:Ваш E-Mail: