Початкове завантаження комп'ютера

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Windows XP завантажується в інтернет-телефоні-автоматі

Початкове завантаження — складний і багатокроковий процес запуску комп'ютера.

Завантажувальна послідовність — це послідовність дій, які повинен виконати комп'ютер для запуску операційної системи (точніше, завантажувача), незалежно від типу встановленої ОС.

Початкове завантаження[ред. | ред. код]

Історично комп'ютерні системи могли виконувати лише команди, що знаходяться в оперативній пам'яті комп'ютера.[джерело?] Як альтернатива програмний код може виконуватися і безпосередньо у пам'яті довготривалого зберігання (наприклад, NVDIMM[en]).

Операційні системи для настільних комп'ютерів, серверів і мейнфреймів як правило зберігаються на жорстких дисках, завантажувальних CD-ROM, USB-дисках або в локальній мережі, і вимагають завантаження деяких своїх компонентів (ядро операційної системи, драйвери пристроїв) до оперативної пам'яті машини перед запуском ОС. Цій меті слугує спеціальна комп'ютерна програма — завантажувача операційної системи. Ця програма не володіє всією функціональністю ОС, але її достатньо для того, щоб завантажити вказані компоненти (часто методом багаторівневого завантаження) до пам'яті і передати їм керування

У сучасних комп'ютерах процес початкового завантаження починається з виконання процесором програми, розташованій у постійній пам'яті (наприклад, BIOS у IBM PC-сумісних комп'ютерах, або UEFI), починаючи з наперед заданої адреси (процесор робить це після перезавантаження без якої б то не було допомоги). Це програмне забезпечення може виявляти пристрої, придатні для завантаження з них, і завантажувати зі спеціального розділу вибраного пристрою (завантажувального сектора диска, або файлової системи UEFI) завантажувач ОС.

Початкові завантажувачі повинні відповідати специфічним вимогам. У випадку BIOS або CSM-завантаження на IBM PC-сумісному комп'ютері завантажувач першого рівня повинен міститися в перших 446 байтах головного завантажувального запису, залишивши місце для 64 байт таблиці розділів і 2 байти для сигнатури 55AAh, необхідної для того, щоб BIOS виявила сам початковий завантажувач. У випадку UEFI-завантаження файл повинен бути у спеціальному форматі (Portable Executable[en]).

Історія[ред. | ред. код]

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

Псевдоасемблерний код початкового завантажувача може бути настільки ж простим, як і наступна послідовність інструкцій:

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[ред. | ред. код]

Завантажується персональний комп'ютер.
Частина екрану з ініціалізованими компонентами материнської плати і підключеними периферійними пристроями. В нижній частині екрану видно таблицю налаштованих Plug-and-Play пристроїв.

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[en], реалізованої у вигляді обробника переривання процесора, буде зчитаний завантажувальний запис операційної системи. Цей завантажувальний сектор, як правило, залежить від операційної системи і повинен зробити завантаження в оперативну пам'ять ядра операційної системи, з подальшою передачею на нього виконання інструкцій процесора. Якщо активного розділу не існує, або завантажувальний сектор активного розділу некоректний, MBR може завантажити резервний початковий завантажувач і передати управління йому. Резервний початковий завантажувач повинен вибрати розділ (часто з допомогою користувача), завантажити його завантажувальний сектор і передати йому управління, який, у свою чергу, передає управління безпосередньо завантажувачу ОС (подальші етапи завантаження залежать від типу/версії встановленої ОС).[a]

UEFI[ред. | ред. код]

Інші види завантажувальних послідовностей[ред. | ред. код]

Деякі процесори мають інші режими завантаження. Наприклад, більшість цифрових сигнальних процесорів можуть завантажитися в наступних режимах:

  • завантаження з послідовного порту;
  • завантаження з паралельного порту;
  • завантаження з використанням HPI (Host-Port Interface);
  • завантаження після «гарячого» перезавантаження (відрізняється від послідовності виконуваної при початковому увімкнені живлення).

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Сині екрани BSoD (та інші фатальні помилки) можуть бути виведені лише після початкового завантаження, коли керування завантаженням передається завантажувачу і ядру ОС. На етапі початкового завантаження усі помилки (POST, BIOS, MBR, таблиці FAT/MFT, сектора VBS, IPL (PnP BIOS) відображаються дуже коротко і на чорному екрані.

Джерела[ред. | ред. код]

Література[ред. | ред. код]

  • Загрузка // Модернизация и ремонт ПК : пер. с англ. / Скотт Мюллер. — 17-е изд. — М. : Вильямс, 2008. — Гл. 22 : Средства диагностики и техническое обслуживание. — С. 1341–1349. — ISBN 978-5-8459-1126-1.

Посилання[ред. | ред. код]