ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

5 минут чтени€

 аждое семейство операционных систем производит загрузку по-своему. Ёто св€занно с различной архитектурой €дра операционной системы, разными инструкци€ми по работе с подключенными устройствами. ¬ данной статье попробую разобрать загрузку попул€рной операционной системы на €дре Linux Ubuntu.

—хематично процесс загрузки можно отобразить следующим образом.

—хематично процесс загрузки

«агружаемс€

»так, Ќажимаем кнопку включени€ компьютера, и центральный процессор переходит на адрес BIOS. BIOS или UEFI, в более современных компьютерах, проводит систему проверок и выбирает носитель информации с которого будет производитс€ загрузка операционной системы. Ќа носителе находитс€ MBR (Master Boot Record) или GPT (Guid Partition table) на новых компьютерах в которых находитс€ загрузчик. ј дальше уже в зависимости от настройки. «агрузчик может самосто€тельно загружать операционную систему, а может передавать управление следующему загрузчику. Ќапример, если Windows и Linux установлены на одном компьютере и наход€тс€ на разных разделах жесткого диска.

¬ любом случае, если идет речь о Linux у нас есть перва€ стади€ с небольшой частью кода, котора€ загружает у нас загрузчик. «агрузчик знает где лежит €дро операционной системы, загружает €дро, загружает initial run disk, там наход€тс€ необходимые файлы и модули дл€ загрузки €дра. ƒалее уже €дро берет процесс управлени€ на себ€. ѕроисходит инициализаци€ устройств, конфигурирование процессов пам€ти и так далее. ѕосле всех этих процессов €дро запускает процесс init.

¬ернемс€ к вопросу загрузчиков, дл€ каждой операционной системы разработан свой загрузчик, а иногда и несколько. NTLDR - «агрузчик операционной системы Windows, LILO - один из стандартных загрузчиков дл€ Linux и BSD системы. GRUB - загрузчик операционной системы от проекта GNU. Ќас интересуют последние два. ƒанные загрузчики работают в два этапа. Ќа первом этапе у них крошечный код на MBR или GPT, который запускает исполнение кода второго этапа.

ѕерейдем непосредственно к самой загрузке.

загрузчик GRUB версии 2.04

ƒанное меню мы можем получить при загрузке если зажать клавишу Shift.  ак видно на картинке в данном примере загрузчик GRUB версии 2.04. ” нас есть несколько вариантов. «агрузка Ubuntu по умолчанию и вариант загрузки с расширенными опци€ми. ¬ нашем случае расширенные опции не дают многого, а всего лишь позвол€ют начать загрузку в режиме восстановлени€ recovery mode. ƒанна€ опци€ не €вл€етс€ целью стати, и мы ее опустим. ¬ернемс€ к первому пункту загрузки. ¬ыбираем, нажимаем "e" получаем следующую картину загрузки.

корневой раздел монтируетс€ по uuid

Ќа данной картинке можно увидеть, что корневой раздел монтируетс€ по uuid, он будет корневым root и непосредственно сам id. ID раздела можно посмотреть после загрузки операционной системы командой blkid. ћожно часть параметров отредактировать или большинство. Ѕолее подробно можно поискать в интернете. ѕо нажатию F10 осуществл€етс€ продолжение загрузки операционной системы.

продолжение загрузки операционной системы

ѕосле загрузки операционной системы, мы можем с помощью команды dmesg посмотреть, сообщени€ €дра, все что происходило с €дром. Ќужно различать сообщени€ €дра и лог €дра.  оторый можно посмотреть cat /var/log/dmesg. ƒанный файл содержи информацию только о загрузке операционной системы. ¬ данном файле содержитс€ информаци€ с самого начала загрузки операционной системы и до конца. ≈сли событие происходит позднее, то в данном файле этой информации вы не найдете.


—истема инициализации ќ—

≈сть такое пон€тие Init - это первый или родительский процесс, который запускает все последующие процессы. Ёто может быть проверка и монтирование файловых систем запуск служб и.т.д. —уществует 3 варианта работы этого родительского процесса.

  1. Init в стиле SysV - родительский процесс инициализации системы на одном из заданных уровней запуска (runlevel); “.е. есть несколько уровней загрузки (runlevel) обычно их 7 штук. ќдин из них - это обычный многопользовательский режим. ƒругие это выключение компьютера, перезагрузка, режим восстановлени€ и т.д.
  2. Init в стиле systemd - родительский процесс инициализации системы в ускоренном режиме, за счЄт параллельного запуска задач; ”скоренный режим достигаетс€ за счет использовани€ процессора в частности Intel, который позвол€ет запускать процессы инициализации параллельно.   этому режиму есть еще куча софта библиотек, которые расшир€ют функционал.
  3. Init в стиле Upstart - родительский процесс инициализации системы на основе отслеживани€ событий; ƒанный режим используетс€ на Ubuntu уже давным - давно, тут не только запускаютс€ скрипты инициализации, но и запускаютс€ скрипты отслеживани€ событий и реагировани€ на них. “.е. это более гибкий процесс инициализации, например, если кака€-то служба не запустилась или упала в процессе загрузки то, upstart умеет это отследить и запустить это повторно
pstree

¬ операционной систему Ubuntu можно посмотреть дерево процессов использую команду pstree. ¬ результате ее вывода мы можем увидеть, что родительским процессом €вл€лс€ процесс systemd.  оторый запускал уже свои, какие-то дочерние процессы. ѕерейдем в корневую директорию boot.

ѕерейдем в корневую директорию boot

«десь мы можем увидеть директорию загрузчика grub. ядра линуксовые vmlinuz (ссылка на €дро) и до обновлени€ старое €дро vmlinux.old (ссылка на старое €дро). —оответственно пара initrd* - файлы диска, эти файлы содержат диск, который грузитс€ в оперативную пам€ть, данный диск содержит файлы необходимые самому €дру Linux дл€ нормальной загрузки.

ѕерейд€ в директорию grub, мы можем найти конфигурационный файл grub.cfg и несколько вспомогательных, но не менее важных фалов. —оответственно мы можем внести изменени€ в данный файл на посто€нной основе и соответственно данный код будет выполн€тс€ при каждой загрузке операционной системы.