Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Das U-Boot (с подзаголовком «Универсальный загрузчик» и часто сокращается до U-Boot ; см. « Историю» для получения дополнительных сведений об имени) - это основной загрузчик с открытым исходным кодом , используемый во встроенных устройствах для упаковки инструкций по загрузке рабочего устройства. ядро системы. Он доступен для ряда компьютерных архитектур , включая 68k , ARM , Blackfin , MicroBlaze , MIPS , Nios , SuperH , PPC , RISC-V и x86 .

Функциональность [ править ]

U-Boot - это загрузчик как первого, так и второго уровня. Он загружается системным ПЗУ или BIOS с поддерживаемого загрузочного устройства, такого как SD-карта, диск SATA, флэш-память NOR (например, с использованием SPI или I²C ) или флэш-память NAND. Если есть ограничения по размеру, U-Boot может быть разделен на этапы: платформа загрузит небольшой SPL (Secondary Program Loader), который является урезанной версией U-Boot, а SPL выполнит начальную конфигурацию оборудования и загрузит большая полнофункциональная версия U-Boot. [4] [5] [6]Независимо от того, используется ли SPL, U-Boot выполняет как первую стадию (например, настройку контроллеров памяти и SDRAM), так и вторую стадию загрузки (выполнение нескольких шагов для загрузки современной операционной системы с различных устройств, которые необходимо настроить, представление меню для взаимодействия пользователей и управления процессом загрузки и т. д.).

U-Boot запускает интерфейс командной строки на последовательном порту. Используя консоль, пользователи могут загружать и загружать ядро, возможно, изменяя параметры по умолчанию. Также есть команды для чтения информации об устройстве, чтения и записи во флеш-память, загрузки файлов (ядер, загрузочных образов и т. Д.) Из последовательного порта или сети, управления деревьями устройств и работы с переменными среды (которые могут быть записаны в постоянное хранилище). , и используются для управления поведением U-Boot, например командой загрузки по умолчанию и тайм-аутом перед автоматической загрузкой, а также данными оборудования, такими как MAC-адрес Ethernet).

В отличие от загрузчиков ПК, которые скрывают или автоматически выбирают места в памяти ядра и других загрузочных данных, U-Boot требует, чтобы его команды загрузки явно указывали адреса физической памяти как места назначения для копирования данных (ядро, RAM-диск, дерево устройств и т. Д.) И для перехода к ядру и в качестве аргументов для ядра. Поскольку команды U-Boot довольно низкоуровневые, для загрузки ядра требуется несколько шагов, но это также делает U-Boot более гибким, чем другие загрузчики, поскольку те же команды можно использовать для более общих задач. Можно даже обновить U-Boot с помощью U-Boot, просто прочитав новый загрузчик откуда-то (из локального хранилища, из последовательного порта или сети) в память и записав эти данные в постоянное хранилище, к которому относится загрузчик.

U-Boot поддерживает USB, поэтому он может использовать USB-клавиатуру для управления консолью (в дополнение к вводу через последовательный порт), а также может получать доступ и загружаться с запоминающих устройств USB, таких как устройства чтения SD-карт.

Хранение данных и источники загрузки [ править ]

U-Boot загружает операционную систему, считывая ядро ​​и любые другие необходимые данные (например, дерево устройств или образ RAM-диска) в память, а затем запускает ядро ​​с соответствующими аргументами.

Команды U-Boot на самом деле являются обобщенными командами, которые можно использовать для чтения или записи любых произвольных данных. С помощью этих команд данные могут быть прочитаны или записаны в любую систему хранения, поддерживаемую U-Boot, в том числе:

(Примечание: это источники загрузки, из которых U-Boot может загружать данные (например, ядро ​​или образ RAM-диска) в память. Сама U-Boot должна загружаться платформой, и это должно выполняться с устройства, на котором установлена ​​платформа. ПЗУ или BIOS могут загружаться, что, естественно, зависит от платформы.)

  • Бортовое или присоединенное хранилище
    • SD Card
    • SATA
    • SCSI
    • I²C (например, EEPROM или NOR flash)
    • SPI (например, NOR или NAND flash)
    • ONFI (raw NAND flash)
    • eMMC (управляемая флэш-память NOR или NAND)
    • NVMe
    • Запоминающее устройство USB
  • Последовательный порт (передача файлов)
    • Кермит
    • S-запись
    • YMODEM
  • Сетевая загрузка (опционально с использованием DHCP, BOOTP или RARP)
    • TFTP
    • NFS [а]

Совместимые файловые системы [ править ]

U-Boot не обязательно должен иметь возможность читать файловую систему, чтобы ядро ​​могло использовать ее в качестве корневой файловой системы или начального RAM-диска; U-Boot просто предоставляет ядру соответствующий параметр и / или копирует данные в память, не понимая их содержимого.

Однако U-Boot также может читать (а в некоторых случаях записывать) файловые системы. Таким образом, вместо того, чтобы требовать, чтобы данные, которые загружает U-Boot, хранились в фиксированном месте на устройстве хранения, U-Boot может читать файловую систему для поиска и загрузки ядра, дерева устройств и т. Д. По имени пути.

U-Boot поддерживает следующие файловые системы:

  • btrfs
  • CBFS ( файловая система coreboot )
  • Cramfs
  • ext2
  • ext3
  • ext4
  • ТОЛСТЫЙ
  • FDOS
  • JFFS2
  • ReiserFS
  • Сквош
  • УБИФС
  • ZFS

Дерево устройств [ править ]

