Завантажувальний сектор та первинний завантажувач - IT1100 Операційні системи UNIX

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

Якби первинний завантажувач був більше, він, напевно, і сам міг би розібратися, де знаходиться ядро ​​операційної системи, і зміг би самостійно рахувати його, розмістити в пам'яті, налаштувати і передати йому керування. Однак ядро ​​операційної системи має досить складну структуру – а отже, і непростий спосіб завантаження; воно може бути досить великим, і, що найнеприємніше, може розташовуватися невідомо де на диску, підкоряючись законам файлової системи (наприклад, складатися з кількох частин, розкиданих по диску). Врахувати все це первинний завантажувач не в змозі. Його завдання скромніше: визначити, де на диску знаходиться «великий» вторинний завантажувач, завантажити та запустити його. Вторинний завантажувач простий, і його можна покласти в заздалегідь визначене місце диска, або, на крайній край, покласти в заздалегідь певне місце карту розміщення, що описує, де саме шукати його частини (розмір вторинного завантажувача обмежений, тому побудувати таку картку можливо).

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

У разі сумісного IBM-комп'ютера розмір завантажувального сектора становить всього 512 байтів, з яких далеко не всі припадають на програмну область. Завантажувальний сектор IBM PC, званий MBR (master boot record), містить також таблицю розбиття диска, структуру якої описано в лекції 11. Зрозуміло, що програма такого розміру не може похвалитися різноманітністю функцій. Стандартний для багатьох систем завантажувальний сектор може лише вважати таблицю розбиття диска, визначити так званий розділ завантаження (active partition) і завантажити програму, розташовану на початку цього розділу. Для кожного типу диска може бути своя програмна частина MBR, що дозволяє зчитувати дані з будь-якого місця диска, відповідно до його типу та геометрії. Однак зчитувати можна все ж таки не більше одного сектора: невідомо, для чого використовуються встановленою на цьому розділі операційною системою другий та наступні сектори. Виходить, що стандартна програмна частина MBR - це передзавантажувач, який зчитує і запускає справжній первинний завантажувач з першого сектора завантажувального розділу.

Існують версії передзавантажувача, що надають користувачеві можливість самостійно вибрати, з якого розділу виконувати завантаження. Це дозволяє для кожної з встановлених операційних систем зберігати власний первинний завантажувач на початку розділу та вільно вибирати серед них. У стандартній схемі завантаження Linux використовується інший підхід: простий первинний завантажувач записується у MBR, а функція вибору передається вторинному завантажувачу.

Первинний завантажувач. Перша стадія завантаження комп'ютера: програма, розмір та можливості якої залежать від апаратних вимог та функцій BIOS.Основне завдання - завантажити вторинний завантажувач.