Завантажувач (Bootloader)
Завантажувач — це програмне забезпечення, яке виконується щоразу, коли пристрій вмикається. Це виконуваний машинний код, отже, він є специфічним для конкретної архітектури.
Завантажувач також сильно залежить від конкретного пристрою, оскільки його основна задача — ініціалізація всього апаратного забезпечення на низькому рівні.
Завантажувач може зберігатись в окремій EEPROM (вкрай рідко) або безпосередньо у флеш-пам’яті (найчастіше).
Оскільки завантажувач є програмним забезпеченням, його можна вважати частиною прошивки, але завантажувач не є частиною OpenWrt!
Лише в окремих випадках виникає потреба змінити налаштування завантажувача або код завантажувача для можливості завантаження чи встановлення OpenWrt.
Існує багато завантажувачів з різними ліцензіями на програмне забезпечення.
Основна функція
Основна функція завантажувача — ініціалізація апаратного забезпечення, передача абстракції (опису) ініціалізованого заліза, а також передача керування ядру та його виконання.
(Дуже гарний технічний приклад можна побачити тут, або див. інші приклади: тут і тут)
Після цього завантажувач більше не потрібен у пам’яті. Більшість завантажувачів надають додаткові функції.
Чому це потрібно?
Насправді — ні. Завантажувач не є обов’язковим для запуску Linux.
Використання одного або кількох завантажувачів у ланцюгу (тобто bootstrap) для завантаження ядра — це не категорична необхідність, а скоріше зручний і гнучкий спосіб запуску операційної системи.
Основна перевага для OpenWrt полягає в тому, що наявність завантажувача дає користувачам і розробникам додаткові можливості для відновлення (debrick) пристрою.
Можливості
Обмеження
Деякі завантажувачі або реалізації універсальних завантажувачів можуть містити обмеження, навмисно закладені виробником (OEM), наприклад:
спеціально запроєктоване обмеження розміру ядра/прошивки
вимога до завантажувача приймати тільки специфічний (екзотичний) формат прошивки
нездатність виконувати бінарний формат
ELF
необхідність наявності певного “магічного значення” у правильному місці
й інші подібні умови
Причини можуть бути різні: від некомпетентності розробників до навмисного обмеження спроб користувача запускати вільне ПЗ на власному обладнанні.
Додаткові функції
Завантажувач може бути простим або складним, і підтримувати нуль, одну або багато додаткових функцій. У багатьох випадках ці функції дають користувачу великі переваги, тому більшість завантажувачів їх реалізовують, зокрема:
-
Завантажувач може перевіряти дані у флеш-пам’яті. Наприклад, якщо прошивка не проходить перевірку CRC, завантажувач вважає її пошкодженою і чекатиме нову прошивку через мережу. Але це також означає, що кожного разу при зміні прошивки потрібно оновлювати CRC.
Це також може бути активовано встановленням змінної `boot_wait` або через команду в терміналі.
CLI (також відомий як
консоль), який зазвичай доступний лише через
послідовний порт. Є кілька способів доступу до
консолі на цільовому пристрої, наприклад через термінальний сервер, але найпоширеніший спосіб — підключення до послідовного порту хост-системи. Також вам знадобиться програма емуляції терміналу, така як `cu` або `kermit`.
Завантаження з USB
Подібно до того, як ядро потребує модуля `kmod-fs-ext4` для роботи з файловою системою EXT3, завантажувач потребує відповідного модуля.
GRUB2 має таку функціональність, що дозволяє комфортно налаштовувати параметри завантаження та обслуговувати ОС. Легкі завантажувачі, які зазвичай використовуються з OpenWrt, зазвичай цього не підтримують. Але див.
flash.layout для додаткових прикладів. Винятком є реалізація U-Boot для
dockstar, яка не лише ініціалізує USB, а й підтримує EXT2-файлову систему, тому пристрій можна завантажити прямо з ext2-жорсткого диска чи USB-накопичувача.
-
Процес завантаження
→ Детальніший опис міститься на сторінці: boot process — завантажувач є його початком.
Індивідуальні завантажувачі
ПК
Вбудований завантажувач виконує ті ж функції, що й BIOS разом з GNU GRUB на звичайному ПК.
BIOS пропрієтарний — BIOS вашого ПК — це просто завантажувач
UEFI пропрієтарний — спадкоємець BIOS
coreboot GPLv2 — вільна альтернатива BIOS/UEFI, заснована на Linux;
підтримка x86, x86-64, ARM; не підтримує MIPS;
виконує лише базову ініціалізацію апаратного забезпечення
-
Вбудовані пристрої
Das U-Boot GPLv2 — найфункціональніший, найгнучкіший і найактивніше розроблюваний
FOSS-завантажувач
-
-
CFE BSD-подібна — розроблена Broadcom; оранжевий колір означає, що виробник не зобов’язаний надавати вихідний код
Adam2 пропрієтарна для AR7/UR8
pspboot пропрієтарна — частково сумісний наступник Adam2
brnboot невідомо — іноді називається AMAZON Loader
-
-
-
-
-
-
Власний завантажувач VxWorks — використовується в більшості пристроїв Atheros (опис доступний на
сторінці Netgear WGT624)
NetBoot — стандартний завантажувач у DWL7100AP дозволяє завантажувати прошивку по мережі через
TFTP прямо в RAM
ThreadX — ОС ThreadX використовується D-Link у малобюджетних моделях з 1МБ флеш та 8МБ RAM. Має власний завантажувач, який нічого не виводить у термінал, але має recovery-режим для прошивки через браузер.
Сторінки про завантажувачі