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

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

enter image description here

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

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

0
задан 21 May 2016 в 21:08

1 ответ

Следующее является 6 этапами высокого уровня типичного процесса начальной загрузки Linux.

Linux boot process

1. BIOS

  • BIOS обозначает Базовую систему ввода-вывода
  • Выполняет некоторые проверки целостности системы
  • Поиски, загрузки, и выполняют программу начальной загрузки.
  • Это ищет загрузчик в дискете, CD-ROM или жестком диске. Можно нажать клавишу (обычно F12 F2, но это зависит от системы) во время запуска BIOS для изменения последовательности начальной загрузки.
  • После того как программа начальной загрузки обнаруживается и загружается в память, BIOS дает контроль к ней.

Так, простыми словами BIOS загружает и выполняет загрузчик MBR.

2. MBR

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

3. ЛИЧИНКА

  • GRUB обозначает Главный Объединенный Загрузчик.

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

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

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

Конфигурационный файл личинки

/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. Ядро

  • Монтирует, что корневая файловая система, как указано в “корне =” в grub.conf Ядре выполняется /sbin/init программа

    Так как init был 1-й программой, которая будет выполняться Ядром Linux, это имеет идентификатор процесса (PID) 1. Сделайте a ps -ef | grep init и проверьте, что pid initrd обозначает Начальный Псевдодиск.

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

5. Init

  • Взгляды на /etc/inittab файл для решения уровня выполнения Linux.

  • Следующее является доступными уровнями выполнения

  • останов

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

    Init определяет значение по умолчанию initlevel от /etc/inittab и использование, что для загрузки всей соответствующей программы.

  • Выполнитесь ‘grep initdefault /etc/inittab в Вашей системе для идентификации уровня выполнения по умолчанию

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

6. Программы Runlevel

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

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

    • Уровень выполнения 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 должен запустить системный журнал deamon, который имеет порядковый номер 12. S80sendmail должен запустить sendmail демона, который имеет порядковый номер 80. Так, программа системного журнала будет запущена прежде sendmail.

Обновление:

Многие современные дистрибутивы Linux заменили init systemd и выскочкой

Systemd

systemd является init системой, используемой некоторыми дистрибутивами Linux, чтобы загрузить пространство пользователя и справиться со всеми процессами впоследствии вместо System V UNIX или Распределения программного обеспечения Беркли (BSD) init системы. Имя systemd придерживается конвенции Unix именования демонов путем добавления буквы D. Это публикуется как бесплатное программное обеспечение и программное обеспечение с открытым исходным кодом в соответствии с версией 2.1 Меньшей стандартной общественной лицензии (LGPL) GNU или позже. Одна из главных целей systemd состоит в том, чтобы объединить основные конфигурации Linux и сервисные поведения через все дистрибутивы.

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

Выскочка

Выскочка является основанной на событии заменой для традиционного init демона – метод, которым несколько подобных Unix операционных систем компьютера выполняют задачи, когда компьютер запущен. Это было записано Scott James Remnant, бывшим сотрудником Canonical Ltd.

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

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

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

Надежда это помогает. Для получения дополнительной информации перейдите к thegeekstuff и golinuxhub

1
ответ дан 22 May 2016 в 07:08

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

Похожие вопросы: