Я пытаюсь понять, как Ubuntu запускает то, что запускается или запускается. Можете ли вы подтвердить правильность моей упрощенной блок-схемы?
Я немного растерялся ...
Следующее является 6 этапами высокого уровня типичного процесса начальной загрузки Linux.
1. BIOS
Так, простыми словами BIOS загружает и выполняет загрузчик MBR.
2. MBR
/dev/hda
, или /dev/sda
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.
Следующее является доступными уровнями выполнения
останов
перезагрузка
Init определяет значение по умолчанию initlevel от /etc/inittab
и использование, что для загрузки всей соответствующей программы.
Выполнитесь ‘grep initdefault /etc/inittab
в Вашей системе для идентификации уровня выполнения по умолчанию
Если Вы хотите попасть в беду, можно установить уровень выполнения по умолчанию на 0 или 6. Так как Вы знаете то, что 0 и 6 средств, вероятно, Вы не могли бы сделать этого. Обычно Вы установили бы уровень выполнения по умолчанию на или 3 или 5.
6. Программы Runlevel
Когда система Linux загружается, Вы могли бы видеть, что начали различные сервисы. Например, это могло бы сказать starting sendmail …. OK
. Это - runlevel программы, выполненные из каталога уровня выполнения, как определено Вашим уровнем выполнения.
В зависимости от Вашего значения по умолчанию init установка уровня, система выполнит программы из одного из следующих каталогов.
/etc/rc.d/rc0.d/
/etc/rc.d/rc1.d/
/etc/rc.d/rc2.d/
/etc/rc.d/rc3.d/
/etc/rc.d/rc4.d/
/etc/rc.d/rc5.d/
/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 на современном настольном компьютере изящно, включая:
Событийно-ориентированная модель выскочки позволяет этому отвечать на события асинхронно, поскольку они сгенерированы.
Надежда это помогает. Для получения дополнительной информации перейдите к thegeekstuff и golinuxhub