Слияние кода завершено, страница обновится автоматически
**Barebox**
Barebox — это загрузчик, который следует традициям Das U-Boot, но при этом использует современные идеи дизайна из ядра Linux.
**Особенности**
* API на основе POSIX. В barebox используются обычные функции open/close/read/write/lseek. Это делает его знакомым для всех, кто программировал под UNIX-системами.
* Обычные команды оболочки, такие как ls/cd/mkdir/echo/cat и т. д.
* Среда больше не является хранилищем переменных, а представляет собой хранилище файлов. Конечно, у неё есть некоторые ограничения. Среда не является реальной файловой системой чтения/записи, она больше похожа на tar-архив или даже на ar-архив, поскольку не может обрабатывать каталоги. Команда saveenv сохраняет файлы в определённом каталоге (по умолчанию /env) в постоянном хранилище (по умолчанию /dev/env0). Существует также команда loadenv.
* Поддержка файловых систем. Загрузчик запускается с монтирования ramdisk в /. Затем devfs монтируется в /dev, позволяя пользователю (или командам оболочки) получать доступ к устройствам. Помимо этих двух файловых систем, в настоящее время портирована одна файловая система: cramfs. Её можно смонтировать с помощью обычной команды mount.
* Модель устройства/драйвера. Устройства больше не описываются с помощью defines в файле конфигурации. Вместо этого существуют устройства, которые могут быть зарегистрированы в файле board .c или динамически распределены. Драйверы будут автоматически соответствовать устройствам.
* Поддержка clocksource. Отслеживание времени было упрощено за счёт использования API Linux clocksource. Для новой платы требуется только одна функция, нет необходимости в функциях [gs]et_timer[masked]() или reset_timer[masked]().
* Kconfig и система сборки ядра. Перекомпилируются только те цели, которые действительно необходимы. Параллельные сборки больше не являются проблемой. Это также устраняет необходимость во многих ifdefs в коде.
* Целевая среда для моделирования. Barebox можно скомпилировать для работы под Linux. Хотя это довольно бесполезно в реальном мире, это отличный помощник для отладки и разработки. Новые функции можно легко разработать и протестировать в длительных поездках на поезде и запустить под gdb. Существует консольный драйвер для Linux, который эмулирует последовательное устройство, и Ethernet-драйвер на базе TAP. Файлы Linux можно сопоставить с устройствами под barebox для эмуляции запоминающих устройств.
* Поддержка параметров устройства. Каждое устройство может иметь неограниченное количество параметров. К ним можно получить доступ в командной строке с <devid>.<param>="...", например, 'eth0.ip=192.168.0.7' или 'echo $eth0.ip'.
* initcalls. Хуки в процессе запуска можно реализовать с помощью директив *_initcall() в каждом файле.
* getopt. Есть небольшая реализация getopt. Некоторые команды стали действительно сложными (как в коде, так и в использовании) из-за того, что U-Boot допускал только позиционные параметры.
* Редактор. Скрипты можно редактировать с помощью небольшого редактора. У этого редактора нет функций, кроме действительно необходимых: перемещение курсора и ввод символов.
**Сборка Barebox**
В barebox используется система сборки Linux-ядра. Она состоит из двух частей: инфраструктуры Makefile (kbuild) и системы конфигурации (kconfig). Таким образом, сборка barebox очень похожа на сборку Linux-ядра.
Для приведённых ниже примеров мы используем реализацию User Mode 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 Jun 26 22:34 barebox
Для работы Barebox обычно требуется среда для хранения данных конфигурации.
Вы можете создать среду, используя пример среды, содержащийся в board/sandbox/env:
# ./scripts/bareboxenv -s -p 0x10000 arch/sandbox/board/env env.bin
Чтобы получить файлы для работы, вы можете сгенерировать образ cramfs:
# mkcramfs somedir/ cramfs.bin
Образ Barebox представляет собой обычный исполняемый файл Linux, поэтому его можно запустить так же, как и любую другую программу:
# ./barebox -e env.bin -i cramfs.bin
barebox 2.0.0-trunk (Jun 26 2007 - 22:34:38)
loading environment from /dev/env0
barebox> /
Указание -[ie] <file> сообщает Barebox отобразить файл как устройство в /dev. Файлы, указанные с помощью '-e', будут отображаться как /dev/env[n]. Файлы, указанные с '-i', будут отображаться как /dev/fd[n].
Если Barebox находит действительный сектор конфигурации на /dev/env0, он загружает его в /env. Затем он выполняет /env/init, если он существует. Если вы загрузили пример среды, Barebox покажет вам меню с запросом ваших настроек.
Если вы запустили Barebox от имени root, вы обнаружите новое устройство tap на вашем хосте, которое вы можете настроить с помощью ifconfig. После того как вы настроите сетевые параметры Barebox соответствующим образом, вы сможете выполнить ping или tftpboot.
Если вы сопоставили образ cramfs, попробуйте смонтировать его с помощью:
# mkdir /cram
# mount /dev/fd0 cramfs /cram
Память можно исследовать обычным способом с помощью команд md/mw. Обе команды понимают опцию -f <файл>, чтобы сообщить командам, что они должны работать с указанными файлами вместо /dev/mem, который содержит полное адресное пространство. Обратите внимание, что если вы вызовете 'md /dev/fd0' (без -f), Barebox вызовет ошибку сегментации на хосте, потому что он будет интерпретировать /dev/fd0 как число.
**Структура каталогов**
----------------
Большая часть структуры каталогов основана на ядре Linux:
arch/*/ -> содержит специфичные для архитектуры части
arch/*/mach-*/ -> код для конкретного SoC
drivers/serial -> драйверы
drivers/net
drivers/...
include/asm-* -> специфичные для архитектуры включения
include/asm-*/arch-* -> включения для конкретного SoC
fs/ -> поддержка файловой системы и драйверы файловой системы
lib/ -> общие функции библиотеки (getopt, readline и т. д.)
common/ -> общие вещи
commands/ -> многие вещи ранее в common/cmd_*, одна команда на файл
net/ -> Сетевые компоненты
scripts/ -> система Kconfig
Documentation/ -> документация, созданная Sphinx
**Стратегия выпуска**
------------------
Barebox разрабатывается с использованием git. Время от времени из репозитория создаются выпуски tarball и публикуются на веб-сайте проекта. Вот правила выпуска:
- Выпуски следуют временной схеме:
barebox-xxxx.yy.z.tar.bz2
^^^^ ^^ ^----------- Номер исправления ошибок, начиная с 0
\ \------------- Месяц
\---------------- Год
Пример: barebox-2009.12.0.tar.bz2
- Выпуски делаются в начале месяца. Поскольку мы стремимся к ежемесячным выпускам, разработка считается непрерывным процессом. Если вы обнаружите ошибки в одном выпуске, у вас есть шанс получить исправления в кратчайшие сроки.
- Обычно выпусков с исправлением ошибок нет, поэтому z=0. Если необходимо выпустить исправление ошибок, z — это место, где нужно увеличить значение.
- Если есть причина для предварительных выпусков, они называются
barebox-xxxx.yy.z-pren.tar.bz
^------ Номер предварительного выпуска, начиная с 1
Пример: barebox-2009.12.0-pre1.tar.bz2
Мы считаем, что в предварительных выпусках нет необходимости, но если когда-либо возникнет такая необходимость, мы будем следовать этой схеме.
- На веб-сайт архивируются только ежемесячные выпуски. Tarballs находятся по адресу http://www.barebox.org/download/, и это местоположение никогда не меняется, чтобы упростить жизнь дистрибьюторам.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )