Завантажувач (Bootloader)

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

Оскільки завантажувач є програмним забезпеченням, його можна вважати частиною прошивки, але завантажувач не є частиною OpenWrt!
Лише в окремих випадках виникає потреба змінити налаштування завантажувача або код завантажувача для можливості завантаження чи встановлення OpenWrt.
Існує багато завантажувачів з різними ліцензіями на програмне забезпечення.

Основна функція завантажувача — ініціалізація апаратного забезпечення, передача абстракції (опису) ініціалізованого заліза, а також передача керування ядру та його виконання. (Дуже гарний технічний приклад можна побачити тут, або див. інші приклади: тут і тут) Після цього завантажувач більше не потрібен у пам’яті. Більшість завантажувачів надають додаткові функції.

Насправді — ні. Завантажувач не є обов’язковим для запуску Linux. Використання одного або кількох завантажувачів у ланцюгу (тобто bootstrap) для завантаження ядра — це не категорична необхідність, а скоріше зручний і гнучкий спосіб запуску операційної системи. Основна перевага для OpenWrt полягає в тому, що наявність завантажувача дає користувачам і розробникам додаткові можливості для відновлення (debrick) пристрою.

Деякі завантажувачі або реалізації універсальних завантажувачів можуть містити обмеження, навмисно закладені виробником (OEM), наприклад:

  • спеціально запроєктоване обмеження розміру ядра/прошивки
  • вимога до завантажувача приймати тільки специфічний (екзотичний) формат прошивки
  • нездатність виконувати бінарний формат ELF
  • необхідність наявності певного “магічного значення” у правильному місці
  • й інші подібні умови

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

Завантажувач може бути простим або складним, і підтримувати нуль, одну або багато додаткових функцій. У багатьох випадках ці функції дають користувачу великі переваги, тому більшість завантажувачів їх реалізовують, зокрема:

  • Прошивання нової прошивки, див. generic.flashing
  • Завантажувач може перевіряти дані у флеш-пам’яті. Наприклад, якщо прошивка не проходить перевірку 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 — завантажувач є його початком.

Comparison of boot loaders

Будь ласка, використовуйте templates для створення та підтримки цих статей. Наразі вони слабо підтримуються, без структури і майже марні

Вбудований завантажувач виконує ті ж функції, що й BIOS разом з GNU GRUB на звичайному ПК.

  • BIOS пропрієтарний — BIOS вашого ПК — це просто завантажувач
  • UEFI пропрієтарний — спадкоємець BIOS
  • coreboot GPLv2 — вільна альтернатива BIOS/UEFI, заснована на Linux;
    підтримка x86, x86-64, ARM; не підтримує MIPS;
    виконує лише базову ініціалізацію апаратного забезпечення
  • GNU GRUB GPLv2
  • Das U-Boot GPLv2 — найфункціональніший, найгнучкіший і найактивніше розроблюваний FOSS-завантажувач
  • pepe2k-u-boot_mod GPLv2 — модифікація U-Boot 1.1.4 для маршрутизаторів: https://github.com/pepe2k/u-boot_mod
  • RedBoot модифікована GPL
  • CFE BSD-подібна — розроблена Broadcom; оранжевий колір означає, що виробник не зобов’язаний надавати вихідний код
  • Adam2 пропрієтарна для AR7/UR8
    • pspboot пропрієтарна — частково сумісний наступник Adam2
  • brnboot невідомо — іноді називається AMAZON Loader
  • bootbase невідомо — використовується в ZyXEL Prestige 660HW-xx, 660M-xx та, ймовірно, інших моделях ZyXEL http://www.ixo.de/info/zyxel_uclinux/
  • jboot невідомо
  • myloader невідомо
  • pp_boot невідомо
  • yamon невідомо — від Imagination Technology; Linux-ядро має бути у форматі SREC
  • Breed — Breed bootloader
  • Власний завантажувач VxWorks — використовується в більшості пристроїв Atheros (опис доступний на сторінці Netgear WGT624)
  • NetBoot — стандартний завантажувач у DWL7100AP дозволяє завантажувати прошивку по мережі через TFTP прямо в RAM
  • ThreadX — ОС ThreadX використовується D-Link у малобюджетних моделях з 1МБ флеш та 8МБ RAM. Має власний завантажувач, який нічого не виводить у термінал, але має recovery-режим для прошивки через браузер.
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/05/28 12:37
  • by vazaz