User Tools

Site Tools


ru:doc:techref:bootloader

The Bootloader

Bootloader (он же Загручик) является кусочком программного обеспечения, который исполняется каждый раз при включении устройства. Это исполняемый машинный код в т.ч. ARCH-специфичный. Загрузчик сильно привязан к специфике устройства, потому что его основной задачей является инициализация всего низко-уровневнего оборудования. Он может находится на отдельной EEPROM (очень редко) или непосредственно во Flash (в основном).

Будучи куском программного обеспечения, загручик является частью прошивки, но загрузчик не является частью OpenWrt!
Лишь иногда требуется изменить настройки загрузчика или сам загручик чтобы была возможность установки и запуска OpenWrt
Существуют загрузчики попадающие под понятие лицензинного ПО

Основные функции

Основными функциями загрузчика являются инициализация оборудования, его абстрактная проверка, описание и последующее исполнение кода ядра (Kernel). (Очень хороший пример можно посмотреть здесь.) После того, как загрузчик выполнил свои функции его присутствие в памяти устройства более не нужно. Многие загрузчики предлагают дополнительные функции.

Зачем он нужен?

Он не нужен. Загрузчик не нужен, чтобы загрузить Linux. Использование одного (или нескольких) загрузчиков в цепочке загрузки (или bootstrap) ядра (Kernel) не является категорически необходимым, это всего лишь хитрый метод запуска операционной системы. Главной особенностью наличие загрузчика для пользователей и разработчиков OpenWrt является дополнительная возможность оживить (восстановить) устройство в случае неудачно загруженной прошивки.

Особенности

Ограничения

Некоторые загрузчики или надстройки в универсальные загрузчики идут с определенными ограничениями, установленными OEM-ерами. Например:

  • ограничивают по размеру ядра/прошивки
  • заставляют загрузчик ждать определенный экзотический формат прошивки
  • невозможность выполнить загрузчиком бинаный формат ELF
  • необходимость присутствия незаметной и верной "магической величины" и теле прошивки
  • вы назовете их…

Причины различны. От простой неумелости создателей до полного саботажа пользователей, желающих запустить свободного ПО на их собственности.

Дополнительные функции

Загрузчик может быть более или менее продвинутым и позволять использовать как ни одной так и множество дополнительных функций. Во многих ситуация дополнительные функции могут дать пользователю огромные преимущества. Так большинство загрузчиков предлагают:

  • прошить новую прошивку см.тут
  • загрузчик может иметь возможность проверить данные на флэшке, и прошивка будет принята или отклонена по контрольной сумме (CRC). Загрузчик не пропустит поврежденную прошивку и будет ждать новую для загрузки по сети. Конечно, это также означает, что, каждый раз меняя что-то в прошивке, вам необходимо обновить значение CRC…
  • возможность изменить настройки загрузки или выполнить какие-либо команды через консоль (serial console)
  • CLI-коммандная строка (aka serial console), которая обычно доступна только через последовательный порт. Есть несколько вариантов доступа к консоли последовательного порта на вашем устройстве, - например, использование terminal server, но основаной вариант - это подключение к последовательному порту на вашем устройстве. Дополнительно вам понадобится программа эмуляции теминала, т.к. cu или kermit.
    • once the bootloader has fulfilled its main function - chainload the Kernel - it does not run any longer, so to play with it, you have to login to it before it loads the Kernel and you may also have to prevent it from loading the Kernel, i.e. to stop the boot process.
  • загрузка через USB
    • Like the Kernel requires the module kmod-fs-ext4 to read/write to a EXT3 filesystem, so a bootloader requires such a module to do the same. GRUB2 has this functionality implemented, so with it, you can very comfortably configure your boot options and also update and maintain your OS. The lightweight bootloaders we use with OpenWrt, usually do not have this functionality. But see flash.layout for further reference. One exception is the U-Boot implementation of the dockstar. It can not only initialize the USB (like all the rest of the hardware) but additionally utilize the USB and also understand the EXT2 filesystem. Thus, the dockstar can be booted directly from an ext2-formated harddisc/usb-stick connected to any of it's USB-ports.
  • возможность сетевой загрузки через BOOTP или PXE или DHCP или NFS или TFTP

Boot Procedure

boot process should give a more detailed description of whole boot procedure. The bootloader is the beginning.

Individual Bootloaders

Comparison of boot loaders

Please use templates to create and maintain these articles. ATM they are quite unmaintained and without a structure and almost useless

ПК

Встроенные загрузчики обладают той же функциональностью, что и BIOS вместе сGNU GRUB на ПК.

  • BIOS proprietary BIOS вашего ПК является ничем иным, как загрузчиком!
  • UEFI proprietary наследник BIOS, обладающий расширенным функционалом
  • coreboot GPLv2 наследник BIOS, альтернатива UEFI, основанная на ядре Linux;
    поддержка x86, x86-64 и ARM. Нет MIPS поддержки.
    Coreboot осуществляет только "минимальную инициализацию оборудования"
  • GNU GRUB GPLv2

Embedded Devices

  • Das U-Boot GPLv2 определенно богатейший, наиболее гибкий и наиболее активно развиваемый FOSS доступный загрузчик
  • VxWorks' own bootloader - most Atheros devices (There is a description of the basic workings on the Netgear WGT624 page.)
  • NetBoot - the standard loader in DWL7100AP allows to boot firmware image via network from TFTP server direct to RAM
  • ThreadX - D-Link uses OS called ThreadX on lowend 1MiB Flash storage & 8MiB RAM models. They have custom boot loader that doesn't output anything sensible to serial port but does have recovery mode so you can upload firmware using browser.

Bootloader Pages

ru/doc/techref/bootloader.txt · Last modified: 2016/09/01 14:16 by andygo