User Tools

Site Tools


linux_loading_process

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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