3. Завантажувач ос
Завантажувачем ОС (boot loader) називають програму, викликану кодом BIOS під час виконання процедури початкового завантаження для створення образу ядра операційної системи в оперативній пам'яті. Розглянемо основні принципи роботи найпростішого завантажувача в архітектурі PC.
Як зазначалося, BIOS починає виконувати код, який зберігається у MBR.
Звичайно MBR містить таблицю розділів і невелику програму, що завантажує перший (завантажувальний) сектор одного із розділів у пам'ять і починає виконувати код, що перебуває в ньому, -зазвичай цей код називають кодом завантажувача ОС. Вибір розділу, з якого потрібно завантажити сектор, переважно здійснюють за допомогою прапорця активного розділу, заданого для елемента таблиці розділів. У такий спосіб можна завантажити тільки ту ОС, ядро якої перебуває на активному розділі, інші підходи розглянемо пізніше.
Завантажувач ОС звичайно записують у завантажувальний сектор під час інсталяції системи, тоді ж задається і код для MBR. Код найпростішого завантажувача зводиться до пошуку на диску ядра ОС (зазвичай це файл, що перебуває у фіксованому місці кореневого каталогу) і завантаження його у пам'ять.
Двоетапне завантаження
Використання завантажувального сектора для безпосереднього завантаження ядра ОС має такі недоліки:
код завантажувача вимушено є дуже простим, тому в ньому не можливо виконувати складніші дії (наприклад, керувати завантаженням кількох ОС), більшість інших недоліків є наслідками цього;
не можливо передавати параметри у завантажувач;
процес обмежений описаною схемою перемикання із MBR на завантажувальний сектор, немає можливості керувати цим процесом;
немає змрги завантажувати ядро з іншого розділу диска або із підкаталогу;
ОС завжди буде запущена в реальному режимі процесора.
Для того щоб вирішити ці проблеми, код завантажувача ОС має бути ускладнений. Природно, що ускладнений код не поміститься в один сектор, тому запропоновано підхід, який отримав назву схеми двоетапного завантаження.
У цьому разі завантажувач розбивають на дві частини: завантажувач першого і другого етапів. Перший, як і раніше, зберігають у завантажувальному секторі диска (зазначимо, що під час використання цієї технології він може також зберігатися і у MBR), але тепер основним його завданням є пошук на диску і завантаження у пам'ять не ядра, а завантажувача другого етапу.
Завантажувач другого етапу -це повномасштабне застосування, яке отримує контроль над комп'ютером після виконання початкового завантаження (воно може бути виконане в реальному режимі процесора, а може перемикатися у привілейований режим). По суті, такий завантажувач є міні-ОС спеціалізованого призначення.
Розглянемо деякі можливості двоетапного завантажувача.
У ньому можна керувати завантаженням кількох операційних систем. Особливо зручно це робити у завантажувачах, що приймають керування від MBR: при цьому завантажувач бере на себе пошук активного розділу і завантаження системи із нього. Конфігурацію такого завантажувача можна динамічно змінювати під час зміни розділів диска. Завантажувач може містити код доступу до різних файлових систем, код завантаження різних ядер тощо.
Може надавати інтерфейс користувача, який зазвичай зводиться до відображення меню вибору завантажуваної операційної системи. Можливе також передавання введених користувачем параметрів у ядро перед його завантаженням.
Його конфігурація може бути задана користувачем із завантаженої ОС. Для цього, наприклад, можна задати текстовий конфігураційний файл, зберегти його на диску і запустити спеціальну утиліту, що зробить синтаксичний розбір файла, перетворить його у внутрішнє відображення і збереже на диску у фіксованому місці, відомому завантажувачу.
Не обмежений одним розділом і одним диском завантажувач може працювати
з усіма дисками комп'ютера, завантажувати ядра, що перебувають у різних місцях на диску (зокрема всередині ієрархії каталогів).
Двоетапні завантажувачі надзвичайно поширені, їх можуть постачати разом з ОС, а також вони можуть бути реалізовані як окремі продукти -менеджери завантаження (boot managers).
