1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-barebox

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.rst

barebox

Загрузочный менеджер, следующий традициям Das U-Boot, при этом использует современные идеи дизайна из ядра Linux.

Попробуйте прямо в браузере ✨ · Узнайте больше в документации 📖 · Присоединяйтесь к проекту 🫶

Основные возможности

  • Базовый API файловой системы на основе POSIX: Внутри barebox используются обычные функции open/close/read/write/lseek. Это делает его знакомым всем, кто работал с системами UNIX.
  • Обычные команды командной строки, такие как ls/cd/mkdir/echo/cat/cp/mount,... которые работают единообразно на всех типах файловых систем.
  • Поддержка различных файловых систем: Загрузчик начинается с монтирования ramdisk на /. Затем монтируется 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 проектируются таким образом, чтобы они могли загружаться внутри самого barebox, что позволяет разработчикам легко использовать сетевую загрузку. Для цепочечной загрузки из существующих загрузчиков также существует дополнительный образ barebox-dt-2nd.img, который загружается точно так же, как ядро Linux.
    • KASAN (Kernel Address Sanitizer) и kallsyms (отображение символов стека) помогают выявлять проблемы с памятью.
    • Ramoops позволяет barebox делиться логом dmesg с Linux.
    • Ядерные драйверы Linux легче переносятся благодаря тому, что их фреймворки тесно связаны с аналогичными версиями в ядре Linux.*
  • Поддержка параметров устройств: Каждое устройство может иметь неограниченное количество параметров. Они могут быть доступны в командной строке с помощью <devid>.<param>=..., например eth0.ip=192.168.0.7 или эхо $eth0.ip.
  • Редактор: Скрипты можно редактировать с помощью небольшого редактора. Этот редактор имеет минимальные возможности, необходимые для перемещения курсора и ввода символов на нескольких строках.* Окружение больше не является хранилищем переменных, а файловым хранилищем. Команда saveenv архивирует файлы под определённым каталогом (по умолчанию /env) в постоянное хранение (по умолчанию /dev/env0). Также есть противоположная команда loadenv. Кроме того, barebox-state обеспечивает безопасное отключение питания для переменных, с возможностью опциональной аутентификации, поэтому изменяемое окружение может быть отключено по соображениям безопасности.* Единство: Установление источника загрузки barebox, выявление причины последнего сброса, запуск в надёжном режиме отказоустойчивости, обновление barebox на диске являются примерами функциональности, управляемой общими механизмами, чтобы платформы выглядели и работали одинаково, а пользовательские скрипты или код платформы требовались только для исключительных случаев.
  • Модель устройства/драйвера: Устройства больше не описываются определениями в конфигурационном файле. Вместо этого устройства регистрируются при их обнаружении (например, через обход дерева устройств OpenFirmware или EFI-объекты) или путём кода платформы. Драйверы автоматически совпадают с устройствами.
  • Изменение дерева устройств: barebox предоставляет широкую поддержку для исправления своего дерева устройств во время выполнения и дерева устройств ядра, как это делается с помощью кода платформы, скриптов командной строки или внутри переключаемых слоёв дерева устройств.
  • Инициализационные вызовы: точки входа в процессе старта могут быть достигнуты с помощью директив *_initcall() в каждом файле.* Целевой объект симуляции ARCH=sandbox: barebox может быть собран для работы под Linux. Хотя это довольно бесполезно в реальном мире, это отличный инструмент для отладки и разработки. Новые функции легко создаются и протестированы во время длительных поездок на поезде и запускаются под gdb. Есть драйвер консоли для Linux, который имитирует последовательное устройство и драйвер Ethernet на основе TAP. Файлы Linux могут быть отображены на устройствах под barebox для имитации устройств хранения.* И да, конечно же, он работает с DOOM https://doomwiki.org/wiki/BareDOOM. Сборка Barebox

Barebox использует систему сборки 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 против виртуализированных целей перед отправкой патчей.

См. раздел введения в документации для получения дополнительной информации.

Лицензия

Авторское право © 2000 - 2005 Wolfgang Denk, DENX Software Engineering, wd@denx.de.
Авторское право © 2018 Sascha Hauer, Pengutronix, и отдельные участники

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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-barebox.git
git@api.gitlife.ru:oschina-mirror/mirrors-barebox.git
oschina-mirror
mirrors-barebox
mirrors-barebox
master