Может кто-нибудь сказать мне или указать мне ссылку, которая точно сообщает, какие программы или процессы выполняются при запуске Linux. т.е. начиная с grub (загрузчик linux)

Вы можете выбрать свой любимый вкус.

3 ответа3

4

Процесс загрузки после запуска ядра на самом деле довольно прост. Ядро запускает init , который анализирует /etc/inittab и запускает все остальное с помощью скриптов. Эти сценарии запускают различные программы-демоны, которые могут работать в фоновом режиме во время нормальной работы системы. init также порождает любые процессы getty , которые обслуживают пользователей при входе в систему на консоли (обычно) и иногда на других интерфейсах (чаще всего последовательных).

В разных дистрибутивах Linux используются разные методы для определения сценариев и порядка их выполнения (некоторые различия для данного уровня выполнения, если это инициализация в стиле SysV). Страница Википедии для init может дать вам более подробную информацию, но в основном она разбита на выбор стилей для метода хранения / ссылки на скрипты, которые вызовет init. Само ядро не зависит от типа используемых соглашений init - оно просто запускает init как первый процесс на уровне пользователя.

В системе инициализации в стиле SysV - уровень выполнения (в основном, метод, позволяющий загружать систему в различных возможных конфигурациях запуска. Вы можете провести аналогию с Windows "Профили оборудования", "Безопасный режим" и т.д., Если вы знакомы с Windows.) Определяет, какие сценарии выполняются. В системе инициализации в стиле BSD серия сценариев rc определяет, что запускается при каждой загрузке.

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

1

В большинстве Linux-систем первым запускаемым процессом является /sbin/init который затем использует файл /etc/inittab (man) для запуска других процессов.

Если вы используете дистрибутив Ubuntu, возможно, вы используете upstart, первый двоичный файл также называется /sbin/init но файлы в /etc/init/ используются для настройки поведения при запуске.

1

RHEL3/4/5:

  1. надрываться
  2. ядро загружено (определяется grub)
  3. ядро загружает и монтирует initrd, определенный grub
  4. Ядро ищет и запускает некоторые вещи из initrd (как правило, этого достаточно, чтобы получить модули, необходимые для монтирования вашей корневой файловой системы)
  5. initrd и / или монтирование ядра /
  6. / sbin / init запущен
  7. init анализирует / etc / inittab, получает аргумент о том, на каком уровне выполнения находиться, и использует его или значение по умолчанию, чтобы решить, какие элементы запускать. Обычно это будет сначала «/etc/rc.d/rc.sysinit», а затем «/etc/rc.d/rc 3». Он также запускает / sbin / mingetty для первых 6 тт.
  8. /etc/rc.d/rc.sysinit имеет все функции fsck и монтирует все другие не сетевые файловые системы
  9. «/etc/rc.d/rc 3» запускает все в /etc/rc3.d с "K", начиная имя с параметра "stop", а все с "S", начиная имя с параметра "start" (это символические ссылки на скрипты /etc/init.d) в числовом порядке. Эти сценарии запускают сеть, запускают iptables, монтируют сетевые файловые системы и запускают все остальные службы.

В Ubuntu 10 и RHEL6(бета-версия на данный момент) классический init был заменен на "Upstart", который использует каталог /etc /init вместо /etc /inittab. /etc /init содержит несколько отдельных файлов с настройками того, что они делают, и какие условия заставляют их работать. Один из них эквивалентен /etc/rc.d/rc.sysinit, большинство остальных эквивалентны сценариям /etc/init.d.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .