Загрузочный менеджер, следующий традициям Das U-Boot, при этом использует современные идеи дизайна из ядра Linux.
Попробуйте прямо в браузере ✨ · Узнайте больше в документации 📖 · Присоединяйтесь к проекту 🫶
open/close/read/write/lseek
.
Это делает его знакомым всем, кто работал с системами UNIX.ls/cd/mkdir/echo/cat/cp/mount
,...
которые работают единообразно на всех типах файловых систем./
. Затем монтируется devfs на /dev
, что позволяет пользователю (или командам командной строки) обращаться к устройствам. Кроме этих двух файловых систем, существует множество других портированных файловых систем: ext4, efi, efivarfs, fat, jffs2, NFS, tftp, pstore, squashfs, ubifs, ratp (RFC916), u-boot variable FS и другие.* Поддержка многоплатформенной конфигурации:
Конфигурации типа multi_v7_defconfig
и multi_v8_defconfig
позволяют сборку barebox для сотен платформ одновременно. Все получаемые образы используют один и тот же основной двоичный файл barebox, каждый раз с различными прелоадерами для выполнения низкоуровневой инициализации и передачи деревьев устройств. Прелоaderы могут распознавать типы плат и SoC и передавать различные деревья устройств для поддержки различных плат одним образом.* Ориентация на опыт разработчиков:
Barebox предоставляет множество функций, знакомых разработчикам ядер.barebox-dt-2nd.img
, который загружается точно так же, как ядро Linux.dmesg
с Linux.<devid>.<param>=...
, например
eth0.ip=192.168.0.7
или эхо $eth0.ip
.saveenv
архивирует файлы под определённым каталогом (по умолчанию
/env
) в постоянное хранение (по умолчанию /dev/env0
). Также есть противоположная команда
loadenv
. Кроме того, barebox-state обеспечивает безопасное отключение питания для переменных,
с возможностью опциональной аутентификации, поэтому изменяемое окружение может быть отключено
по соображениям безопасности.* Единство: Установление источника загрузки barebox, выявление причины последнего сброса,
запуск в надёжном режиме отказоустойчивости, обновление barebox на диске являются примерами
функциональности, управляемой общими механизмами, чтобы платформы выглядели и работали одинаково,
а пользовательские скрипты или код платформы требовались только для исключительных случаев.*_initcall()
в каждом файле.* Целевой объект симуляции ARCH=sandbox
:
barebox может быть собран для работы под Linux. Хотя это довольно бесполезно
в реальном мире, это отличный инструмент для отладки и разработки. Новые функции
легко создаются и протестированы во время длительных поездок на поезде и запускаются
под gdb. Есть драйвер консоли для Linux, который имитирует последовательное устройство и драйвер Ethernet на основе TAP.
Файлы Linux могут быть отображены на устройствах под barebox для имитации устройств хранения.* И да, конечно же, он работает с DOOM https://doomwiki.org/wiki/BareDOOM. Сборка BareboxBarebox использует систему сборки Linux-ядра. Она состоит из двух частей: инфраструктуры Makefile (kbuild) и системы конфигурирования (kconfig). Поэтому сборка barebox очень схожа с процессом сборки Linux-ядра.
Для примеров ниже мы используем реализацию barebox в режиме пользователя, которая является портом barebox для пространства пользователя Linux. Это позволяет протестировать код без использования реального оборудования. Так что для этого тестового сценария выбор архитектуры будет следующим: ARCH=sandbox
— это допустимое значение для выбора архитектуры. В настоящее время это работает на как минимум IA32 и x86-64 хостах.
Выбор архитектуры и кросс-скомпилировщика можно выполнить с помощью переменных окружения ARCH
и CROSS_COMPILE
.
Чтобы настроить различные аспекты barebox, запустите систему конфигурирования barebox:
# make menuconfig
Эта команда запускает меню и позволяет выбрать все доступные опции для вашей архитектуры. После завершения настройки (вы можете имитировать это с использованием стандартного файла конфигурации демонстрационной среды с командой make sandbox_defconfig
), в корневом каталоге исходного кода появится файл .config
.
После того как barebox был настроен, можно начинать компиляцию::
# make
Если всё прошло успешно, результатом станет файл, называемый barebox:
# ls -l barebox -rwxr-xr-x 1 rsc ptx 114073 Июн 26 22:34 barebox
Чтобы получить некоторые файлы для работы, вы можете создать образ squashfs:
# mksquashfs somedir/ squashfs.bin
Изображение barebox — это обычное исполняемое приложение Linux, поэтому его можно запустить так же, как любую другую программу:
# ./barebox -i squashfs.bin Добавлено устройство fd0, поддерживающее файл squashfs.bin Добавлено устройство stickypage, поддерживающее файл /run/user/1000/barebox/stickypage.1661112 barebox 2024.07.0 #0 Срд Юл 18 11:36:31 CEST 2024 [...] barebox@Sandbox:/
Указание -[ie] <file>
заставляет barebox отображать файл как устройство под /dev. Файлы, переданные с ключом -e
, будут отображаться как /dev/env[n]
. Файлы, переданные с ключом -i
, будут отображаться как /dev/fd[n]
.
Если barebox обнаруживает действительный сектор конфигурации на /dev/env0
, он загрузит его в /env
. Затем он выполнит /env/init/*
, если такие файлы существуют. Если вы загрузили примерную среду, barebox покажет вам меню, которое спросит ваши настройки. Конфигурация sandbox включает "sticky page", которая наследуется через перезапуск barebox. Таким образом, есть работающая среда сразу после установки. Если вы запустили barebox от имени root, вы найдете новый сетевой интерфейс TAP на вашем хосте, который можно настроить с помощью команды ifconfig. После того как вы настроите сетевые параметры barebox, вы сможете выполнить пинг или загрузить файл через tftpboot.Если вы отобразили squashfs образ, попробуйте смонтировать его следующим образом:
barebox@Sandbox:/ mount fd0 mounted /dev/fd0 on /mnt/fd0
Когда команда barebox mount
вызывается с одним аргументом, она проверяет магические байты в исходном устройстве и монтирует его с подходящей файловой системой под /mnt
.
Проверка памяти может быть выполнена обычными командами md/mw. Они понимают опции -s <file>
и -d <file>
, соответственно, чтобы указать командам работать с указанными файлами вместо /dev/mem
, которая содержит полное адресное пространство.
Большая часть структуры каталогов основана на структуре Linux ядра
Barebox развивается с использованием Git. По ежемесячному графику, релизы tarball создаются из репозитория и выпускаются на сайте проекта. Вот правила выпуска:
Выпуски следуют временной схеме:
- barebox-xxxx.yy.z.tar.bz2
- ^^^^ ^^ ^------------------- Номер исправления, начинается с 0
- -------------------- Месяц
----------------------- Год
Пример: barebox-2024.08.0.tar.bz2
Поскольку мы стремимся к ежемесячным выпускам, развитие рассматривается как непрерывный процесс. Если вы обнаружили ошибки в одном выпуске, у вас есть возможность получить исправления очень быстро (обычно за один месяц максимум).
Новые возможности применяются к ветке next
. Исправления непосредственно к ветке master
. Выпуски всегда создаются из ветки master
, а затем ветка next
объединяется с веткой master
. Таким образом новые возможности требуют 1-2 месяца до того, как они попадут в выпуск.- Обычно исправления выпусков отсутствуют, поэтому z=0. Если требуется сделать исправленный выпуск,
z — это правильное место для увеличения номера.
Если может потребоваться создание пререлизов, они называются:
- barebox-xxxx.yy.z-pren.tar.bz
^-------- Номер пререлиза, начинается с 1
Пример: barebox-2009.12.0-pre1.tar.bz2
Мы считаем, что нет необходимости для пререлизов, но если когда-либо это будет необходимо, эта схема используется.
Только ежемесячные выпуски хранятся на сайте. Архивы расположены по адресу https://www.barebox.org/download/, и этот адрес никогда не меняется, чтобы облегчить жизнь пользователям распределённых систем.
сотрудничество по проекту barebox главным образом происходит на <barebox@lists.infradead.org> почтовом списке рассылки.
Репозиторий можно форкнуть на GitHub <https://github.com/barebox/barebox> для запуска тестового набора CI против виртуализированных целей перед отправкой патчей.
См. раздел введения в документации для получения дополнительной информации.
barebox является свободным программным обеспечением: вы можете распространять его и/или модифицировать его в соответствии с условиями Общей общественной лицензии GNU версии 2, выпущенной Free Software Foundation.Этот программный продукт распространяется в надежде, что он будет полезен, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без неявной гарантии товарности или пригодности для конкретных целей. Смотрите Общую общественную лицензию GNU для более подробной информации. Вы должны были получить копию лицензии GNU General Public License в файле COPYING вместе с этим программным обеспечением. Если нет, см. <https://www.gnu.org/licenses/>.
Отдельные файлы могут содержать следующие SPDX-теги лицензий как сокращение для вышеуказанных уведомлений авторских прав и гарантий:
SPDX-License-Identifier: GPL-2.0-only SPDX-License-Identifier: GPL-2.0-or-later
Это облегчает машинную обработку информации о лицензиях на основе SPDX-идентификаторов лицензий, доступных по адресу http://spdx.org/licenses/.
Также обратите внимание, что некоторые файлы в дереве исходных текстов barebox доступны под несколькими различными лицензиями открытого программного обеспечения совместимыми с GPLv2. Этот факт четко указан в заголовках файлов и полный текст лицензии воспроизведен в директории LICENSES/
.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )