К основному контенту

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

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

Сразу после запуска компьютера появляется приглашение нажать специальную клавишу для запуска меню BIOS, если этого не сделать продолжится загрузка системы. Дальше мы рассмотрим что же происходит на каждом этапе загрузки linux.

Содержание статьи: Инициализация Загрузчик Подготовка ядра Инициализация ядра Система инициализации Инициализация

BIOS (Basic Input Output System) - это программное обеспечение, предварительно встроенное в чипсет материнской платы. BIOS загружает компьютер и сканирует все его оборудование, проверяет наличие и работоспособность устройств, таких как жесткий диск, CD-ROM, RAM. На этом этапе начинается процесс загрузки ОС Linux.

Затем BIOS ищет MBR (Master Boot Record), которая обычно расположена в первом секторе жесткого диска и запускает записанный там загрузчик первой степени, например, Grub или Lilo. BIOS подготавливает загрузчик MBR, загружает все данные в оперативную память и выполняет их.

MBR занимает первых 512 байт на жестком диске. Здесь содержится информация о загрузчике операционной системы, туда записываются загрузчики большинства операционных систем, например: Linux, Unix, WIndows.

Несмотря на то, что MBR занимает место на диске, эта область не принадлежит никакому разделу. Адрес MBR, как правило, дорожка 0, цилиндр 0. Это место зарезервировано для программ начальной загрузки. Она включает не только исполняемую программу загрузчика, но и таблицу разделов на диске.

BIOS сканирует MBR, находит загрузчик первой ступени, затем сканирует таблицу разделов и находит загрузчик второй степени на разделе, который отмечен как загрузочный. Загрузчик

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

Затем подгружаются файлы второй части загрузчика из загрузочного раздела жесткого диска. Например, Grub или Lilo. Такое разделение нужно, потому что весь код загрузчика в 512 байт не помещается.

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

В конфигурационном файле для каждого пункта записано ядро, которое и нужно загрузить. Обычно ядра находятся в папке /boot. Затем Grub загружает нужное ядро vmlinuz-версия Подготовка ядра

Здесь начинается загрузка ядра Linux. Grub резервирует место в оперативной памяти для образ Initrd, затем загружает туда этот образ. В этом образе содержится начальная файловая система, необходимые при ранней загрузке модули и утилиты, например, для работы с Btrfs или зашифрованным разделом. Затем загрузчик подготавливает ядро к загрузке и загружает необходимые модули, чтобы можно было начать процесс инициализации.

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

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

Инициализация ядра включает такие этапы: Инициализация компонентов процессора, например MMU Инициализация планировщика (PID 0) Монтирование файловой системы в режиме чтения и записи Форк процесса инициализации (PID 1)

В процессе инициализации ядро выполняет следующие задачи: Запуск основной системы и общего менеджера ресурсов (RAM, процессор, жесткий диск) Запуск процесса инициализации (/sbin/init) Система инициализации

Именно на этом этапе процесс загрузки Linux наиболее подвержен ошибкам. После того, как ядро передало управление системе инициализации, начинается подготовка системы к работе и запуск всех необходимых сервисов - логгирования, обмена системными сообщениями, настройка сети, подготовка сетевых файловых систем, настройка звука, монтирование локальных файловых систем и другие системные компоненты. На данный момент используется в большинстве случаев одна из двух самых популярных систем инициализации - SysVinit или Systemd.

Процесс загрузки в каждом из случаев немного отличается, но суть одна и та же.

В SysVinit сначала запускается программа /sbin/init, затем она читает файл параметров /etc/inittab чтобы определить нужный уровень запуска по умолчанию. Вот эти уровни загрузки Linux: 0 - выключение 1 - Однопользовательский режим 2 - Многопользовательский режим без сети 3 - Полноценный режим 4 - Не используется 5 - Запуск X11 6 - перезагрузка

Уровни загрузки Linux можно переключать и вручную, с помощью команды telinit. По умолчанию используется, обычно, уровень 5.

Затем выполняется скрипт /etc/rc.d/rc.sysinit, а также все скрипты из папки  /etc/rc.d/rcx, где x - номер уровня запуска. Например если мы загружаемся с уровнем запуска 5, то будут выполнены все скрипты из папки /etc/rc.d/rc5.d.

Имена скриптов запуска начинаются с буквы S, а завершения - K. После рассмотрения этой структуры, вы уже понимаете как работает автозагрузка сервисов в Linux? Теперь вы можете добавить скрипт в автозагрузку вручную просто создав символическую ссылку в нужной папке.

После выполнения всех этих действий системе остается только запустить все виртуальные консоли TTY и менеджер входа в систему, например XDM или SDDM.

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

Но суть процесса загрузки та же, запускаются такие же сервисы. Вместо уровней запуска используются специальные юниты - .target. Имя юнита содержит номер уровня запуска и слово runlevel. Например: runlevel0.target - отключение, и т д. Эти юниты и тянут за собой в зависимостях все необходимые сервисы для нормальной работы системы.

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Лучшие аналоги Paint для Linux

Когда я работал в Windows, я часто использовал стандартную программу редактора изображений Windows - Paint. Не всегда нужен очень и многофункциональный инструмент вроде Photoshop или Gimp. Иногда, чтобы подправить ту или иную картинку, дорисовать на ней несколько фигур или вставить текст достаточно простого, легкого в освоении графического редактора вроде Paint. В Linux таких программ довольно много. В этой инструкции мы рассмотрим лучшие аналоги Paint для Linux. В этот список не будут включены такие программы, как Gimp и Krita, ведь это полнофункциональные графические редакторы, векторные редакторы, такие как Inkscape мы тоже рассматривать не будем. А теперь перейдем к списку. Содержание статьи: KolourPaint MyPaint Gnome Paint XPaint Pinta mtPaint GPaint Rassam-paint Выводы KolourPaint На первом месте в списке аналогов Piant для Linux будет KoloutPaint. Это стандартный графический редактор для окружения рабочего стола KDE. Он поддерживает множество форматов изображений PNG, J…

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…