Що саме змушує BIOS вирішити, завантажувальний диск чи ні?
BIOS вирішує, чи завантажується диск на основі 16-байтового запису розділів, присутнього після кодової області MBR (у таблиці, що починається з 446- го байта). Перший байт у кожному записі розділу представляє стан завантаження накопичувача (і встановлюється 0x80
як завантажувальний, чи 0x00
ні). Деякі BIOS можуть перевіряти інші частини MBR (наприклад, типи розділів, контрольні суми), але основною вимогою є прапор завантаження.
Як послідовність завантаження пропускає з диска №1 і продовжує намагатися завантажуватися з диска №2, якщо в системі встановлено більше одного диска?
Це залежить від реалізації, і тому вам потрібно правильно вибрати порядок завантаження. У більшості випадків BIOS перегляне кожний носій інформації у встановленому вами порядку і визначить, чи може він завантажуватися з цього пристрою (за допомогою даних MBR). Якщо це можливо, це робить - якщо ні, то він продовжує циклічно переглядати інші пристрої (знову ж таки, у вибраному вами порядку).
Після того, як BIOS передав керування завантажувачу на диску №1, у якого не було «завантажувальних» розділів - як саме викликається завантажувач на другому диску?
Після того, як буде знайдено дійсний завантажувальний пристрій (тобто встановлено прапорець для завантаження і пройдуть інші додаткові перевірки), BIOS копіює сектор MBR в оперативну пам'ять. Потім BIOS переміщує покажчик інструкцій на початок цього місця (використовуючи JUMP
інструкцію), де знаходиться сегмент коду MBR, і комп'ютер потім запускається.
Якщо BIOS підтримує специфікацію завантаження BIOS , код MBR може повернути управління в BIOS за допомогою певної інструкції, сигналізуючи про збій завантаження і спонукаючи спробувати наступний пристрій. Однак у старих BIOS просто надрукується повідомлення про помилку. Хороша підказка, якщо ви підтримуєте BIOS - це чи можете ви завантажуватися з USB.
Я розумію, що єдине, що BIOS зазвичай перевіряє на MBR, це його підпис у самому кінці сектору 512 байтів, а потім він просто передає керування початковому завантажувачу, який знаходиться в першому 446 байті завантажувального сектора.
Це правильно, хоча слід зазначити, що більшість сучасних BIOS також шукатимуть таблицю розділів GUID, а також старішу, звичайну таблицю у стилі MBR.
Чи означає це, що перші 446 байтів завантажувального сектора ОБОВ'ЯЗКОВО містять якийсь змістовий код завантажувача, навіть якщо диск не завантажується?
Ні , але на диску має бути дійсна таблиця розділів MBR або GUID - інакше комп'ютер не визначить. Хоча кодова частина MBR дійсно може бути порожньою, перший сектор накопичувача повинен мати добре сформовану MBR / GPT.