Запрос «u boot github» чаще всего означает одно из двух: либо вам нужен официальный исходный код загрузчика Das U-Boot для сборки под конкретную плату, либо вы ищете форк производителя устройства, чтобы восстановить загрузчик после неудачной прошивки. Официальный проект размещается на source.denx.de (GitLab), а на GitHub существует поддерживаемое сообществом зеркало u-boot/u-boot, которое синхронизируется с основным репозиторием и удобно для просмотра кода, issues и pull requests.
Важно понимать сразу: зеркало на GitHub не является местом приёма патчей — разработка ведётся через mailing list проекта, а pull requests в зеркале обычно не рассматриваются мейнтейнерами. Однако для клонирования, изучения кода и сборки зеркало полностью пригодно, так как содержит тот же git-репозиторий.
Официальный репозиторий и зеркало на GitHub
Первичный источник исходников — сервер проекта DENX, где расположен канонический git-репозиторий. GitHub-зеркало github.com/u-boot/u-boot повторяет его содержимое и позволяет пользоваться привычным веб-интерфейсом: поиском по коду, просмотром истории коммитов и сравнением веток.
Кроме главного репозитория, на GitHub размещены сотни форков от производителей одноплатных компьютеров и SoC-вендоров: Qualcomm, NXP, Rockchip, Allwinner-сообщество и другие. Если вы восстанавливаете конкретное устройство, исходники именно его вендора могут содержать нужные драйверы, которых ещё нет в основной ветке.
- 🔹 u-boot/u-boot — официальное зеркало основного репозитория
- 🔹 Форки вендоров — исходники с поддержкой конкретных чипов и плат
- 🔹 Форки энтузиастов — порты на нестандартные устройства, роутеры, ТВ-приставки
Как клонировать репозиторий
Для работы потребуется установленный git. Клонирование выполняется стандартной командой, но из-за большого размера истории имеет смысл использовать неглубокий клон, если история коммитов вам не нужна.
git clone https://github.com/u-boot/u-boot.git
cd u-boot
Для экономии трафика и времени добавьте флаг глубины:
git clone --depth 1 https://github.com/u-boot/u-boot.git
После клонирования стоит сразу посмотреть доступные теги релизов командой git tag и переключиться на стабильную версию через git checkout v2026.01 (номер версии подставьте актуальный из списка тегов). Работа с веткой master допустима, но это развивающийся код, в котором возможны регрессии.
Сборка U-Boot из исходников
Сборка выполняется кросс-компилятором под целевую архитектуру. Для плат ARM64 обычно используется тулчейн aarch64-linux-gnu, для 32-битных ARM — arm-linux-gnueabihf. Точный тулчейн зависит от вашей платы, поэтому сверяйтесь с документацией конкретной платы в каталоге doc/board/.
Типовой порядок сборки выглядит так: сначала выбирается конфигурация платы из каталога configs/, затем запускается компиляция. Конфигурации именуются по шаблону имя_платы_defconfig.
export CROSS_COMPILE=aarch64-linux-gnu-
make имя_платы_defconfig
make -j$(nproc)
⚠️ Внимание: прошивка неправильно собранного или неподходящего загрузчика может привести к тому, что устройство перестанет загружаться. Перед записью U-Boot во флеш убедитесь, что у вас есть способ восстановления — UART-консоль, режим загрузки с SD-карты или фирменная утилита вендора.
☑️ Перед сборкой U-Boot проверьте
Структура репозитория: где что искать
Репозиторий U-Boot велик, и новичку легко потеряться. Знание основных каталогов заметно ускоряет навигацию по коду.
| Каталог | Назначение |
|---|---|
arch/ | Код, специфичный для архитектур (ARM, RISC-V, x86) |
board/ | Поддержка конкретных плат от вендоров |
configs/ | Файлы defconfig для всех поддерживаемых плат |
drivers/ | Драйверы периферии: сеть, USB, MMC, видео |
doc/ | Документация проекта в формате reStructuredText |
Если вы портирование ведёте на новую плату, начинать стоит с поиска в configs/ платы на том же SoC — её конфигурация станет основой для вашей. Дерево устройств (device tree) для поддерживаемых плат лежит в arch/arm/dts/.
Как отправить патч в проект
Здесь кроется главное отличие U-Boot от типичных GitHub-проектов: патчи принимаются через почтовую рассылку, а не через pull requests. Изменения оформляются командой git format-patch и отправляются в список рассылки разработчиков, где проходят ревью.
Перед отправкой патч обязан соответствовать правилам оформления кода проекта и содержать корректную строку Signed-off-by. Подробные требования описаны в документации репозитория — раздел о процессе разработки в каталоге doc/. Нарушение формата — самая частая причина, по которой патчи новичков отклоняют без ревью по существу.
Типичные ошибки при сборке и их причины
Чаще всего сборка прерывается из-за отсутствующих зависимостей в системе: компилятора, библиотек для работы с device tree, инструментов генерации образов. Сообщение об ошибке обычно прямо указывает недостающий компонент — установите его через пакетный менеджер и повторите сборку.
- 🔧 command not found для кросс-компилятора — не установлен тулчейн или неверно задана переменная
CROSS_COMPILE - 🔧 ошибки на этапе dtc — отсутствует пакет
device-tree-compiler - 🔧 ошибки Python-скриптов сборки — недостающие модули, перечисленные в документации
- 🔧 defconfig not found — опечатка в имени конфигурации, проверьте точное имя в
configs/
⚠️ Внимание: не собирайте U-Boot от root и не запускайте make с sudo — это создаёт файлы с владельцем root в дереве исходников и приводит к неочевидным ошибкам при последующих сборках от обычного пользователя.
Чем U-Boot отличается от загрузчиков вендора
Производители часто поставляют на устройствах старые форки U-Boot с собственными патчами. Основная ветка (mainline) может не включать драйверы специфичной периферии конкретного устройства, поэтому «самая свежая версия» не всегда равна «рабочая версия для вашей платы». Сверяйте поддержку в документации платы внутри репозитория.
FAQ: частые вопросы о U-Boot на GitHub
Является ли репозиторий u-boot/u-boot на GitHub официальным?
Это зеркало, синхронизируемое с каноническим репозиторием проекта на сервере DENX. Содержимое идентично, но разработка и приём патчей ведутся вне GitHub.
Можно ли отправить pull request в зеркало на GitHub?
Технически создать PR можно, но мейнтейнеры рассматривают патчи через почтовую рассылку проекта. Для реального включения изменений оформляйте патч через git format-patch и отправляйте в рассылку.
Как узнать, поддерживается ли моя плата?
Поищите имя платы или SoC в каталоге configs/ репозитория и в документации doc/board/. Если точного совпадения нет, ищите плату на том же процессоре — её конфигурация может стать отправной точкой.
Где взять U-Boot для конкретного роутера или ТВ-приставки?
Ищите форк вендора чипа или сообщества устройства на GitHub. Основная ветка может не содержать нужных драйверов. Перед прошивкой убедитесь, что образ предназначен именно для вашей ревизии платы, и что у вас есть способ восстановления при сбое.
Какая версия U-Boot безопаснее для сборки — master или релизный тег?
Для практического использования надёжнее стабильный релизный тег. Ветка master содержит актуальную разработку и может включать непроверенные изменения.