Загрузка Linux

Загрузку OS Linux можно разделить на несколько Этапов.

Работа BIOS

Первым делом BIOS анализирует один из жестких дисков которые у него прописаны в качестве устройств для загрузки. Он пытается найти на нем таблицу разделов MBR и прочитать от туда первые 512 байт в которых написана информация по разделам на этом диске, а так же что делать дальше и кому стоит передать управление. Так как в 512 байтах особо много логики и возможностей не разместить эта часть диска используется только для хранения кода который способен просто передать управление чему то другому, в данном случае более функциональному загрузчику. Таким загрузчиком может быть GRUB. Этот код из 512 байт загружает код загрузчика GRUB в оперативную память и передает ему управление. Собственно сам GRUB при установке записывает дополнительно код загрузчика в те самые 512 байт. Так что в некотором смысле этот код тоже является частью загрузчика GRUB

Работа загрузчика GRUB

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

Для того, что бы GRUB смог загрузить Linux ему необходимо следующее:

  1. Номер устройства (диска) с которого нужно брать необходимые файлы

  2. Само ядро операционной системы

Ядро операционной системы Linux представляет из себя один файл размером примерно в 5 — 8 Mb и находится в директории /boot. Этот файл может называться по разному, но обычно, он либо называется либо имеет название linux, linuz иди vmlinuz. По мимо этого в названии может присутствовать версия самого ядра, к примеру: linuz-4.10. Буква z обозначает что код ядра был предварительно сжат.

  1. образ системы

Так как в этом файле нет ни каких драйверов устройств, это приводит к тому, что если просто загрузить в оперативную память ядро и передать ему управление оно не сможет дальше ничего сделать, так как не сможет работать ни с одним из устройств или жестких дисков. По этому, для того, что бы решить эту проблему, подготавливается специальный образ системы, который содержит в себе необходимые модули и другие компоненты для нормального функционирования ядра. Обычно этот файл называется или имеет в названии initrd. Он весит от 10 — 20 Mb и располагается там же в /boot

После того как пользователь выбирает какую именно операционную систему он хочет загрузить, GRUB находит соответствующие ей файлы ядра и образ системы, (файлы linux и initrd соответственно) размещает содержимое этих файлов в оперативной памяти и передает управление коду ядра.

Работа ядра

После того как ядро получило управление оно получает доступ к образу системы, которое для него было загружено загрузчиком в оперативную память из файла initrd и монтирует это как корневую директорию. затем ядро передает управление уже самой операционной системе. Для этого оно запускает один единственный процесс которые называется init и обычно расположен в /bin/init. Этот процесс получаете PID равный 1 и проводит всю остальную инициализацию системы.

Работа init

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>