Подводная лодка
![]() | |
Разработчик(и) | Разработка программного обеспечения DENX |
---|---|
Первоначальный выпуск | 15 октября 1999 г |
Стабильная версия | v2024.04 / 2 апреля 2024 г [1] |
Репозиторий | |
Написано в | С , Ассамблея |
Доступно в | Английский |
Тип | Загрузчик |
Лицензия | GPL-2.0 или новее [2] |
Веб-сайт | документы ![]() |
Das U-Boot (с подзаголовком «Универсальный загрузчик» и часто сокращается до U-Boot ; см. в разделе « История дополнительную информацию об имени с открытым исходным кодом, ») — это загрузчик используемый во встроенных устройствах для выполнения различных задач низкоуровневой инициализации оборудования и загрузки. ядро операционной системы устройства. Он доступен для ряда компьютерных архитектур , включая M68000 , ARM , Blackfin , MicroBlaze , IBM S360, My66, MOS 6502, ARM64 , MIPS , Nios , SuperH , PPC , RISC-V и x86 .
Функциональность [ править ]
U-Boot — это загрузчик как первого, так и второго этапа. Он загружается ПЗУ системы (например, встроенным ПЗУ процессора ARM) с поддерживаемого загрузочного устройства, такого как SD-карта, диск SATA, флэш-память NOR (например, с использованием SPI или I²C ) или флэш-память NAND. Если есть ограничения по размеру, U-Boot можно разделить на два этапа: платформа загружает небольшой SPL (вторичный загрузчик программ), который представляет собой урезанную версию U-Boot, а SPL выполняет некоторую начальную конфигурацию оборудования. (например, инициализация DRAM с использованием кэша ЦП в качестве ОЗУ) и загрузите более крупную полнофункциональную версию U-Boot. [3] [4] [5] Независимо от того, используется ли SPL, U-Boot выполняет как первый этап (например, настройку контроллеров памяти и SDRAM), так и второй этап загрузки (выполнение нескольких шагов для загрузки современной операционной системы с различных устройств, которые необходимо настроить). представление меню, позволяющего пользователям взаимодействовать с процессом загрузки и управлять им и т. д.).
U-Boot реализует подмножество спецификации UEFI , как определено в спецификации встроенных базовых требований к загрузке (EBBR). [6] Двоичные файлы UEFI, такие как GRUB или ядро Linux , можно загрузить через диспетчер загрузки или из интерфейса командной строки.
U-Boot запускает интерфейс командной строки на консоли или последовательном порту. Используя CLI, пользователи могут загружать и загружать ядро, возможно, изменяя параметры по умолчанию. Также имеются команды для чтения информации об устройстве, чтения и записи флэш-памяти, загрузки файлов (ядер, загрузочных образов и т. д.) из последовательного порта или сети, управления деревьями устройств и работы с переменными среды (которые можно записать в постоянное хранилище). и используются для управления поведением U-Boot, таким как команда загрузки по умолчанию и время ожидания перед автоматической загрузкой, а также данные оборудования, такие как MAC-адрес Ethernet).
В отличие от загрузчиков ПК, которые скрывают или автоматически выбирают области памяти ядра и других загрузочных данных, U-Boot требует, чтобы в командах загрузки явно указывались адреса физической памяти в качестве мест назначения для копирования данных (ядро, виртуальный диск, дерево устройств и т. д.) и для перехода к ядру и в качестве аргументов ядра. Поскольку команды U-Boot довольно низкоуровневые, для загрузки ядра требуется несколько шагов, но это также делает U-Boot более гибким, чем другие загрузчики, поскольку одни и те же команды можно использовать для более общих задач. Можно даже обновить U-Boot с помощью U-Boot, просто прочитав новый загрузчик откуда-то (локальное хранилище, последовательный порт или сеть) в память и записав эти данные в постоянное хранилище, которому принадлежит загрузчик.
U-Boot поддерживает USB, поэтому он может использовать USB-клавиатуру для управления консолью (в дополнение к вводу через последовательный порт), а также получать доступ и загружаться с USB-устройств массовой памяти, таких как устройства чтения SD-карт.
Хранение данных и источники загрузки [ править ]
U-Boot загружает операционную систему, считывая ядро и любые другие необходимые данные (например, дерево устройств или образ виртуального диска) в память, а затем запуская ядро с соответствующими аргументами.
Команды U-Boot на самом деле являются обобщенными командами, которые можно использовать для чтения или записи любых произвольных данных. С помощью этих команд данные можно считывать или записывать в любую систему хранения, поддерживаемую U-Boot, включая:
(Примечание. Это источники загрузки, из которых U-Boot может загружать данные (например, ядро или образ виртуального диска) в память. Сама U-Boot должна загружаться платформой, и это должно быть сделано с устройства, которое поддерживает платформа. ROM способен загружаться, что естественно зависит от платформы.)
- Встроенное или прикрепленное хранилище
- Последовательный порт (передача файлов)
- Сетевая загрузка (опционально с использованием DHCP, BOOTP или RARP)
В некоторых реализациях встроенных устройств ЦП или SoC находит и загружает загрузчик (например, Das U-Boot) непосредственно из загрузочного раздела (например, файловых систем ext4 или FAT ).
Совместимые файловые системы [ править ]
U-Boot не обязательно должен иметь возможность читать файловую систему, чтобы ядро могло использовать ее в качестве корневой файловой системы или начального виртуального диска; U-Boot просто предоставляет ядру соответствующий параметр и/или копирует данные в память, не понимая их содержимого.
Однако U-Boot также может читать (а в некоторых случаях и записывать) файловые системы. Таким образом, вместо того, чтобы требовать, чтобы данные, которые загружает U-Boot, хранились в фиксированном месте на устройстве хранения, U-Boot может читать файловую систему для поиска и загрузки ядра, дерева устройств и т. д. по имени пути.
U-Boot включает поддержку следующих файловых систем:
Дерево устройств [ править ]
Дерево устройств — это структура данных для описания компоновки оборудования. Используя дерево устройств, поставщик может использовать менее модифицированную основную версию U-Boot на оборудовании специального назначения. Дерево устройств, также принятое в ядре Linux, предназначено для улучшения ситуации в индустрии встраиваемых систем , где существует огромное количество ответвлений для конкретных продуктов (U-Boot и Linux). Возможность запуска основного программного обеспечения практически гарантирует клиентам отсутствие обновлений от поставщиков.
История [ править ]


