linux_loading_process
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| linux_loading_process [2024/09/18 13:59] – uf4n | linux_loading_process [2024/09/18 14:08] (current) – uf4n | ||
|---|---|---|---|
| Line 81: | Line 81: | ||
| В данном случае вместо системы инициализации ядро запустит командную оболочку. | В данном случае вместо системы инициализации ядро запустит командную оболочку. | ||
| - | ====== Init ====== | + | ====== Init (SystemV init) ====== |
| - | Процесс init прочитывает свой конфигурационный файл / | + | Процесс init читает свой конфигурационный файл / |
| - | запускает другие процессы согласно указанным в нем инструкциям. В этот | + | |
| - | момент выводится приглашение нажать определенную клавишу (обычно " | + | |
| - | чтобы войти в интерактивный режим, позволяющий запускать каждый | + | |
| - | процесс вручную или отказываться от запуска вовсе. | + | |
| - | В каждый момент времени система находится на одном из уровней | + | В каждый момент времени система находится на одном из уровней выполнения. Уровень выполнения (runlevel) - это такой режим работы системы, |
| - | выполнения. Уровень выполнения (runlevel) - это такой режим работы | + | |
| - | системы, | + | |
| - | группы процессов. На каком уровне система находится в данный момент | + | |
| - | можно узнать с помощью команды who -r. Она также покажет каким был | + | |
| предыдущий отработавший уровень. | предыдущий отработавший уровень. | ||
| - | Разрешенные на каждом уровне процессы указаны в файле / | + | Разрешенные на каждом уровне процессы указаны в файле / |
| - | Демон init заведует переключением уровней, | + | |
| - | процессов на новом уровне и запуском предписанных. В ОС Linux | + | |
| определено 7 уровней выполнения: | определено 7 уровней выполнения: | ||
| 0 - Останов системы. | 0 - Останов системы. | ||
| Line 108: | Line 98: | ||
| 6 - Перезагрузка. | 6 - Перезагрузка. | ||
| - | init определяет уровни для выполнения по умолчанию исходя из настроек | + | init определяет уровни для выполнения по умолчанию исходя из настроек в / |
| - | в / | + | |
| - | Исходя из заданного уровня выполнения, | + | Исходя из заданного уровня выполнения, |
| - | соответствии с нижеприведёнными директориями: | + | |
| - Выполнение уровня 0 - / | - Выполнение уровня 0 - / | ||
| - Выполнение уровня 1 - / | - Выполнение уровня 1 - / | ||
| Line 127: | Line 115: | ||
| Не спрашивайте зачем все эти ссылки в каталоге /etc/. | Не спрашивайте зачем все эти ссылки в каталоге /etc/. | ||
| - | В каталоге / | + | В каталоге / |
| - | файлы, соответствующие какому-либо запускаемому демону. | + | |
| - | В каталогах / | + | В каталогах / |
| - | указывающие на какой-либо демон, находящийся в / | + | |
| - | последнем названном каталоге находятся вообще все демоны, | + | |
| - | на каком либо из уровней. Когда init' | + | |
| - | например, | + | |
| - | в / | + | |
| - | / | + | |
| - | Ссылки, | + | Ссылки, |
| - | те, которые начинаются с " | + | |
| - | идут номера, | + | |
| - | программ. | + | |
| - | Каждый из настоящих сценариев, | + | Каждый из настоящих сценариев, |
| - | запускает свой демон, а с аргументом stop останавливает ее. Какой | + | |
| - | аргумент будет ему передан, | + | |
| - | символической ссылки: | + | |
| - | Сначала выполняются все сценарии завершения работы демонов, | + | Сначала выполняются все сценарии завершения работы демонов, |
| - | соответствующие символическим ссылкам с буквой K - эти демоны могли | + | |
| - | быть запущены на другом уровне ранее - потом выполняются все сценарии | + | |
| - | запуска, | + | |
| - | Для наглядности сравните между собой каталоги / | + | Для наглядности сравните между собой каталоги / |
| - | / | + | |
| - | Термин «уровень выполнения» унаследован с тех времен, | + | Термин «уровень выполнения» унаследован с тех времен, |
| - | была обязана проходить уровни последовательно, | + | любом порядке. Для переключения на уровень n нужно от имени суперпользователя ввести команду |
| - | при загрузке и обратно при выключении. Сейчас их можно переключать в | + | |
| - | любом порядке. Для переключения на уровень n нужно от имени | + | |
| - | суперпользователя ввести команду | + | |
| # telinit n | # telinit n | ||
| - | Эта команда посылает соответствующий сигнал процессу init. Ее | + | Эта команда посылает соответствующий сигнал процессу init. Ее исполняемый файл представляет собой символическую ссылку на /sbin/init, так что вместо нее можно писать команду init, при этом не будет запущена копия процесса init: стартующий процесс первым делом проверяет свой PID и, если тот не равен 1 то он, просто передает сообщение настоящему процессу init. |
| - | исполняемый файл представляет собой символическую ссылку на | + | |
| - | /sbin/init, так что вместо нее можно писать команду init, при этом не | + | |
| - | будет запущена копия процесса init: стартующий процесс первым делом | + | |
| - | проверяет свой PID и, если тот не равен 1 то он, просто передает | + | |
| - | сообщение настоящему процессу init. | + | |
| - | Переключением уровней выполнения занимается не init как таковой | + | Переключением уровней выполнения занимается не init как таковой (/ |
| - | (/ | + | |
| - | Команда init (или telinit) n, где n - номер включаемого уровня, | + | Команда init (или telinit) n, где n - номер включаемого уровня, |
| - | запускает сценарий / | + | |
| - | выполняет в каталоге /etc/rcN.d сначала все стоп-сценарии, | + | |
| - | старт-сценарии. | + | |
| - | Запустив все процессы, | + | Запустив все процессы, |
| - | засыпает до получения сигнала: | + | |
| - о завершении дочернего процесса | - о завершении дочернего процесса | ||
| - об отключении питания | - об отключении питания | ||
| - требования переключить уровень выполнения. | - требования переключить уровень выполнения. | ||
| - | При получении какого-либо из них, init просыпается, | + | При получении какого-либо из них, init просыпается, |
| - | конфигурационный файл и, если нужно, выполняет записанные в нем | + | |
| - | инструкции. Чтобы заставить init перечитать измененный вами | + | |
| - | / | + | |
| # telinit q | # telinit q | ||
| - | Самое основное в этой части можно резюмировать следующим образом: | + | Самое основное в этой части можно резюмировать следующим образом: |
| - | чтобы обеспечить автоматический запуск какого-нибудь демона, | + | |
| - | создать сценарий для его запуска и поместить его в каталог | + | |
| - | / | + | |
| - | /etc/rcN.d нужно создать символические ссылки на этот сценарий для его | + | |
| - | запуска и завершения. | + | |
| - | Выполнив все сценарии, | + | Выполнив все сценарии, |
| - | относящимся к текущему уровню. Обычно там остаются только | + | |
| - | перезапускаемые (respawn) действия. Мы их ещё рассмотрим | + | |
| - | . Инициализация системы считается законченной, | + | |
| - | перезапускаемые процесс и init остается только следить за ними. | + | |
| - | 8. Первая незакомментированная строка файла конфигурационного файла | + | ====== / |
| - | / | + | |
| - | в котором стартует система, | + | Первая незакомментированная строка файла конфигурационного файла / |
| - | иное. Эта строка выглядит как | + | |
| id: | id: | ||
| - | Обычно в качестве уровня по умолчанию выбирают 3 (полнофункциональный | + | Обычно в качестве уровня по умолчанию выбирают 3 (полнофункциональный многопользовательский текстовый режим) или графический 5 (запускается X Window и выдается графическое приглашение для входа в систему). Если оставить поле уровня пустым, |
| - | многопользовательский текстовый режим) или графический 5 (запускается | + | |
| - | X Window и выдается графическое приглашение для входа в систему). Если | + | |
| - | оставить поле уровня пустым, | + | |
| - | загрузки. Если указать в поле уровня несколько значений, | + | |
| - | наибольшее. Уровни 0 (останов) и 6 (перезагрузка) указывать нельзя. | + | |
linux_loading_process.1726667978.txt.gz · Last modified: 2024/09/18 13:59 by uf4n