Процес init

Матеріал з Wiki TNEU
Перейти до: навігація, пошук

Init є предком всіх процесів. Його основне завдання полягає у створенні процесів з скрипта зберігається у файлі / і т.д. / Цей файл зазвичай має елементи, які викликають ініціалізації на нерест Getty с на кожну лінію, що користувачі можуть увійти також контролює автономні процеси вимагають будь-якої конкретної системи.

Рівень виконання програмної конфігурації системи, яка дозволяє лише вибрані групи процесів на існування. Процеси породжені ініціалізації для кожного з цих рівнів виконання, визначені в / і т.д. / inittab файл ініціалізації може знаходитися в одному з восьми рівнів запуску:. 0-6 і S або S. При зміні рівня виконання, маючи привілейоване telinit працювати користувач, який посилає відповідні сигнали ініціалізації, вказавши, що його рівень виконання якої потрібно перейти. Run Рівні 0, 1 і 6 зарезервовані. Рівень запуску 0 використовується для зупинки системи, рівень запуску 6 використовується для перезавантаження системи, рівень запуску 1 використовується, щоб отримати роботу системи в однокористувацький режим. 1. Рівень виконання S насправді не призначений для використання безпосередньо, але більше для скриптів, які виконуються при завантаженні рівня запуску Для отримання додаткової інформації про це див сторінки посібників для виключення (8), inittab (5). Рівні 7-9 також справедливі, хоча насправді не задокументовані. Це тому, що "традиційні" варіанти Unix не використовуйте їх. У випадку, якщо вам цікаво, рівні S і S, насправді те ж саме. Внутрішньо вони є псевдонімами для однакового рівня запуску.

ЗАВАНТАЖЕННЯ



Після ініціалізації викликається як останній крок послідовності завантаження ядра, він шукає файл / і т.д. / inittab, щоб бачити, чи є запис типу initdefault (див. inittab (5)). Запис initdefault визначає початковий рівень запуску системи. Якщо немає такого вступу (чи ні / і т.д. / inittab взагалі), рівень виконання повинен бути введений в системну консоль. Рівень виконання S або S привести систему в режимі одного і не вимагають / і т.д. / inittab файл. У режимі одного, кореневої оболонки відкрито / Dev / консолі.

При в'їзді в режимі одного, ініціалізації читає консолі управління введенням-висновком (2) говорить з / і т.д. / ioctl.save. Якщо цей файл не існує, ініціалізації ініціалізує лінії зі швидкістю 9600 бод і з CLOCAL налаштування. При ініціалізації листя однокористувацький режим, вона зберігає IOCTL налаштування консолі у цьому файлі, щоб він міг повторно використовувати їх протягом наступних одного сеансу користувача.

При в'їзді в многопользовательском режимі в перший раз, ініціалізації виконує завантаження і bootwait записи, щоб файлових систем для установки перш ніж користувачі зможуть увійти Тоді всі записи, які збігаються рівень виконання обробляються.

При запуску нового процесу ініціалізації спочатку перевіряє, чи є файл / і т.д. / Сценарій існує. Якщо це станеться, він використовує цей сценарій, щоб почати процес. Кожен раз, коли нащадок завершується, ініціалізації записи факт і причину він помер в / VAR / бігти / utmp та / VAR / Журнал / wtmp, за умови, що ці файли існують.

ЗМІНА РІВНЯ ВИКОНАННЯ



Після того як вона породила всі процеси, зазначено, ініціалізації чекає один з його процесів нащадків, щоб померти, сигнал powerfail, або поки це сигналізує telinit змінити рівень запуску системи. Коли один з трьох зазначених вище умов відбувається, він переглядає / і т.д. / inittab файл. Нові записи можуть бути додані в цей файл в будь-який час. Тим не менш, ініціалізації ще чекає один з трьох зазначених вище умов, щоб відбутися. Для забезпечення миттєвого відгуку, telinit Q або Q команда може прокинутися ініціалізації переглянути / і т.д. / inittab файл. Якщо ініціалізації не в режимі одного і приймає powerfail сигналу (SIGPWR), він читає файл / і т.д. / Потім запускається командою на підставі вмісту цього файлу:

