Зміст
Глава 1 Введення
1.1 Проект Документування системи Linux
Глава 2 Огляд Системи Linux
2.1 Різні складові операційної системи
2.2 Важливі складові ядра
2.3 Основні функції UNIX системи
2.3.1 init
2.3.2 Підключення до системи з терміналів
2.3.3 Syslog
2.3.4 Періодичне виконання команд: cron та at
2.3.5 Графічний інтерфейс користувача
2.3.6 Робота з мережею
2.3.7 Підключення до системи через мережу
2.3.8 Мережеві файлові системи
2.3.9 Пошта
2.3.10 Друк
2.4 Структура файлової системи
Глава 3 Запуск Системи і Перезавантаження
3.1 Огляд
3.2 Процес запуску при близькому розгляді
3.3 Завершення роботи та вимкнення системи
3.4 Перезавантаження системи
3.5 однокористувацький режим роботи
3.6 Дискети для екстенной завантаження
Глава 4 Використання дисків та інших Пристроїв
4.1 Типи пристроїв
4.2 Жорсткі диски
4.3 Гнучкі диски
4.4 Форматування
4.5 Дискові розділи
4.5.1 MBR, завантажувальні сектори та таблиця розділів
4.5.2 Розширені та логічні розділи
4.5.3 Типи розділів
4.5.4 Розділення жорсткого диска
4.5.5 Файли пристроїв і розділи
4.6 Файлові системи
4.6.1 Що таке файлова система?
4.6.2 Типи файлових систем
4.6.3 Яку файлову систему встановлювати?
4.6.4 Установка файлової системи
4.6.5 Монтування та демонтування
4.6.6 Підтримка працездатності файлових систем
4.7 Диски без файлових систем
4.8 Розподіл дискового простору
4.8.1 Схеми поділу дисків
4.8.2 Вимоги до дискового простору
4.8.3 Приклади розподілу жорсткого диска
4.8.4 Використання додаткового дискового простору
4.8.5 Методи збереження дискового простору
Глава 5 Огляд Структури Каталогів
5.1 Введення
5.2 Файлова система root
5.2.1 Каталог/etc
5.2.2 Каталог/dev
5.3 Файлова система/usr
5.4 Файлова система/var
5.5 Файлова система/proc
Глава 6 Упpавленіе Пам'яттю
6.1 Що таке віpтуальная пам'ять?
6.2 Створення swap області
6.3 Використання swap пpостpанства
6.4 Поділ swap областей з дpугих операційну
6.5 Розміщення swap пpостpанства
6.6 Дисковий буфеp
Глава 7 Підключення та Вихід з Системи
7.1 Підключення до системи чеpез теpмінали
7.2 Підключення до системи чеpез мережа
7.3 Що виконує пpогpамма login
7.4 X та xdm
7.5 Контpоль доступу
7.6 Запуск оболонки
Глава 1 Введення
У цій книзі розглядаються аспекти системного
адміністрування операційної системи Linux. У першу чергу
цей посібник призначено для тих, хто практично нічого
не знає про системному адмініструванні, але ознайомлений з основами
роботи з системою Linux, які розглянуті в книзі "Керівництво
Користувача системи Linux ". У цьому посібнику не приділяється
уваги проблемам, пов'язаним з установленням системи (вичерпну
інформацію можна отримати з книги "Установка і Запуск Системи
Linux "). У багатьох посібниках із серії LDP (Linux Documentation
Project) розглядаються одні й ті ж питання з різних точок
зpенія. Нижче міститься більш докладна інформація про посібниках
за системою Linux.
Що ж називається системним адмініструванням? Це все те,
що потрібно для підтримки працездатності комп'ютерної системи
(наприклад, створення резервних копій деяких файлів, установка
нових програм, створення і видалення користувачів, перевірка
цілісності файлової системи і т.д.). Якщо порівнювати комп'ютер з
домом, то системне адміністрування можна назвати вмістом
цього будинку, що включає в себе збирання, усунення різних
несправностей і т.д. Але системне адміністрування не називають
змістом, тому що тоді це було б занадто просто.
Керівництво складено таким чином, що голови не залежать
один від одного і можуть бути розглянуті окремо. Наприклад, для
отримання інформації щодо створення резервних копій Ви можете
прочитати тільки одну главу. Це дуже зручно і дозволяє
використовувати книгу як довідкового посібника, а також
уникнути читання всього керівництва замість декількох розділів.
Однак, перш за все це книга, а потім вже довідник.
Звичайно, в цій книзі не містить всієї необхідної
інформації з системного адміністрування, хоча багато корисного
можна знайти і в іншій документації по системі Linux. Наприкінці
-решт, системний адміністратор це просто користувач з
привілейованих правами доступу і певними обов'язками.
Також багато корисної і важливої інформації можна дізнатися з
вбудованих описів до програм (за допомогою команди 'man').
У той час як ця книга розрахована на використання
операційної системи Linux, вона може бути розглянуті і по
відношенню до інших UNIX-подібних операційних систем. Так як
різні версії системи UNIX сильно відрізняються (особливо в питаннях
системного адміністрування), то досить складно охопити весь
матеріал, що стосується кожної модифікації. Навіть розгляд всіх
особливостей ОС Linux - складне завдання, так як вона зараз
знаходиться у стадії розвитку. На даний момент не існує
офіційною версією Linux, тому в різних людей вона встановлена
по різному. У книзі вказані відмінності між такими системами і
розглянуті деякі альтернативи, де це можливо. Також в
книзі міститься багато інформації, яка не кожному може
знадобитися. Такі моменти спеціально відзначені і можуть бути
пропущені, якщо використовується вже сконфигурированная система.
Також як і інші роботи, пов'язані з операційною
системою Linux, книга була написана на добровільних засадах.
Однак, як і в будь-якій добровільній роботі, існує межа
вживаються зусиллям, а також знань і досвіду автора. Це
означає, що цей посібник не обов'язково також добре
написано, як якби воно було написано на комерційній основі.
Слід зазначити, що в цій книзі не повністю охоплені
багато проблем, які розглянуті в інших вільно
розповсюджуваних посібниках та документація. Особливо це
відноситься до описів до різних програм, наприклад, до
особливостям використання mkfs (8). У цьому посібнику описано
тільки призначення цієї програми в обсязі, необхідному для
використання в книзі. Для отримання більш детальної інформації
є посилання до інших інструкцій та документація, що
звичайно є частиною повного набору документації по системі
Linux.
У автора є прагнення розвивати і покращувати цю розробку.
Прохання надсилати всі зауваження (помилки, нові ідеї, інформація про
відмінності між різними версіями системи UNIX і т.д.) або за
адресу електронної пошти lars.wirzenius @ helsinki.fi, або звичайною
поштою за адресою:
Lars Wirzenius/Linux docs
Hernesaarentie 15 A 2
00150 Helsinki
Finland
Автор хоче поблагадоріть наступних людей, що зробили
підтримку при створенні цієї книги: Matt Welsh, Andy Oram, Olaf
Kirch, Adam Richter та інших.
H. Peter Anvin, Remy Card, Theodore Ts'o і Stephen Tweedie
дозволили використати частину їхніх робіт у книзі. Stephen Tweedie
також дозволив використовувати його порівняння файлових систем xia та
ext2.
На додаток до вище сказаного, автор дякує Mark
Komarinski за публікацію в 1993 році його робіт та інших статей,
що мають відношення до системного адміністрування, в журналі Linux
Journal.
Автор висловлює подяку Erik Troan з Red Hat за
створення версією керівництва у форматі plain text, а також
наступним людям: Paul Caprioli, Ales Cepek, Marie-France
Declerfayt, Olaf Flebbe, Helmut Geyer, Larry Greenfield, Stephen
Harris, Jyrki Havia, Jim Haynes, York Lam, Timothy Andrew Lister,
Jim Lynch, Dan Poirier, Daniel Quinlam, Philippe Steindl.
1.1 Проект Документування системи Linux
Проект документування системи Linux або LDP (Linux
Documentation Project), це вільна команда письменників,
коректорів і редакторів перед якими стоїть мета створення повної
документації по операційній системі Linux. Головним координатором
проекту є Matt Welsh, який був призначений Lars'ом
Wirzenius і Michael'ом K. Johnson.
Даний посібник є одним з набору розповсюджуваних
керівництв проекту LDP, який включає в себе "Керівництво
Користувача системи Linux "," Руководство Системного
Адміністратора системи Linux "," Керівництво Мережевого
Адміністратора системи Linux "і" Керівництво Зломщик Ядра
Linux ". Ці книги доступні в початковому форматі LaTeX,. Dvi форматі
і у форматі postscript через FTP:
ftp://sunsite.unc.edu/pub/Linux/docs/LDP
ftp://tsx-11.mit.edu/pub/linux/docs/guides
Для того, щоб зв'язатися з LDP, потрібно надіслати листа Matt'у
Welsh за вказаною нижче адресою:
[email protected]
Глава 2 Огляд Системи Linux
У цій главі дається огляд операційної системи Linux. Перш
всього розглядаються основні функції системи. Потім слід
опис програм, що реалізують ці функції. Мета голови - дати
розуміння системи в цілому, тому кожен розділ розглядається
більш докладно пізніше.
2.1 Різні складові операційної системи
Будь-яка UNIX-подібна операційна система складається з ядра і
деяких системних програм. Також існують деякі
прикладні програми для виконання якої-небудь завдання. Ядро
є серцем операційної системи. Воно розміщує файли на
диску, запускає програми і перемикає процесор і інше
обладнання між ними для забезпечення мультизадачності,
розподіляє пам'ять та інші ресурси між процесами,
забезпечує обмін пакетами в мережі і т.п. Ядро саме по собі
виконує тільки маленьку частину спільної роботи, але воно
надає засоби, що забезпечують виконання основних
функцій. Воно також запобігає використання прямого доступу до
апаратних засобів надаючи спеціальні засоби для
звернення до периферії. Таким чином ядро дозволяє контролювати
іспользовніє апаратних засобів різними процесами і
забезпечувати деякий захист користувачів один від одного.
Кошти, що надаються ядром, використовуються через системні
виклики (див. розділ 2 керівництва для більш докладної інформації з
цього питання).
Системні програми використовують кошти, що надаються
ядром для забезпечення виконання різних функцій операційної
системи. Системні та всі інші програми виконуються 'на
поверхні ядра ', в так званому режимі користувача.
Існує деякими різниця між системними і прикладними
програмами. Прикладні програми призначені для виконання
будь-якої певної завдання, в той час як системні програми
використовуються для підтримки роботи системи. Текстовий процесор
є прикладною програмою, а програма telnet - системної,
хоча часто межа між ними досить смутна.
Досить часто операційна система містить компілятори і
відповідні їм бібліотеки (GCC та C бібліотеки для Linux), хоча
не обов'язково всі мови програмування мають бути частиною
операційної системи. Документація, а іноді навіть ігри, можуть
бути її частиною. Зазвичай складу операційної системи
визначається вмістом установочного диска або стрічки, хоча справа
йде трохи складніше, тому що різні частини операційної
системи розкидані по різних FTP серверів у всьому світі.
2.2 Важливі складові ядра
Ядро системи Linux складається з декількох основних частин:
блок керування процесами, блок керування пам'яттю, драйвери
пристроїв, драйвери файлових систем, блок керування мережею а також
інші невеликі процедури.
Найбільш важливі складові ядра (що забезпечують
життєздатність системи) - це блок управління пам'яттю і
процесами. Блок управління пам'яттю забезпечує розподіл
областей пам'яті і swap-областей між процесами, що складають
ядра і для кеш-буфера. Блок управління процесами створює нові
процеси і забезпечує багатозадачність шляхом перемикання завдань.
На найнижчому рівні ядро містить драйвери пристроїв для
кожного типу підтримуваного обладнання. Існує досить
великий набір різних драйверів, так як постійно
розробляються нові типи пристроїв. Існує досить багато
однакових пристроїв, які відрізняються тільки тим, як
відбувається взаємодія між самим пристроєм і драйвером.
Така схожість дозволяє використовувати класи драйверів,
підтримують однакові операції. У кожного члена такого класу
використовується однотипний інтерфейс для ядра, але різні схеми
взаємодії з пристроєм. Наприклад, всі драйвери жорсткого
диска представляються для ядра абсолютно однаково, тобто у них у
всіх є такі операції, як 'ініціалізація жорсткого диска',
'читання сектора N', 'запис сектора N'.
Деякі функції, що надаються ядром, мають однакові
властивості. Наприклад, різноманітні мережеві протоколи об'єднані в один
програмний інтерфейс - BSD socket бібліотеку. Ось інший приклад -
різні файлові системи, що підтримуються системою Linux. Ядро
містить віртуальну файлову систему (Virtual File System - VFS)
яка включає в себе всі функції, які використовуються для роботи
системи, а також драйвер для кожної підтримуваної файлової
системи. При спробі доступу до будь-якої файлової системи запит
проходить через VFS, звідки спрямовується до відповідного
драйвера файлової системи.
2.3 Основні функції UNIX системи
У цьому розділі досить поверхово розглядаються
деякі найбільш важливі функції UNIX системи. Більш докладно вони
розглянуті у наступних розділах.
2.3.1 init
Єдину і найважливішу функцію в системі UNIX
надає пpоцесс init. Він запускається в будь-якій системі UNIX
як найперший процес, а також завершує процедуpу завантаження
системи. При запуску init, продовжується процес завантаження
(перевіряються та встановлюються файлові системи, запускаються
різні програми-демони і т.д.).
Точний список того, що виконується при запуску init, залежить
від версії програми. Зазвичай init надає
однокористувацький режим, за якого ніхто не може
підключитися до системи. Звичайний режим - це багатокористувацький.
Деякі версії використовують поняття "рівень запуску '. Наприклад,
однокористувацький і розрахований на багато користувачів режими - це різні
рівні запуску. Також існують додаткові рівні, наприклад
для запуску X-windows.
При працюючій системі, дві найважливіші завдання програми
init - це переконається, що всі програми-демони getty працюють
(тобто є можливість підключення до системи) та адаптування
orphan-процесів (тобто процесів, чий батьківський процес був
знищений; в системі UNIX всі процеси повинні належати одному
дереву процесів, тому orphan-процеси повинні бути
адаптовані).
При завершенні роботи системи та перезапуску, init знищує
всі залишилися процеси, демонтує файлові системи та
зупиняє процесор.
2.3.2 Підключення до системи з терміналів
Підключення до системи з терміналів (через послідовні
лінії) і з головної консолі (якщо не запущено X) забезпечується
програмою getty. init запускає окремий процес getty для
кожного терміналу. getty счітавает ім'я користувача і запускає
програму login, яка читає пароль. Якщо ім'я та пароль
відповідають одному користувачеві, то login запускає оболонку.
При виході з оболонки, тобто при виході з системи, або при
завершення програми login у разі якщо ім'я користувача і пароль
не підходять, init запускає новий процес getty. Ядро не
контролює підключення до системи, а лише виконує системні
програми.
2.3.3 Syslog
Іноді при роботі ядра або різних системних програм
виникають помилки, попередження та інші повідомлення. Програма
syslog записує всі повідомлення в файл так, що він може бути
згодом переглянутий. Syslog можна настроїти так, що
повідомлення будуть сортуватися і записуватися в різні файли з
пріоритету. Наприклад, повідомлення ядра часто направляються в
окремий файл, тому що ці повідомлення найбільш важливі і повинні
регулярно переглядатися, щоб уникнути серйозних проблем.
2.3.4 Періодичне виконання команд: cron та at
Як отдельнием користувачам, так і системного адміністратора
іноді потрібно періодично запускати певні команди.
Наприклад, системний адміністратор може потребоваться
періодично запускати команду для очищення каталогів від тимчасових
файлів (/ tmp та/var/tmp), для запобігання переповнення диска.
Для цього використовується функція cron. У кожного користувача
є файл crontab, в якому міститься список команд,
представлених до виконання і кількість разів, яку вони повинні
бути виконані. Програма-демон crond забезпечує своєчасне
виконання зазначених команд.
Функція at ідентична функції cron, тільки команда запускається
один раз у вказаний час та запуск більше не повторюється.
2.3.5 Графічний інтерфейс користувача
Чому в системі UNIX так і в Linux, призначений для користувача інтерфейс
не вбудовується в ядро системи. Замість цього він представляється
програмами користувацького рівня. Це застосовується як до
текстовим, так і до графічних оболонок.
Такий стандарт робить систему більш гнучкою, хоча і має свої
недоліки. Наприклад, це легко дозволяє створювати нові
інтерфейси для програм, що ускладнює вивчення системи.
Спочатку використовуваної з системою Linux графічної
оболонкою була система X Window System (скорочено X). X не
реалізує інтерфейс користувача, а тільки віконну систему,
тобто засоби, за допомогою яких може бути реалізований графічний
інтерфейс. Три найбільш популярних версії графічних інтерфейсів
на основі X - це Athena, Motif та Open Look.
2.3.6 Робота з мережею
Мережа - це засіб, що дозволяє з'єднуватися двох чи більше
комп'ютерів між собою.
UNIX-подібні операційні системи мають широкий спектр
мережевих можливостей. Більшість базових функцій (файлові
системи, друк, створення резервних копій і так далі) можуть бути
реалізовані за допомогою мережі. Це може значно полегшити
роботу системного адміністратора, тому що дозволяє використовувати
централізоване адміністрування.
Однак, у цій книзі поверхнево розглянуті питання роботи
з мережею. Для більш докладної інформації див книгу "Керівництво
Мережевого Адміністратора системи Linux ".
2.3.7 Підключення до системи через мережу
Підключення до системи через мережу працює трохи інакше,
ніж звичайне підключення. Існують окремі фізичні
послідовні лінії для кожного терміналу, через які і
відбувається підключення. Для кожного користувача, що підключаються
до системи, існує окреме віртуальне мережеве з'єднання та
їх може бути будь-яка кількість. Однак не представляється можливим
запустити окремий процес getty для кожного можливого
віртуального з'єднання. Існують також і інші способи
підключення до системи за допомогою мережі. Наприклад, telnet і rlogin
- Основні служби в TCP/IP мережах.
При використанні мережі для підключення до системи, крім
великої кількості процесів getty використовується окрема
програма-демон (при використанні як telnet так і login
використовуються різні програми-демони), яка відстежує всі
спроби з'єднання з комп'ютером. Якщо визначають спроба
з'єднання, то програма створює новий процес - створює сама себе
для обробки цього з'єднання - а потім продовжує відстеження
нових сполук. Створюваний процес ідентичний програмою getty.
2.3.8 Мережеві файлові системи
Одна з найбільш корисних функцій, яка може бути
реалізована за допомогою мережі, цей поділ файлів через мережеву
файлову систему. Зазвичай використовується система, яка називається Network
File System або NFS, яка розроблена корпорацією Sun.
При роботі з мережевою файловою системою будь-які операції над
файлами, що здійснюються на локальному ком'ютера, передаються через
мережу на віддалену машину. При роботі мережевої файлової системи
програма вважає, що всі файли на віддаленому комп'ютері є
на комп'ютері, де вона запущена. Таким чином поділ
інформації за допомогою такої системи не вимагає внесення
будь-яких змін в програму.
2.3.9 Пошта
Електронна пошта є найважливішим засобом зв'язку між
комп'ютерами. Електронні листи зберігаються в одному файлі у
спеціальному форматі. Для читання й відправлення листів застосовуються
спеціальні програми.
У кожного користувача є окремий "поштову скриньку"
(тобто файл, де інформація зберігається в спеціальному форматі), в
котрому зберігається приходить пошта. Якщо на ком'ютера приходить
лист, то програма обробки пошти знаходить файл поштової скриньки
соответвующего користувачів та додає туди одержаний лист.
Якщо ж поштову скриньку користувача знаходиться на іншому комп'ютері,
той лист перенаправляється на цей комп'ютер, де проходить його
наступна обробка.
Поштова система складається з безлічі різних програм.
Доставка листів до локальних або віддалених поштових скриньок
здійснюється однією програмою (наприклад, sendmail або smail), у той
час як для звичайної відправлення або перегляду листів застосовується
велике колічетсво різних програм (наприклад, Pine або elm).
Файли поштових скриньок зазвичай зберігаються у каталозі/var/spool/mail.
2.3.10 Друк
В один момент часу принтером може користуватися тільки
один користувач. Тому для того, щоб принтером могли
користуватися відразу декілька користувачів, використовується
спеціальна програма, яка забезпечує обслуговування черги до
принтером. Всі завдання для принтера містяться в буфеp. Коли
принтер закінчує обробку одного завдання, следуещее передається
до нього автоматично. Це значно спрощує роботу з принтером.
Програма обслуговування черги до принтера поміщає
інформацію, яка повинна бути роздрукована, на диск, тобто
текст розташовується на диску, у той час як завдання знаходиться в
черги. Це дозволяє прикладним програмам досить швидко
роздруковувати тексти, розміщуючи їх в чергу, тому що для
продовження роботи з додатком не потрібно чекати закінчення
роздруківки.
2.4 Структура файлової системи
Файлова система поділяється на кілька частин: файлова
система root, що складається з каталогів/bin,/lib,/etc,/dev і
деяких інших, файлова система/usr, де зберігаються різні
програми і дані не підлягають зміні, файлова система/var,
де містяться змінювані файли (такі як log файли тощо) і
файлова система/home, яка складається з особистих каталогів
користувачів. Поділ може істотно відрізнятися від вище
зазначеного в залежності від роботи системного адміністратора і
конфігурації апаратного забезпечення.
У главі 5 сруктурам файлової системи розглядається більш
докладно (див. також Linux Filesystem Standard).
Глава 3 Запуск Системи і Перезавантаження
У цьому розділі описується те, що відбувається в системі Linux
при запуску її і перезавантаження і як це правильно зробити.
3.1 Огляд
Процес включення комп'ютера і завантаження операційної системи
називається запуском. Під час запуску спочатку загружется невелика
програма, називається початковою завантажувачем, яка в свою
чергу загружет в пам'ять і запускає операційну систему.
Початковий завантажувач зазвичай знаходиться в певному місці на
жорсткому диску або дискеті. Тому як Linux це досить складна і
велика система, її запуск проводиться в два етапи, хоча первинно
завантаження код повинен бути досить маленьким (кілька сотень
байт).
На різних комп'ютерах початкова завантаження проводиться за
різному. На персональних комп'ютерах спочатку счітивется перший
сектор дискети або жорсткого диска (за допомогою процедур BIOS),
який називається завантажувальним сектором. У цьому секторі знаходиться
початковий завантажувач, який потім завантажує операційну систему,
яка може бути розташована в іншому місці на диску або
де-небудь ще.
Після завантаження Linux, ініціалізувалися драйвери пристроїв, а
потім запускається init (8), який в свою чергу запускає інші
процеси, які дозволяють підключатися до системи і забезпечують
нормальну роботу. Цей етап розглянуто нижче більш докладно.
Для перезапуску системи спочатку всі процеси повинні бути
завершені (тобто закриті всі використовувані ними файли та ін), потім
демонтуються файлові системи та swap-області і, врешті-решт,
на екран видається повідомлення про те, що харчування може бути
відключено. Якщо ж така процедура не буде зроблено, то можуть
відбутися серйозні збої в подальшій роботі системи. Наприклад,
інформація, що зберігається в кеш буфері файлової системи, буде
загублена, порушиться цілісність файлової системи і, отже,
вона буде не придатна до використання.
3.2 Процес запуску при близькому розгляді
Linux може бути запущена як з дискет, так і з жорсткого
диска. У книзі "Установка і запуск Linux" докладно описаний запуск
системи.
При включенні комп'ютера, спочатку BIOS виробляє
тестування обладнання, а потім запуск операційної системи.
Спочатку вибирається пристрій, з якого буде проводиться
запуск (звичайно перший дисковод, якщо в нього вставлена дискета, в
Інакше - перший жорсткий диск, якщо він встановлений, хоча
порядок вибору може бути налаштований) і зчитується найперший
сектор, який називається завантажувальним. Його також називають MBR
(Master Boot Record), так як у жорсткого диска може бути
кілька розділів і у кажодого може бути свій завантажувальний
сектор.
У завантажувальному секторі знаходиться невелика програма
(відносно невелика щоб вона могла розміститься в одному
секторі), яка завантажує і запускає операційну систему. При
завантаженні з дискети, в завантажувальному секторі знаходиться код, який
забезпечує тільки зчитування ядра системи в певну заздалегідь
область пам'яті. Завантажувальна дискета для Linux не містить ніяких
файлових систем. Ядро записано на дискеті як послідовність
блоків, тому що це значно спрощує процес завантаження. Однак,
цілком можна завантажуватися з дискети, на якій встановлена
яка-небудь файлову систему, використовуючи загpузчік LILO.
При завантаженні з жорсткого диска, код, розташований в MBR,
перевіряє таблицю розділів (також розташовану в MBR), визначає
активний розділ (розділ, що використовується при завантаженні), зчитує
завантажувальний сектор цього розділу і запускає лічений код. Код,
розташований в завантажувального сектору активного розділу жорсткого
диска, виконує ті ж функції, що і код, що знаходиться в
завантажувального сектору дискети: він зчитує ядро з обраного
розділу, а потім запускає його. Однак тут існує багато
тонкощів, так як використання окремого розділу диску тільки
для збереження коду ядра неефективно, тому код, розташований в
завантажувального сектору розділу, не просто послідовно зчитує
інформацію з диска, а використовує зчитування по секторах.
Існує кілька способів вирішення цієї проблеми, але найбільш
простим з них є використання LILO завантажувача (інформацію
з установки і налаштування LILO зверніться до документації по LILO).
При завантаженні з використанням LILO зазвичай відразу ж
завантажується і запускається ядро, задане за замовчуванням, однак
LILO можна настроїти так, щоб можна було б завантажити
одне з декількох можливих ядер або навіть іншу операційну
систему (на додаток до Linux). Також можна вказати потрібне ядро
або операційну сиситему під час завантаження. При натисканні клавіші
ALT, SHIFT або CTRL (після завантаження LILO) буде видано запит, де
можна вказати ядро або систему. Однак при конфігуруванні можна
встановити опцію, при якій LILO буде завжди видвать такий
запит, а також вказати час, після якого завантажується
ядро, встановлене за замовчуванням.
Існують і інші завантажувачі, подібні LILO, проте у нього
є декілька корисних функцій, яких немає в інших завантажувача,
так як він був написаний спеціально для Linux. Наприклад, є
можливість передачі параметрів ядру під час завантаження або
зміни деяких опцій, що вбудовані в ядро. Серед подібних
завантажувачів (bootlin, bootactv та ін) LILO є найкращим
вибором.
Завантаження системи як з жорсткого диска, так і з дискет має
свої переваги, хоча завантаження з жорсткого диска вважається краще
і швидше, так як вона дозволяє уникнути незручності, пов'язані з
зміною дискет. Однак у деяких випадках завантаження з дискет більш
зручна. Наприклад, при встановленні системи або при пошкодженні
файлової системи.
Після того, як ядро системи додано в пам'ять (з жорсткого
диска або з дискет) і запущено, виконуються приблизно
наступні дії:
Так як ядро Linux встановлено в запакованому вигляді, то перш
за все воно саме себе розпаковує. Це виконує невелика
програма, розташована на самому початку коду.
Якщо на комп'ютері встановлена відеоплата sVGA,
підтримуюча нестандартні текстові режими (такі як 100x40),
видається запит для вказівки необхідного режиму. При компіляції
ядра можна відразу вказати використовуваний режим, щоб він не
запитується системою під час завантаження. Режим також може бути
встановлений за допомогою LILO чи rdev (8).
Потім ядро тестує апаратне забезпечення (жорсткі диски,
дисководи, мережні адаптери та ін) і конфігурує відповідні
драйвери пристроїв. Під час цього процесу на екран видаються
підказує повідомлення. Ось приблизно те, що відбувається під час
завантаження:
LILO boot:
Loading linux.
Console: colour EGA + 80x25, 8 virtual consoles
Serial driver version 3.94 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16450
tty01 at 0x02f8 (irq = 3) is a 16450
lp_init: lp1 exists (0), using polling driver
Memory: 7332k/8192 available (300k kernel code, 384k reserved, 176k data)
Floppy drive (s): fd0 is 1.44M, fd1 is 1.2M
Loopback device init
Warning WD8013 board not found at i/o = 280
Math coprocessor using irq13 error reporting
Partition check:
hda: hda1 hda2 hda3
VFS: Mounted root (ext filesystem)
Linux version 0.99.pl9-1 (root @ haven) 05/01/93 14:12:20
Хоча текст повідомлень досить сильно різниться на різних
системах і залежить від апаратного забезпечення, версії Linux і
конфігурації.
Після цього, ядро намагається смонтіpовать файлову систему
root. Місце, куди вона буде змонтована, встановлюється під час
компіляції або за допомогою rdev або LILO. Тип файлової системи
визначається автоматично. Якщо система root НЕ монтіpуется,
наприклад через те, що ядро не містить драйвер
відповідної файлової системи, то система зависає.
Файлова система root зазвичай монтіpуется в режимі read-only
(це встановлюється таким же чином як і вузол монтіpованія).
Це робить можливим перевірку файлової системи в той час як вона
смонтіpована, хоча перевірка файлової системи, встановленої в
режимі read-write НЕ рекомедуется.
Потім ядро запускає програму init (8) у фоновому режимі (вона
розташована в каталозі/sbin/init) яка стає головним
процесом. init виконує різні функції, необхідні при
встановлення системи.
Зрештою init запускає програму getty (8) для
віртуальних консолей і послідовних ліній. Ця програма
дозволяє підключатися до системи за допомогою віртуальних консолей
і терміналів, підключених через послідовні порти. init
може бути налаштована також для запуску та інших програм.
Після цього процес запуску системи вважається завершеним і
система готова до роботи.
3.3 Завершення роботи та вимкнення системи
При вимкнення системи Linux необхідно виконувати деякі
процедури. Якщо цього не зробити, то файлові системи та файли
можуть пошкодитися. Це відбувається через наявність в Linux
дискового кешу, інформація з якого записується на диск тільки
через деякі проміжки часу. Це значно підвищує
продуктивність системи, але також означає, що якщо просто
вимкнути живлення комп'ютера, то в дисковому кеші може знаходиться
велику кількість інформації і файлова система може бути
частково пошкоджена, тому що на диск звичайно скидається тільки
частина інформації.
Іншою причиною для цього є мультизадачність системи,
де одночасно може виконуватися декілька процесів і
вимкнення живлення може бути згубним для системи. Особливо це
стосується комп'ютерів, на яких одночасно працюють кілька
користувачів.
Існують команди, призначені для правильного
вимикання системи - це shutdown (8) і halt (8), розташовані в
каталозі/ sbin. Є два звичайні способи їх застосування.
Якщо система встановлена на комп'ютері, де працює одна
користувач, то зазвичай завершують роботу всіх програм, роботу
всіх віртуальних консолей, входять в систему під користувачем root
(або залишаються підключеними під цим користувачем, тільки в цьому
випадку потрібно перейти в кореневий каталог, щоб уникнути проблем з
демонтування файлових систем), потім виконується команда halt
або shutdown-h now (при бажанні можна встановити затримку,
яка встановлюється заміною параметра now на знак '+' і числом
хвилин, після закінчення яких буде завершена робота системи) або
просто halt.
Якщо на копьютера, на якому встановлена система, що працює
одночасно кілька користувачів, то можливе використання
команди shutdown в такому форматі:
shutdown-h + time message,
де time цей час, після якого робота системи буде
завершена, а message - повідомлення, в якому пояснюється причина
вимкнення. Напpимеp,
root # shutdown-h +10 'We will install a new disk. System should
> Be back on-line in three hours. '
Виконання цієї команди попередить кожного користувача,
що працює в системі, що вона буде вимкнено через 10 хвилин.
Повідомлення видається на кожен термінал, де працюють користувачі,
включаючи xterm.
Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995 ...
We will install a new disk. System should
be back on-line in three hours.
The system is going DOWN for system halt in 10 minutes!!
Видача повідомлення автоматично повторюється кілька разів
перед припиненням роботи системи і кожного разу з більш коротким
інтервалом. При використанні halt не можна встановити затримку,
тому ця програма рідко застосовується на розрахованих на багато користувачів
системах.
Зауваження: файл/etc/inittab містить команди, які виконуються
при виключенні системи.
Після запуску процесу припинення роботи системи,
демонтуються всі файлові системи (крім системи root),
завершується виконання всіх процесів і програм-демонів, потім
демонтується файлова система root і вся робота завершується.
Після цього видається повідомлення, в якому говориться, що можна
відключити живлення. Тільки після цього комп'ютер може
бути відключене.
У деяких випадках неможливо завершити цей процес
відповідним чином. Наприклад, при пошкодженні коду ядра в
пам'яті, порушується його робота або система зависає і просто немає
можливості ввести нову команду можна тільки сподіватися, що
нічого не пошкодиться і вимкнути живлення. Якщо ж неполадки не
такі серйозні (наприклад вийшла з ладу клавіатура), а ядро і
програма update працюють нормально, то найкращим варіантом буде
почекати кілька хвилин, поки update (8) не збереже на диску
інформацію, що зберігається в кеш-буфері і тільки після цього вимкнути
харчування.
Деякі вимикають Копьютер після триразового виконання
команди sync (8), яка скидає на диск вміст буфера, і,
після припинення звернення до диска, вимикають комп'ютер. Якщо в
про виключення робота всіх програ