Это упрощенная блок-схема того, как правильно запускать Ubuntu?

Я пытаюсь понять, как Ubuntu запускает то, что запускается или запускается. Можете ли вы подтвердить правильность моей упрощенной блок-схемы?

  1. Сначала мы включаем компьютер с дистрибутивом Linux, например: Ubuntu, нажав на Вкл.
  2. BIOS запускается из ПЗУ. Инициализирует оборудование.
  3. MBR выполняется.
  4. загрузчик загружает ядро ​​ОС.
  5. Ядро ОС загружает настольный пользовательский интерфейс.

Я немного растерялся...

1 ответ

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

1. BIOS

  • BIOS расшифровывается как Basic Input/Output System
  • Выполняет некоторые проверки целостности системы
  • Поиск, загрузка и выполнение программы начального загрузчика.
  • Он ищет загрузчик на дискете, CD-ROM или жестком диске. Вы можете нажать клавишу (обычно это 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 расшифровывается как Grand Unified Bootloader.

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

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

  • GRUB обладает знанием файловой системы (старый загрузчик Linux LILO не понимал файловую систему).

Файл конфигурации Grub

/boot/grub/grub.conf (/etc/grub.conf это ссылка на это). Ниже приведен пример grub.conf CentOS.

#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
          root (hd0,0)
          kernel /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 и проверьте пид. initrd расшифровывается как Initial RAM Disk.

  • initrd используется ядром как временная корневая файловая система, пока ядро ​​не загрузится и не смонтирована настоящая корневая файловая система. Он также содержит необходимые драйверы, скомпилированные внутри, что помогает ему получить доступ к разделам жесткого диска и другому оборудованию.

5. Инициирование

  • Смотрит на /etc/inittab файл для определения уровня запуска Linux.

  • Ниже приведены доступные уровни запуска

  • стой

  • Однопользовательский режим
  • Многопользовательский, без NFS
  • Полный многопользовательский режим
  • неиспользуемый
  • X11
  • перезагружать

    Init определяет уровень инициализации по умолчанию из /etc/inittab и использует это для загрузки всех соответствующих программ.

  • Выполнить 'grep initdefault /etc/inittab в вашей системе, чтобы определить уровень запуска по умолчанию

    Если вы хотите попасть в неприятности, вы можете установить уровень запуска по умолчанию 0 или 6. Поскольку вы знаете, что означают 0 и 6, возможно, вы этого не сделаете. Обычно вы устанавливаете уровень запуска по умолчанию на 3 или 5.

6. Программы уровня запуска

  • Когда система Linux загружается, вы можете увидеть запуск различных сервисов. Например, это может сказать starting sendmail …. OK, Это программы уровня запуска, выполняемые из каталога уровня выполнения, определенного вашим уровнем выполнения.

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

    • Выполнить уровень 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 заменили init на systemd и upstart

Systemd

systemd - это система инициализации, используемая некоторыми дистрибутивами Linux для начальной загрузки пространства пользователя и последующего управления всеми процессами вместо систем инициализации UNIX System V или Berkeley Software Distribution (BSD). Имя systemd придерживается соглашения Unix о именовании демонов, добавляя букву d. Он публикуется как бесплатное программное обеспечение с открытым исходным кодом в соответствии с условиями GNU Lesser General Public License (LGPL) версии 2.1 или более поздней. Одна из основных целей systemd - унифицировать базовые конфигурации Linux и поведение сервисов во всех дистрибутивах.

По состоянию на 2015 год многие дистрибутивы Linux приняли systemd в качестве системы инициализации по умолчанию. Растущее принятие systemd было спорным, поскольку критики утверждают, что программное обеспечение нарушило философию Unix, становясь все более сложным, и что дистрибутивы были вынуждены принять его из-за зависимости от него другого различного программного обеспечения, включая, в частности, Среда рабочего стола GNOME 3.

Выскочка

Upstart - это основанная на событиях замена традиционного демона init - метода, с помощью которого несколько Unix-подобных компьютерных операционных систем выполняют задачи при запуске компьютера. Он был написан Скоттом Джеймсом Ремнантом, бывшим сотрудником Canonical Ltd.

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

  • Добавление или удаление USB-накопителей и других портативных устройств хранения / сетевых устройств во время работы машины
  • Обнаружение и сканирование новых запоминающих устройств без блокировки системы, особенно когда диск может даже не включиться, пока не будет отсканирован
  • Загрузка прошивки для устройства, которое может возникнуть
    после того, как он обнаружен, но до того, как его можно будет использовать

Модель Upstart, управляемая событиями, позволяет асинхронно реагировать на события по мере их генерации.

Надеюсь, поможет. Для более подробной информации перейдите на http://www.thegeekstuff.com/ и golinuxhub

Другие вопросы по тегам