Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_Шеховцов_1.docx
Скачиваний:
73
Добавлен:
09.11.2019
Размер:
14.73 Mб
Скачать

19.1.4. Завантаження та ініціалізація ядра

Код ядра зберігають в окремому файлі на диску, завантажувач повинен його знай­ти. Є різні підходи до реалізації завантаження ядра: воно може завантажитися у пам'ять повністю або частинами (при цьому одні частини можуть завантажува­ти інші за потребою), або у частково стиснутому стані (а після виконання деяких попередніх операцій бути розпакованим).

У разі одноетапного завантаження ядро завантажують завжди в реальному ре­жимі. У разі двоетапного — режим завантаження залежить від того, чи перемика­ють завантажувач другого етапу в захищений режим.

Після завантаження ядра у пам'ять керування передають за адресою спеціальної процедури, що починає процес ініціалізації ядра, і виконуються такі дії, як опитуван­ня та ініціалізація устаткування (зазвичай ініціалізують все устаткування — навіть те, що було вже проініціалізовано BIOS), ініціалізація підсистем ядра, завантажен­ня та ініціалізація необхідних драйверів (насамперед диска та відеокарти), монту­вання кореневої файлової системи. Точна послідовність дій різна для різних ОС.

19.1.5. Завантаження компонентів системи

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

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

19.2. Завантаження Linux

19.2.1. Особливості завантажувача Linux

Під час завантаження Linux використовують двоетапний завантажувач. Є кілька програмних продуктів, що реалізують такі завантажувачі, найвідоміший із них lilo (від linux loader). Він може бути встановлений як у MBR (замінивши там код, що завантажує перший сектор активного розділу), так і у завантажувальному секторі якогось (звичайно активного) розділу диска. Другий підхід є безпечні­шим за умов, коли на комп'ютері встановлено кілька ОС у режимі мультизаван-таження, оскільки деякі ОС можуть перезаписувати MBR за своєю ініціативою.

Перша частина І і lo, записана у завантажувальний сектор або MBR, під час свого виконання готує пам'ять і завантажує в неї другу частину. Та зчитує із дис­ка двійкове відображення карти наявних на комп'ютері варіантів завантаження (різні ОС, різні установки Linux тощо) і пропонує користувачу вибрати один із них (за допомогою підказки «LILO boot>). Зазначимо, що вихідну версію карти варіантів завантаження створює користувач (системний адміністратор) у вигляді звичайного текстового файла /etc/lilo.conf. Після кожної зміни карти необхідно об­новлювати її відображення на диску, використовуване завантажувачем. Для цього виконують команду (із правами root):

# lilo

Після вибору користувачем одного із варіантів завантаження поведінка заван­тажувача залежить від характеру файлової системи для розділу. У разі вибору розділу з іншою ОС (наприклад, Windows) зчитують у пам'ять і виконують за­вантажувальний сектор цього розділу (тому за допомогою Шо можна завантажи­ти будь-яку ОС), якщо ж вибрано розділ із Linux, у пам'ять завантажують ядро системи (його адреса на диску міститься в карті варіантів завантаження). Після завантаження у пам'яті з'являється стиснуте ядро системи і придатний для вико­нання код двох функцій завантаження: setupO і startup_32(). Код завантажувача переходить до виконання функції setupO, починаючи ініціалізацію ядра.