Проект начался как загрузчик 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 для перекрестной разработки , например Crosstool, Embedded Linux Development Kit (ELDK) или OSELAS.Toolchain.
Важность U-Boot во встроенных системах Linux довольно кратко изложена в книге Карима Ягмура «Building Embedded Linux Systems» , чей текст о U-Boot начинается словами: «Хотя существует немало других загрузчиков, «Das U-Boot» , универсальный загрузчик, возможно, является самым богатым, гибким и наиболее активно разрабатываемым загрузчиком с открытым исходным кодом». [10]
Использование [ править ]
- на базе ARM Chromebook поставляются с U-Boot. Chromebook на базе Celeron и i5 используют его в качестве полезной нагрузки для coreboot . [11]
- Серия PowerPC на базе AmigaOne компьютеров под управлением AmigaOS использует U-Boot, в частности Sam440ep и Sam460ex от ACube Systems Srl , а также AmigaOne X5000 от A-Eon, преемника AmigaOne X1000 .
- Устройства Ubiquiti Networks используют U-Boot.
- Устройства Amazon Kindle и Kobo eReader используют U-Boot в качестве загрузчика.
- TP-Link и несколько других беспроводных маршрутизаторов на базе MIPS, совместимых с OpenWRT/LEDE, используют U-Boot для загрузки.
- Сотовые маршрутизаторы Teltonika используют загрузчик на основе U-Boot.
- И Falcon, и Dragon от SpaceX используют U-Boot. [12]
- Asahi Linux использует его в качестве полезной нагрузки для m1n1 для загрузки Linux на Apple Silicon Mac. [13]
См. также [ править ]
Примечания [ править ]
- ^ Это настоящая загрузка NFS (сам U-Boot использует NFS для загрузки ядра), в отличие от загрузки ядра из сети с использованием TFTP и указания, что ядро должно использовать монтирование NFS в качестве корневой файловой системы.
Ссылки [ править ]
- ^ Рини, Том (2 апреля 2024 г.). «Выпущен U-Boot v2024.04» . u-boot (список рассылки) . Проверено 2 апреля 2024 г.
- ^ «Лицензия Das U-Boot» . git.denx.de. 2013 . Проверено 13 октября 2018 г.
- ^ «Подготовка образа Uboot для FPGA Altera Cyclone V SoC» .
- ^ «U-Boot на i.MX6» . 18 июня 2013 г.
- ^ «Загрузчики: u-boot: функции [Аналоговые устройства с открытым исходным кодом | ИС для смешанной и цифровой обработки сигналов]» . Архивировано из оригинала 5 сентября 2017 г. Проверено 15 июня 2016 г.
- ^ https://github.com/arm-software/ebbr , Спецификация требований к встроенной базовой загрузке (EBBR), получено 25 марта 2021 г.
- ↑ Перейти обратно: Перейти обратно: а б Домашняя страница PPCBoot: Авторы
- ^ «[PPCBoot-пользователи] Хэллоуинский выпуск PPCBoot: 2.0.0 — финальный выпуск». , Вольфганг Денк, 31 октября 2002 г.
- ↑ Перейти обратно: Перейти обратно: а б «История U-Bootdoc» . Проверено 4 сентября 2011 г.
- ^ Создание встраиваемых систем Linux, Карим Ягмур, Глава 9.
- ^ Учебное пособие по coreboot oscon 2013 , стр. 6
- ^ Мы — команда разработчиков программного обеспечения SpaceX, спрашивайте нас о чем угодно! , ответить 4
- ^ «U Boot · AsahiLinux/docs Wiki» . Гитхаб . Проверено 29 апреля 2022 г.
Внешние ссылки [ править ]
- Официальный сайт
- Официальный репозиторий Git
- Barebox (ранее известный как U-Boot-V2)
- ARMboot