Початковий завантажувач

Початковий завантажувач (англ. boot loader[1][2] чи англ. bootstrap loader) — це комп'ютерна програма, яка відповідає за завантаження комп'ютера та запуск операційної системи. Якщо вона також надає інтерактивне меню з кількома варіантами завантаження, її часто називають менеджером завантаження.
Коли комп'ютер вимкнений, його програмне забезпечення — включаючи операційні системи, прикладні програми і дані — залишається збереженим у енергонезалежній пам'яті. Коли комп’ютер вмикається, він зазвичай не має операційної системи або її завантажувача в оперативній пам'яті (RAM). Комп'ютер спочатку виконує відносно невелику програму, що зберігається в boot ROM, яка є пам'яттю лише для читання (ROM, а пізніше EEPROM, NOR flash), разом із деякими необхідними даними, щоб ініціалізувати апаратні пристрої, такі як CPU, материнська плата, пам'ять, накопичувачі даних та інші пристрої введення/виведення, для доступу до енергонезалежного пристрою (зазвичай блокового пристрою, наприклад NAND flash) або пристроїв, з яких програми та дані операційної системи можуть бути завантажені в RAM.
Деякі ранні комп'ютерні системи, після отримання сигналу завантаження від оператора-людини або периферійного пристрою, могли завантажити дуже малу кількість фіксованих інструкцій у пам'ять у певне місце, ініціалізувати принаймні один CPU, а потім спрямувати CPU до цих інструкцій і розпочати їх виконання. Ці інструкції зазвичай запускали операцію введення з певного периферійного пристрою (який міг вибиратися оператором за допомогою перемикача). Інші системи могли надсилати апаратні команди безпосередньо периферійним пристроям або контролерам I/O, що спричиняло виконання надзвичайно простої операції введення (наприклад, «прочитати нульовий сектор системного пристрою в пам'ять, починаючи з адреси 1000»), фактично завантажуючи невелику кількість інструкцій завантажувача в пам'ять; сигнал завершення від пристрою I/O потім міг використовуватися для запуску виконання інструкцій процесором.
Менші комп'ютери часто використовують менш гнучкі, але більш автоматизовані механізми завантаження, щоб забезпечити швидкий запуск комп'ютера з наперед визначеною програмною конфігурацією. У багатьох настільних комп'ютерах, наприклад, процес початкового завантаження починається з того, що процесор виконує програмне забезпечення, що міститься в ROM (наприклад, BIOS — базову систему вводу/виводу IBM PC або сумісних з IBM PC систем), за заздалегідь визначеною адресою (деякі процесори, зокрема серія Intel x86, спроєктовані так, щоб виконувати цей код одразу після подання живлення).
Це програмне забезпечення містить базову функціональність для пошуку пристроїв, які можуть брати участь у завантаженні системи, і завантажує невелику програму зі спеціальної області (найчастіше сектор завантажування) найбільш придатного пристрою, зазвичай починаючи з фіксованої точки входу, наприклад з початку сектора.
Завантажувач першого етапу
Прикладами завантажувачів першого етапу BIOS, UEFI, coreboot, Libreboot та Das U-Boot. Він ініціалізує апаратні пристрої, такі як процесор, материнська плата, пам'ять, накопичувачі та інші пристрої вводу/виводу.
Завантажувач другого етапу
Завантажувачі другого етапу, такі як GNU GRUB, rEFInd, BOOTMGR, Syslinux та NTLDR, самі по собі не є операційними системами, але здатні правильно завантажити операційну систему і передати їй керування; після цього операційна система поступово ініціалізує себе і може завантажувати додаткові драйвери пристроїв.
Реалізації другого етапу можуть включати інтерактивні користувацькі інтерфейси, що дозволяють вибір варіантів завантаження та зміну параметрів. Вони відповідають за завантаження ядра, включаючи обробку образів initrd/initramfs, і можуть передавати параметри завантаження ядру операційної системи. Багато з них мають модульну архітектуру з підтримкою завантажуваних модулів для розширення функціональності.
Такі варіанти можуть включати різні операційні системи (для подвійного або мультизавантаження з різних розділів чи дисків), різні версії однієї операційної системи (на випадок проблем у новій версії), різні режими завантаження (наприклад, у режим відновлення або безпечний режим), а також деякі автономні програми, що можуть працювати без операційної системи, наприклад тестер пам'яті (Memtest86+), базова оболонка (як у GNU GRUB) або навіть ігри.
Деякі завантажувачі також можуть запускати інші завантажувачі; наприклад, GRUB завантажує BOOTMGR замість прямого завантаження Windows. Зазвичай стандартний варіант попередньо вибраний із затримкою часу, протягом якої користувач може натиснути клавішу для зміни вибору; після завершення цього тайм-ауту автоматично запускається стандартний варіант, щоб звичайне завантаження відбувалося без дії користувача.
Вони також можуть виконувати стиснення даних, криптографічну перевірку та ланцюгове завантаження інших завантажувачів (chain-loading).
Процес завантаження можна вважати завершеним, коли комп'ютер готовий до взаємодії з користувачем або коли операційна система здатна запускати системні або прикладні програми.
Завантажувачі вбудованих систем та багатокрокові завантажувачі
Багато вбудованих систем повинні завантажуватися миттєво. Наприклад, очікування хвилини, поки запуститься цифровий телевізор або GPS-навігатор, зазвичай є неприйнятним. Тому такі пристрої мають програмне забезпечення, розміщене в ROM або флеш-пам'яті, щоб пристрій міг почати роботу одразу; завантаження як таке майже або повністю відсутнє, оскільки все необхідне може бути попередньо обчислено і записано в ROM під час виробництва пристрою.
Великі та складні системи можуть мати процедури завантаження, що проходять у кілька етапів, доки врешті не буде завантажено операційну систему та інші програми, готові до виконання. Оскільки операційні системи проєктуються так, ніби вони ніколи не запускаються і не зупиняються, завантажувач може завантажити операційну систему, налаштувати себе як звичайний процес усередині цієї системи, а потім незворотно передати їй керування. Після цього завантажувач завершує роботу як будь-який інший процес.
Завантаження з мережі
Більшість комп'ютерів також здатні завантажуватися через комп'ютерну мережу. У такому випадку операційна система зберігається на диску сервера, і певні її частини передаються клієнту за допомогою простого протоколу, наприклад TFTP (Trivial File Transfer Protocol). Після того як ці частини передано, операційна система перебирає на себе керування процесом завантаження.
Як і у випадку із завантажувачем другого етапу, мережеве завантаження починається з використання універсальних методів доступу до мережі, які надаються boot ROM мережевого інтерфейсу, що зазвичай містить образ Preboot Execution Environment (PXE). Драйвери при цьому не потрібні, але функціональність системи обмежена до моменту, поки не буде передано та запущено ядро операційної системи і драйвери. У результаті, після завершення ROM-завантаження можна завантажити через мережу операційну систему, яка сама по собі не має можливості використовувати мережевий інтерфейс.
Див. також
Примітки
- ↑ GNU GRUB - GNU Project - Free Software Foundation (FSF). www.gnu.org. Процитовано 27 вересня 2021.
- ↑ systemd-boot. www.freedesktop.org. Процитовано 27 вересня 2021.
Посилання
Джерело: стаття у Вікіпедії та історія редагувань (автори).