Далі: Трохи більше про вимкнення
Вгору: Загрузка та вимкнення системи
Назад: Огляд процесів старту та
Старт системи зблизька
Лінакс можна загрузити або із гнучкого, або із жорсткого
диску123. Розділ ``Установка'' в Посібнику по установці та перших
кроках в Лінаксі 124 розкаже Вам, як зробити так,
щоб Лінакс грузився або звідти, або звідти.
Під час початкового старту комп'ютера BIOS виконує
різноманітні тести, перевіряючи, що з апаратурою все в
порядку,125 і після цього починає справжню
загрузку. Він вибере дисковий пристрій (в більшості випадків -
перший дисковід, якщо в нього вставлена дискета, якщо ж ні -
то перший жорсткий диск, якщо такий встановлено в
комп'ютері. Інколи порядок пошуку може змінюватися.) і
прочитає самий перший сектор цього диску. Цей сектор називають
загрузочним сектором126, у
відношенні до жорстких дисків цей сектор називається також
головним загрузочним сектором127, оскільки на диску може бути кілька розділів, і кожен
із розділів має свій власний загрузочний сектор.
Загрузочний сектор містить невелику програмку (малу настільки,
що вона може поміститися в один сектор). Відповідальністю цієї
програмки є: прочитати операційну систему з диску та
стартувати її. При загрузці Лінакса з дискети, в загрузочному
секторі записана програма, яка просто-напросто читає кілька
сотень перших блоків (в залежності від справжнього розміру
ядра) в попередньо визначену ділянку пам'яті. Дуже часто на
загрузочній дискеті файлової системи немає. Ядро просто
записується в послідовності секторів. Це значно полегшує
процес старту системи. Однак, можливо також вантажити Лінакс з
дискети з файловою системою, користуючись LILO (the LInux
LOader)128. 129
При загрузці з жорсткого диску, код (програма) в головному
загрузочному секторі аналізує таблицю розділів диску (яка
також знаходиться в головному загрузочному блоці) і знаходить
активний підрозділ. Для того, щоб було зрозуміло, що з такого
розділу можна грузитися, він позначається спеціальним
прапорцем - бітом. Після цього код загрузчика з MBR читає
загрузочний сектор активного розділу і передає на нього
керування процесору. Код в загрузочному секторі активного
розділу робить те ж саме, що і код в загрузочному секторі
дискети: читає ядро з диску та запускає його на
виконання. Звичайно ж, подробиці старту відрізняються. Не має
ніякого сенсу тримати на диску окремий розділ тільки для того,
щоб тримати на ньому ядро. Тож, загручоний код в загрузочному
секторі диску не може просто читати все підряд з послідовності
секторів. Він повинен спершу визначити де операційна система
розмістила ядро на диску. Є кілька різних шляхів вирішення
питання пошуку ядра на диску, але найбільш вживаний - це
застосування LILO. (Подробиці того, як саме це зробити,
виходять за межі тематики цієї дискусії, отож дивіться
документацію по LILO, щоб зрозуміти ці процеси краще.)
При загрузці комп'ютера з LILO, як правило, він стартує Ваше
``основне''(``робоче'') ядро. LILO можна сконфіґурувати так,
що він буде загружати інші ядра, або навіть одну з кількох
оперативних систем. Крім того, LILO дає користувачеві вибір
того, яке ядро чи яку систему стартувати при даній
загрузці. LILO можна настроїти так, що при натисканні клавіш
alt, shift, чи ctrl під час загрузки, він
зупиниться, утримається від стандартної загрузки і спитає яку
систему загрузити. Також LILO можна настроїти таким чином, що
він завжди буде зупинятися при загрузці на певний час
щоб спитати, яку систему грузити. Якщо LILO не отримає
відповіді на протязі цього часу, то загрузить основне ядро.
При використанні LILO ядру системи також можна передавати
параметри з командного рядка.
META: Існують також інші загрузчики окрім LILO. Інформація про
них буде додана пізніше, в наступних версіях. loadlin.
Як загрузка з дискети, так і загрузка з жорсткого диску мають
як свої плюси, так і мінуси. Але загалом загрузка з жорсткого
диску виглядає набагато краще, оскільки можна позбутися цих
дискет, які будуть тягатися скрізь і всюди. Крім того - це
швидше. Однак, інколи можливо трохи важче встановити систему
так, щоб вона загружалася з жорсткого диску. Тому багато хто
спочатку загружають систему з дискетв. Після того, як система
в основному встановлена і сконфіґурована, встановлюють LILO і
починають грузитися з жорского диску.
Коли ядро системи вже прочитане в пам'ять системи,
відбувається приблизно таке:
-
Ядро Лінакса записується на диск стисненим
(заархівованим). Отже воно має бути розархівованим
спочатку. Початок ядра містить невеличку програмку, яка
виконує цю операцію130.
-
Якщо Ваша система має відеоплату типу cупер-VGA, то Лінакс
зможе це розпізнати. Тоді Лінакс дасть можливість
скористуватися спеціальними текстовими режимами, такими, як,
наприклад, 100 стовпчиків по 40 рядків. Відео режим екрану
можна встановити під час компіляції ядра. Тоді під час старту
ядро не буде задавати зайвих запитань. Крім того цього ж можна
добитися за допомогою LILO або rdev .
-
Після цього ядро починає перевіряти яке обладнання має
комп'ютер (жорсткі диски, приводи дискет, плати мережі...),
та конфіґурує деякі з драйверів знайдених пристроїв
відповідно. Під час цього на екран виводяться повідомлення про
знахідки ядра. Наприклад, під час загрузки на своєму екрані я
бачу:
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/8192k 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
Повідомлення на Вашому екрані будуть іншими. Вони залежать від
обладнання, встановленого в системі, від версії Лінакса та від
конфіґурації системи.
-
Після цього ядро робить спробу змонтувати кореневу файлову
систему. Місцезнаходження її задається під час компілювання
ядра, командою rdev чи за допомогою LILO. Тип файлової
системи визначається автоматично. Якщо ядро не може змонтувати
кореневу файлову систему (наприклад, з тої причини, що Ви
забули включити драйвер даної системи в ядро під час його
компіляції), ядро панікує і зупиняє систему (все одно йому
нема чого робити).
Звичайно коренева файлова система монтується в режими тільки
читання (це встановлюється так само, як і її місце). Це дає
можливість перевіряти файлову систему під час монтування, бо
не дуже гарно перевіряти файлову систему тоді, коли вона
змонтована на запис.
-
Після цього ядро стартує програму init , яка знаходиться
в /sbin/init . init запускається в фоновому
режимі131 і завжди отримує номер 1. init виконує різні стартові
функції. Що саме він робить залежить від його конфіґурації,
дивіться розділ (не написаний поки що). Як
мінімум він стартує деякі важливі демони.
-
Після цього init переходить в багато користувацький
режим і стартує getty для віртуальних консолів та
послідовних портів. Команда getty - це програма, яка
дозволяє користувачам реєструватися в системі, використовуючи
при цьому віртуальні консолі або послідовні порти. В
залежності від того, як він сконфіґураваний init може
стартувати також інші програми.
-
Після цього вже загрузка системи закінчена і система працює в
своєму нормальному режимі.
Далі: Трохи більше про вимкнення
Вгору: Загрузка та вимкнення системи
Назад: Огляд процесів старту та
Dmytro Kovalev
1999-06-10
|