Процес завантаження, ініціалізації та завершення роботи, лабораторія юного линуксоида
Одна з найбільш сильних сторін Linux пов'язана з її відкритим методом запуску і зупинки операційної системи; Linux завантажує певні програми, використовуючи їх особливу конфігурацію, що дозволяє вам змінювати ці зміни для контролю процесу завантаження і зупиняти роботу системи елегантно і організовано.
Крім завдань контролю завантаження і процесу завершення роботи, відкритий характер Linux полегшує в більшості випадків точне визначення джерел проблем, пов'язаних із запуском і зупинкою системи. Розуміння основ цього є вельми корисним для всіх, хто використовує Linux.
Безліч систем Linux використовують lilo (LInux LOader) для завантаження операційних систем. Ми обговоримо тільки GRUB, т. К. Він простіше у використанні і є більш гнучким. Якщо вам необхідна інформація про lilo. зверніться до man-сторінок і HOWTO. Обидва завантажувача підтримують подвійні завантаження; ми посилаємося на HOWTO з цього питання для практичних прикладів і довідкової інформації.
завантажувальний процес
Коли завантажується комп'ютер x86, процесор переглядає кінець системної пам'яті на виявлення BIOS (Basic Input / Output System) і запускає його. (Програма BIOS записується в постійній пам'яті тільки для читання, і завжди доступна для використання.) BIOS забезпечує низькорівневий інтерфейс для периферійних пристроїв і контролює перший крок процесу завантаження.
BIOS тестує систему, шукає і перевіряє периферію, і потім шукає пристрій, щоб використовувати його для завантаження системи. Зазвичай BIOS перевіряє пристрій для дискет (або на багатьох сучасних системах дисковод CD-ROM) на наявність завантажувального диска, якщо їх там немає, то дивиться на жорсткому диску. Послідовність пристроїв, що використовуються для завантаження, зазвичай контролюється індивідуальними для системи настройками BIOS. Після того, як Linux встановлений на жорсткий диск, BIOS шукає головний завантажувальний запис (Master Boot Record - MBR), починаючи з першого сектора першого жорсткого диска, завантажує його вміст в пам'ять і передає йому управління.
MBR містить інструкції про те, як завантажити завантажувач GRUB (або LILO), який використовує попередньо задані операційні системи. MBR завантажує завантажувач, який приймає на себе процес (якщо завантажувач встановлений в MBR). У стандартній конфігурації Red Hat Linux GRUB використовує настройки в MBR для відображення параметрів завантаження в меню. Як тільки GRUB отримав коректні інструкції для запуску операційної системи або з його командного рядка або з файлу конфігурації, він знаходить необхідні завантажувальні файли і віддаляється від управління машиною в даній операційній системі.
особливості GRUB
Цей метод завантаження називається прямий завантаженням. оскільки інструкції використовуються для безпосереднього завантаження операційної системи, без будь-якого проміжного коду між завантажувачем і основними файлами операційної системи (наприклад, ядром). Процес завантаження, який використовується в інших операційних системах, може незначно відрізнятися від вищевказаного. Наприклад, операційні системи Microsoft (DOS і Windows) повністю переписують MBR, коли вони встановлюються без урахування будь-яких поточної конфігурації MBR. Всі вони стирають будь-яку іншу інформацію, що зберігається в MBR від інших операційних систем, таких як Linux. Операційні системи Microsoft, також як і інші різні пропрієтарні операційні системи, завантажуються за допомогою методу ланцюгової завантаження. При використанні цього методу, MBR вказує на перший сектор розділу, на якому знаходиться операційна система, де знаходить спеціальні файли, необхідні для фактичного завантаження даної операційної системи.
GRUB підтримує обидва завантажувальних методу, що дозволяє використовувати його практично з будь-якою операційною системою, найбільш популярними файловими системами, і практично будь-яким жорстким диском, який зможе розпізнати ваш BIOS.
GRUB містить ряд інших особливостей. З них найбільш важливі:
Повний опис GRUB можна знайти, виконавши команду info grub або на сайті GRUB. У Linux Documentation Project є міні-HOWTO по мультизагрузка GRUB.
Ядро, як тільки воно завантажено, знаходить init в sbin і виконує його.
Коли init запускається, то стає батьком і прабатьком всіх процесів, які запускаються автоматично у вашій системі Linux. Перше, що робить init. Новомосковскет його файл ініціалізації / etc / inittab. Він інструктує init прочитати первісний сценарій конфігурації для оточення, в якому визначено шляхи, запускається своппинг, перевіряються файлові системи і так далі. В принципі, цей крок подбає про все, що ваша система повинна зробити при своїй ініціалізації: установка годин, ініціалізація послідовних портів і т.д.
Використовуйте who для перевірки, яким є ваш поточний рівень виконання:
Після того, як для вашої системи визначається рівень виконання за замовчуванням, init запускає всі фонові процеси, необхідні для запуску системи, переглядаючи відповідну для даного рівня виконання директорію rc. init виконує кожен kill-сценарій (їх файлові імена починаються з K) з параметром stop. Потім він проходить всі стартові сценарії (їх імена файлів починаються з S) у відповідному рівню виконання каталозі, з тим, щоб всі служби і додатки запустилися правильно. Насправді ви вручну можете виконати ті ж сценарії після того, як система завершить завантаження, командами подібними /etc/init.d/httpd stop або service httpd stop. увійшовши в систему з правами root; в цьому випадку зупиняється веб-сервер.
Особливий випадок.
Зверніть увагу, що при запуску операційної системи скрипти в rc2.d і rc3.d. як правило, виконуються. В цьому випадку, ніякі служби не зупиняються (по крайней мере, не назавжди). Служби тільки запускаються.
/ Etc / inittab може також вказати init. як той повинен обробляти призначене для користувача натискання Ctrl + Alt + Delete в консолі. Оскільки система повинна належним чином вимикатися і перезапускати, а не припиняти негайно роботу, init повідомляється виконати команду / sbin / shutdown -t3 -r now. наприклад, коли користувач натискає ці клавіші. Крім того, / etc / inittab встановлює, що init повинен робити в разі відключення електроживлення, якщо у вашої системи є UPS unit. прикріплений до неї.
У більшості систем, заснованих на RPM, графічний екран для входу запускається на рівні виконання 5, де / etc / inittab запускає скрипт під назвою / etc / X11 / prefdm. Скрипт prefdm переважно працює в графічному менеджері X, грунтуючись на вмісті каталогу / etc / sysconfig / desktop. Це, як правило, gdm. якщо ви працюєте на GNOME або kdm. якщо ви використовуєте KDE, але вони можуть бути змішані, крім того, є xdm. який надається при стандартній установці X.
Каталоги / etc / default і / або / etc / sysconfig містять записи для цілого ряду функцій і служб, все це Новомосковскется під час завантаження. Місцезнаходження директорії, що містить системні настройки за замовчуванням, може дещо відрізнятися в залежності від вашого дистрибутива Linux.
Крім того, графічне середовище користувача, ряд інших служб можуть бути запущені також. Але якщо все піде добре, то коли процес завантаження завершується, ви бачите запрошення для входу або графічний екран для входу.
Інші процедури.
Ми пояснили, як SysV init робіт на базі x86. Запуск процедур може відрізнятися на інших архітектурах і дистрибутивах. Інші системи можуть використовувати BSD-стиль init. коли завантажувальні файли не розділяються на безліч каталогів / etc / rc .d. Також може виявитися, що ваша система використовує /etc/rc.d/init.d замість /etc/init.d.
Рівні виконання Init
Ідея функціонування різних служб на різних рівнях виконання по суті обертається навколо того факту, що різні системи можуть бути використані по-різному. Деякі служби не можуть бути використані, поки система знаходиться в певному стані або режимі, такому як бути готовою до більш ніж одному користувачеві або доступної мережі.
Бувають періоди, в які ви можете працювати з системою в низкоуровневом режимі. Приклади: рішення проблем зіпсованого диска на рівні виконання 1, так щоб у інших користувачів не було можливості бути в системі, або залишити сервер на рівні виконання 3 (без працюючої X сесії). У цих випадках, функціонування сервісів, які залежать від високорівневого режиму системи, не має сенсу, т. К. Вони не будуть працювати правильно в будь-якому випадку. Вже наявними службам призначається їх запуск, коли буде досягнутий певний рівень виконання; ви забезпечуєте послідовний запуск процесів, і ви можете швидко змінити режим машини, не турбуючись про те, що вручну доведеться запускати і зупиняти служби.
Рівні є виконання, як правило, описані в файлі / etc / inittab. вміст якого частково показано нижче:
Ви можете налаштувати невикористані рівні виконання (зазвичай рівень 4) як ви вважаєте за потрібне. Багато користувачів налаштовують ці рівні виконання, таким чином, який найбільш підходить для них, залишаючи стандартні рівні, оскільки вони існують за умовчанням. Це дозволяє їм швидко входити в і виходити з їх користувальницької конфігурації, не порушуючи нормальної установки властивостей на стандартних рівнях запуску.
Якщо ваша машина виявляється в ситуації, коли вона не може завантажитися з-за зіпсованого / etc / inittab або не дозволять вам увійти, тому що ви пошкодили файл / etc / passwd (або якщо ви просто забули свій пароль), завантажити в режимі одного.
Без графіки?
Коли ви працюєте в текстовому режимі, т. К. Не був наданий екран графічного входу на вашій машині, зазвичай ви можете перемикатися на консоль 7. Якщо це не так, перевірити поточний режим роботи за допомогою команди who -r. Якщо він встановлений на що-небудь інше, ніж є оригінальні установки за замовчуванням в / etc / inittab. то ймовірно це може бути причина того, що система не запускається в графічному режимі за замовчуванням. В такому випадку зверніться до системного адміністратора або прочитайте man init. Зауважимо, що перемикання режимів роботи здійснюється переважно з використанням команди telinit; перемикання з текстової в графічну консоль або навпаки не має на увазі зміна режиму виконання.
Ми намагаємося в цьому посібнику обговорювати режими виконання, скрипти і конфігурації в загальних рисах. Існує безліч варіацій. Наприклад, Gentoo Linux зберігає скрипти в рівнях / etc / run. Інші системи можуть запускатися через перший нижній режим виконання і виконати всі сценарії в ньому до прибуття кінцевого режиму виконання і виконання його сценаріїв. Зверніться до системної документації для отримання додаткової інформації. Ви також можете прочитати скрипти, які відносяться до / etc / inittab. щоб краще зрозуміти, що відбувається у вашій системі.
Інструменти
Крім того, деякі системи пропонують інструмент ntsysv. який надає текстовий інтерфейс; ви можете порахує його легше у використанні, ніж інтерфейс командного рядка chkconfig. В SuSE Linux, ви виявите інструменти yast і insserv. У Mandriva є Mandriva Linux Control Center (Центр управління Mandriva Linux).
Більшість дистрибутивів забезпечують графічний користувальницький інтерфейс для налаштування процесів; зверніться до вашої системної документації.
Всі ці утиліти повинні бути запущений під root. Системний адміністратор також може вручну створити відповідні посилання в кожному каталозі режиму виконання для того, щоб запустити або зупинити служби певного режиму.
Shutdown - виключення
UNIX була створена як система, яка не зупиняється, але якщо вам це дійсно треба, використовуйте команду shutdown. Опція -h буде зупинити систему, а -r буде перезавантажувати її.
Команди reboot і halt тепер здатні викликати shutdown. коли система знаходиться в режимах виконання 1-5, і таким чином забезпечити належне завершення її роботи, але це погана звичка, оскільки не у всіх версіях UNIX / Linux є така можливість.
Поки ваш комп'ютер сам не вимкнеться, ви не повинні вимикати його, поки не побачите повідомлення із зазначенням, що система зупинилася або все процеси завершилися, т. К. Система повинна відключити всі розділи. Нетерплячість може привести до втрати даних.