Початкове завантаження комп'ютера
Початкове завантаження — складний і багатокроковий процес запуску комп'ютера.
Завантажувальна послідовність — це послідовність дій, які повинен виконати комп'ютер для запуску операційної системи (точніше, завантажувача), незалежно від типу встановленої ОС.
Початкове завантаження
Історично комп'ютерні системи могли виконувати лише команди, що знаходяться в оперативній пам'яті комп'ютера.[джерело?] Як альтернатива програмний код може виконуватися і безпосередньо у пам'яті довготривалого зберігання (наприклад, NVDIMM).
Операційні системи для настільних комп'ютерів, серверів і мейнфреймів як правило зберігаються на жорстких дисках, завантажувальних CD-ROM, USB-дисках або в локальній мережі, і вимагають завантаження деяких своїх компонентів (ядро операційної системи, драйвери пристроїв) до оперативної пам'яті машини перед запуском ОС. Цій меті слугує спеціальна комп'ютерна програма — завантажувача операційної системи. Ця програма не володіє всією функціональністю ОС, але її достатньо для того, щоб завантажити вказані компоненти (часто методом багаторівневого завантаження) до пам'яті і передати їм керування
У сучасних комп'ютерах процес початкового завантаження починається з виконання процесором програми, розташованій у постійній пам'яті (наприклад, BIOS у IBM PC-сумісних комп'ютерах, або UEFI), починаючи з наперед заданої адреси (процесор робить це після перезавантаження без якої б то не було допомоги). Це програмне забезпечення може виявляти пристрої, придатні для завантаження з них, і завантажувати зі спеціального розділу вибраного пристрою (завантажувального сектора диска, або файлової системи UEFI) завантажувач ОС.
Початкові завантажувачі повинні відповідати специфічним вимогам. У випадку BIOS або CSM-завантаження на IBM PC-сумісному комп'ютері завантажувач першого рівня повинен міститися в перших 446 байтах головного завантажувального запису, залишивши місце для 64 байт таблиці розділів і 2 байти для сигнатури 55AAh, необхідної для того, щоб BIOS виявила сам початковий завантажувач. У випадку UEFI-завантаження файл повинен бути у спеціальному форматі (Portable Executable).
Історія
Перші комп'ютери мали набір перемикачів, які дозволяли оператору розміщувати початковий завантажувач в пам'яті до запуску процесора. Потім завантажувач зчитував операційну систему з зовнішнього пристрою, наприклад з перфострічки або з жорсткого диска.
Псевдоасемблерний код початкового завантажувача може бути настільки ж простим, як і наступна послідовність інструкцій:
0: записати в регістр P число 8 1: перевірити, що пристрій зчитування перфострічок може починати зчитування 2: якщо не може, перейти до п. 1 3: прочитати байт з пристрою зчитування перфострічок і записати його в акумулятор 4: якщо перфострічка закінчилася, перейти до п. 8 5: записати значення, збережене в акумуляторі, в оперативну пам'ять за адресою, що зберігається в регістрі P 6: збільшити значення регістра P на одиницю 7: перейти до п. 1
Даний приклад заснований на початковому завантажувачі одного з міні-комп'ютерів, випущеного в 1970-х роках фірмою Nicolet Instrument Corporation:
0: записати в регістр P число 106 1: перевірити, що пристрій зчитування перфострічок може починати зчитування 2: якщо не може, перейти до п. 1 3: прочитати байт з пристрою зчитування з перфострічок і записати його в акумулятор 4: якщо перфолента закінчилася, перейти до п. 8 5: записати значення, збережене в акумуляторі, в оперативну пам'ять за адресою, що зберігається в регістрі P 6: зменшити значення регістра P на одиницю 7: перейти до п. 1
Довжина завантажувача другого рівня була такою, що останній байт завантажувача змінював команду, розташовану за адресою 6. Таким чином, після виконання пункту 5 стартував завантажувач другого рівня. Завантажувач другого рівня очікував заправки в пристрій зчитування перфострічки довгої перфострічки, яка містила операційну систему. Відмінністю між завантажувачем першого рівня і завантажувачем другого рівня були перевірки на помилки зчитування з перфострічки, які часто зустрічалися в той час, і, зокрема, на використовуваних в даному випадку телетайпах ASR-33.
Деякі операційні системи, найбільш характерними з яких є старі (до 1995 року) операційні системи комп'ютерів Macintosh вироблених Apple Computer, настільки тісно пов'язані з апаратним забезпеченням комп'ютерів, що на даних комп'ютерах неможливо завантажити будь-яку іншу операційну систему. В таких випадках зазвичай розробляється початковий завантажувач, який працює як завантажувач стандартної ОС, а потім запускає альтернативну операційну систему. Apple використовувала даний спосіб для запуску A/UX (UNIX-подібна операційна система), а потім він використовувався різними безкоштовними операційними системами.
Пристрої, що ініціалізуються BIOS
До завантаження операційної системи BIOS має ініціалізувати пристрої введення (клавіатура, миша), базові пристрої виводу (відеокарта і дисплей), і пристрій, з якого буде проведене завантаження ОС — дисковод, жорсткий диск, CD-ROM, флеш-диск, SCSI-пристрій, мережева карта (при завантаженні по мережі; наприклад, за допомогою PXE).
Послідовність завантаження IBM PC-сумісного комп'ютера
BIOS та CSM
IBM PC-сумісний комп'ютер після увімкнення живлення формує сигнал апаратного «скидання» (англ. RESET центрального процесора, після чого процесор починає роботу в реальному режимі адресації з сегментною організацією і виконує першу інструкцію за адресою FFFF:0 (кодовий сегмент CS має значення FFFFh, а вказівник інструкцій IP значення 0). В кінці доступного процесору адресного простору оперативної пам'яті розташований адресний простір постійного запам'ятовувача — мікросхеми BIOS, куди і передається керування за інструкцією безумовного переходу, що відображена за адресою FFFF:0.
Програма ініціалізації BIOS за допомогою програми POST перевіряє, що пристрої комп'ютера працюють коректно і ініціалізує їх.
Потім BIOS опитує по порядку пристрої з заздалегідь сформованого (в консольній утиліті CMOS SETUP) списку завантажувальних пристроїв, поки не знайде завантажувальний пристрій. Якщо такий пристрій не буде знайдено, BIOS виводитье на екран повідомлення про помилку і процес завантаження зупиняється. При виявленні BIOS'ом завантажувального пристрою, з останнього буде зроблена спроба читання даних його нульового сектора (512 байт, в яких повинен перебувати завантажувальний запис). Після успішного завершення читання даних нульового сектора завантажувального пристрою в оперативну пам'ять з початкового адресою 0000:7С00, BIOS передає на цю адресу подальше виконання інструкцій процесора.
Нульовий сектор завантажувального жорсткого диска містить так званий «головний завантажувальний запис (MBR — Master Boot Record), який містить як дані перших чотирьох записів таблиці розділів, так і інструкції процесора Intel 80x86, що забезпечують пошук за цими записами активного розділу, з якого, за допомогою однієї з функцій базової системи введення-виведення — INT 13h, реалізованої у вигляді обробника переривання процесора, буде зчитаний завантажувальний запис операційної системи. Цей завантажувальний сектор, як правило, залежить від операційної системи і повинен зробити завантаження в оперативну пам'ять ядра операційної системи, з подальшою передачею на нього виконання інструкцій процесора. Якщо активного розділу не існує, або завантажувальний сектор активного розділу некоректний, MBR може завантажити резервний початковий завантажувач і передати управління йому. Резервний початковий завантажувач повинен вибрати розділ (часто з допомогою користувача), завантажити його завантажувальний сектор і передати йому управління, який, у свою чергу, передає управління безпосередньо завантажувачу ОС (подальші етапи завантаження залежать від типу/версії встановленої ОС).[lower-alpha 1]
Інші види завантажувальних послідовностей
Деякі процесори мають інші режими завантаження. Наприклад, більшість цифрових сигнальних процесорів можуть завантажитися в наступних режимах:
- завантаження з послідовного порту;
- завантаження з паралельного порту;
- завантаження з використанням HPI (Host-Port Interface);
- завантаження після «гарячого» перезавантаження (відрізняється від послідовності виконуваної при початковому увімкнені живлення).
Див. також
Примітки
- Сині екрани BSoD (та інші фатальні помилки) можуть бути виведені лише після початкового завантаження, коли керування завантаженням передається завантажувачу і ядру ОС. На етапі початкового завантаження усі помилки (POST, BIOS, MBR, таблиці FAT/MFT, сектора VBS, IPL (PnP BIOS) відображаються дуже коротко і на чорному екрані.
Джерела
Література
- Загрузка // Модернизация и ремонт ПК : пер. с англ. / Скотт Мюллер. — 17-е изд. — М. : Вильямс, 2008. — Гл. 22 : Средства диагностики и техническое обслуживание. — С. 1341–1349. — ISBN 978-5-8459-1126-1.
Посилання
- Краткий обзор загрузки Windows, Linux, Mac OS X, QNX // sysbin.com. — 07.05.2005.
- Подробности процесса загрузки Linux : Путешествие от Master Boot Record до первого приложения, исполняющегося в пространстве пользователя / М. Тим Джонс // IBM Developer. — 30.09.2008.
- Этапы загрузки Windows под микроскопом + анализ и диагностика : [видео] // DesignerMix : канал YouTube. — 28.08.2013.
- BIOS Boot Specification : Version 1.01 : January 11, 1996 / Compaq Computer Corporation, Phoenix Technologies Ltd., Intel Corporation // www.intel-assembler.it.