Дерево устройств - это структура данных для описания компоновки оборудования. Используя дерево устройств, поставщик может иметь возможность использовать неизмененную основную U-Boot на оборудовании специального назначения. Как и ядро ​​Linux, дерево устройств предназначено для улучшения ситуации во встраиваемой отрасли, где существует огромное количество вилок для конкретных продуктов (U-Boot и Linux). Возможность запускать основное программное обеспечение практически освобождает клиентов от отсутствия обновлений от поставщиков.

История [ править ]

U-Boot на Openmoko Freerunner
U-Boot на XPedite5501

Источником проекта является загрузчик 8xx PowerPC под названием 8xxROM, написанный Магнусом Даммом. [7] В октябре 1999 года Вольфганг Денк переместил проект на SourceForge.net и переименовал его в PPCBoot , потому что SF.net не разрешал имена проектов, начинающиеся с цифр. [7] Версия 0.4.1 PPCBoot была впервые публично выпущена 19 июля 2000 года.

В 2002 году предыдущая версия исходного кода кратко раздвоенная в продукт под названием ARMBoot , но была слита обратно в проект PPCBoot вскоре после этого. 31 октября 2002 г. был выпущен PPCBoot − 2.0.0 . Это был последний выпуск под названием PPCBoot, так как он был переименован, чтобы отразить его способность работать на других архитектурах помимо PPC ISA. [8] [9]

PPCBoot-2.0.0 стал U-Boot-0.1.0 в ноябре 2002 года, расширен для работы на архитектуре процессора x86 . В следующие месяцы были добавлены дополнительные возможности архитектуры: MIPS32 в марте 2003 г., MIPS64 в апреле, Nios II в октябре, ColdFire в декабре и MicroBlaze в апреле 2004 г. Выпуск U-Boot-1.1.2 в мае 2004 г. работал над продуктами. 216 производителей плат различных архитектур. [9]

Нынешнее название Das U-Boot добавляет артикль на немецком языке , чтобы создать двуязычный каламбур по классическому немецкому фильму о подводной лодке 1981 года Das Boot , действие которого происходит на немецкой подводной лодке времен Второй мировой войны . Это бесплатное программное обеспечение, выпущенное в соответствии с условиями Стандартной общественной лицензии GNU . Он может быть построен на ПК x86 для любой из предполагаемых архитектур с использованием набора инструментов GNU для кросс-разработки , например, crossstool, Embedded Linux Development Kit (ELDK) или OSELAS.Toolchain.

Важность U-Boot для встраиваемых систем Linux довольно кратко изложена в книге « Построение встраиваемых систем Linux » Карима Ягмура, чей текст о U-Boot начинается так: «Хотя существует довольно много других загрузчиков,« Das U-Boot » , универсальный загрузчик, возможно, самый богатый, гибкий и наиболее активно разрабатываемый загрузчик с открытым исходным кодом ». [10]

Использование [ править ]

  • Chromebook на базе ARM поставляется с U-Boot. В Chromebooks Celeron- и i5 , основанные на использовании его в качестве полезной нагрузки для Coreboot . [11]
  • На PowerPC основе серии из AmigaOne компьютеров , работающих под управлением AmigaOS используют U-Boot, в частности Sam440ep и Sam460ex по ACube Systems Srl , и AmigaOne X5000 от А-Eon, преемник AmigaOne X1000 .
  • Устройства Ubiquiti Networks используют U-Boot
  • Устройства Amazon Kindle используют U-Boot в качестве загрузчика.
  • TP-Link и несколько других совместимых с OpenWRT / LEDE беспроводных маршрутизаторов на базе MIPS используют U-Boot для загрузки.
  • Сотовые маршрутизаторы Teltonika используют загрузчик на основе U-Boot.
  • И Falcon, и Dragon SpaceX используют U-Boot [12]

См. Также [ править ]

  • Сравнение загрузчиков
  • RedBoot
  • Coreboot
  • Barebox

Примечания [ править ]

  1. ^ Это настоящая загрузка NFS (сама U-Boot использует NFS для загрузки ядра), в отличие от загрузки ядра из сети с использованием TFTP и указания, что ядро ​​должно использовать монтирование NFS в качестве корневой файловой системы.

Ссылки [ править ]

  1. ^ Рини, Том (11 января 2021). «Выпущен U-Boot v2021.01» . u-boot (Список рассылки) . Проверено 13 января 2021 года .
  2. ^ Рини, Том (17 февраля 2021). «Выпущен U-Boot v2021.04-rc2» . u-boot (Список рассылки) . Проверено 18 февраля 2021 года .
  3. ^ "Лицензия Das U-Boot" . git.denx.de . 2013 . Проверено 13 октября 2018 .
  4. ^ http://xillybus.com/tutorials/u-boot-image-altera-soc
  5. ^ https://boundarydevices.com/u-boot-on-i-mx6/
  6. ^ "Архивная копия" . Архивировано из оригинала на 2017-09-05 . Проверено 15 июня 2016 .CS1 maint: заархивированная копия как заголовок ( ссылка )
  7. ^ a b Домашняя страница PPCBoot: Авторы
  8. ^ "[PPCBoot-users] Хэллоуинская версия PPCBoot: 2.0.0 - последняя версия." , Вольфганг Денк, 31 октября 2002 г.
  9. ^ a b "История U-Bootdoc" . Проверено 4 сентября 2011 года .
  10. ^ Построение встроенных систем Linux Карим Ягмур, Глава 9
  11. ^ Учебник coreboot oscon 2013 , стр. 6
  12. ^ Мы команда разработчиков программного обеспечения SpaceX, спросите нас о чем угодно! , ответ 4

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Официальный репозиторий Git
  • Barebox (ранее известный как U-Boot-V2)
  • Das U-Boot на SourceForge.net