F (аил) Живлення не вдається, ДБЖ забезпечує владу. Виконати powerwait і powerfail записів. О (К) Влада була відновлена, виконати powerokwait записів. L (OW) Влада не вдається і ДБЖ низькому заряді батареї. Виконати powerfailnow записів. Якщо / і т.д. / PowerStatus не існує або містить що-небудь ще, то букви F, О або L, ініціалізації буде вести себе як якби він прочитав лист F.

Використання SIGPWR і / і т.д. / PowerStatus не рекомендується. Хтось бажаючи, щоб взаємодіяти з ініціалізації повинні використовувати / Dev / initctl канал управління - див вихідний код Sysvinit пакет для більш докладної документації з цього приводу.

При ініціалізації пропонується змінити рівень виконання, він посилає попереджувальний сигнал SIGTERM всіх процесів, які не визначені в новий рівень виконання. Потім він очікує 5 секунд, перш ніж примусово припинення цих процесів з допомогою сигналу SIGKILL. Зверніть увагу, що ініціалізації передбачає, що всі ці процеси (і їх нащадків), залишаються в тій же групі ініціалізації процесу, який спочатку створені для них. Якщо який-небудь процес змінює свою групу процесів приналежності він не отримуватиме ці сигнали. Такі процеси мають бути припинені окремо. Init (скорочення від англ. Initialization — ініціалізація) — програма в UNIX і Unix-подібних системах , що запускає всі інші процеси. Працює як демон і звичайно має PID1. Зазвичай (згідно з Filesystem Hierarchy Standard) розташовується по шляху /sbin/init. У процесі завантаження, після ініціалізації ядра, ядро запускає /sbin/init як перший процес користувацького режиму. init відповідає за дальше завантаження системи. Для цього він запускає так звані стартові скрипти, які виконують перевірку та монтування файлових систем, запуск необхідних демонів, налаштування ядра (у тому числі завантаження модулів ядра згідно з установленим обладнанням, настроювання IP-адрес, таблиць маршрутизації тощо), запуск графічної оболонки і інші дії. При завантаженні комп'ютера відбувається послідовна передача управління від BIOS до завантажувача, а від нього - до ядра. Потім ядро запускає планувальник (для реалізації багатозадачності) і виконує програму init (яка налаштовує користувальницьке оточення і дозволяє здійснювати взаємодію з користувачем і вхід в систему), після чого ядро переходить в стан бездіяльності до тих пір, поки не отримає зовнішній виклик. Основні етапи завантаження: BIOS виконує завантажувальні кроки, специфічні для даного апаратного забезпечення. Коли всі пристрої розпізнані й правильно запущені, BIOS завантажує та виконує завантажувальний код з одного з розділів заданого завантажувального пристрою, який містить фазу 1 завантажувача Linux. Фаза 1 завантажує фазу 2 (значний за розміром код завантажувача). Деякі завантажувачі можуть використовувати для цього проміжний етап (під назвою фаза 1,5), оскільки сучасні диски великого об'єму можуть некоректно зчитуватися без подальшого коду. Завантажувач часто пропонує користувачеві меню з доступними варіантами завантаження. Потім він завантажує ядро, яке розпаковується в пам'ять, налаштовує системні функції, такі як робота необхідного обладнання та управління сторінками пам'яті, після чого робить виклик start_kernel (). Після цього start_kernel () виконує основну настройку системи (переривання, інші функції управління пам'яттю, ініціалізацію пристроїв, драйверів і т. д.), а потім породжує процес бездіяльності, диспетчер і окремо від них - процес init (виконується в просторі користувача). Планувальник починає більш ефективно управляти системою, в той час як ядро переходить до бездіяльності. Процес init виконує необхідні сценарії, які налаштовують всі служби і структури, які не відносяться до рівня ядра, в результаті чого буде створено користувальницьке оточення, і користувачеві буде наданий екран входу в систему. Коли відбувається завершення роботи, init викликається для керованого закриття програм користувацького рівня, теж згідно сценаріями. Після цього init закривається, а ядро виробляє своє власне завершення роботи.

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти