Das U-Boot - Das U-Boot
Разработчики) | Разработка программного обеспечения DENX |
---|---|
изначальный выпуск | 15 октября 1999 г. |
Стабильный выпуск | v2020.10 / 5 октября 2020 г.[1] |
Предварительный выпуск | v2021.01-rc2 / 9 ноября 2020 г.[2] |
Репозиторий | |
Написано в | C, Сборка |
Доступно в | английский |
Тип | Загрузчик |
Лицензия | GPLv2 +[3] |
Интернет сайт | www |
Das U-Boot (с подзаголовком «Универсальный загрузчик», часто сокращенно U-Boot; увидеть История подробнее об имени) Открытый исходный код, первичный загрузчик используется в встроенные устройства чтобы упаковать инструкции по загрузке ядра операционной системы устройства. Он доступен для ряда компьютерные архитектуры, в том числе 68 тыс., РУКА, Blackfin, MicroBlaze, MIPS, Nios, SuperH, PPC, RISC-V и x86.
Функциональность
U-Boot является загрузчиком как первого, так и второго уровня. Он загружается системой ПЗУ или BIOS с поддерживаемого загрузочного устройства, такого как SD-карта, диск SATA, флэш-память NOR (например, используя SPI или I²C ) или NAND flash. Если есть ограничения по размеру, 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 загружает операционную систему, считывая ядро и любые другие необходимые данные (например, дерево устройств или образ виртуального диска) в память, а затем запускает ядро с соответствующими аргументами.
Команды U-Boot на самом деле являются обобщенными командами, которые можно использовать для чтения или записи любых произвольных данных. С помощью этих команд данные могут быть прочитаны или записаны в любую систему хранения, поддерживаемую U-Boot, в том числе:
(Примечание: это источники загрузки, из которых U-Boot может загружать данные (например, ядро или образ RAM-диска) в память. Сама U-Boot должна загружаться платформой, и это должно выполняться с устройства, на котором установлена платформа. ПЗУ или BIOS могут загружаться, что, естественно, зависит от платформы.)
- Встроенное или прикрепленное хранилище
- Последовательный порт (передача файлов)
- Сетевая загрузка (опционально с использованием DHCP, BOOTP или RARP)
Совместимые файловые системы
U-Boot не обязательно должен иметь возможность читать файловую систему, чтобы ядро могло использовать ее в качестве корневой файловой системы или начального RAM-диска; 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-загрузка-0.1.0 в ноябре 2002 г. расширился до работы над x86 архитектура процессора. Дополнительные возможности архитектуры были добавлены в следующие месяцы: MIPS32 в марте 2003 г., MIPS64 в апреле, Ниос II в октябре, Холодный огонь в декабре и 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]
Использование
- 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 используют U-Boot в качестве загрузчика.
- TP-Link и несколько других совместимых с OpenWRT / LEDE беспроводных маршрутизаторов на базе MIPS используют U-Boot для загрузки.
- Сотовые маршрутизаторы Teltonika используют загрузчик на основе U-Boot.
- Falcon и Dragon от SpaceX используют U-Boot[12]
Смотрите также
Заметки
- ^ Это настоящая загрузка NFS (сама U-Boot использует NFS для загрузки ядра), в отличие от загрузки ядра из сети с использованием TFTP и указания, что ядро должно использовать монтирование NFS в качестве корневой файловой системы.
использованная литература
- ^ «Цикл выпуска U-Boot». u-boot (Список рассылки).
- ^ Рини, Том (9 ноября 2020 г.). "Выпущен U-Boot v2021.01-rc2". u-boot (Список рассылки). Получено 10 ноября 2020.
- ^ «Лицензия Das U-Boot». git.denx.de. 2013. Получено 2018-10-13.
- ^ http://xillybus.com/tutorials/u-boot-image-altera-soc
- ^ https://boundarydevices.com/u-boot-on-i-mx6/
- ^ «Архивная копия». Архивировано из оригинал на 2017-09-05. Получено 2016-06-15.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
- ^ а б Домашняя страница PPCBoot: Авторы
- ^ «[PPCBoot-users] Хэллоуинский релиз PPCBoot: 2.0.0 - финальный релиз»., Вольфганг Денк, 31 октября 2002 г.
- ^ а б "История U-Bootdoc". Получено 4 сентября, 2011.
- ^ Построение встраиваемых систем Linux Карим Ягмур, Глава 9
- ^ coreboot учебник oscon 2013, п. 6
- ^ Мы команда разработчиков программного обеспечения SpaceX, спрашивайте нас о чем угодно!, ответ 4
внешние ссылки
- Официальный веб-сайт
- Официальный репозиторий git
- Barebox (ранее известный как U-Boot-V2)
- Das U-Boot на SourceForge.net