Гид по технологиям

Минимальная Linux‑сборка с Yocto на Ubuntu

5 min read Встраиваемый Linux Обновлено 20 Oct 2025
Минимальная Linux‑сборка с Yocto на Ubuntu
Минимальная Linux‑сборка с Yocto на Ubuntu

Краткое введение

Проект Yocto — это набор инструментов и коллекция метаданных для создания кастомных Linux‑дистрибутивов для встраиваемых устройств. Poky — минимальная сборочная среда Yocto. В этой инструкции мы соберём минимальный образ для цели qemux86-64 и запустим его в QEMU на Ubuntu.

Важно: Yocto выполняет много загрузок и компиляций; подготовьте свободное место и не запускайте сборку под root.

Требования для машины разработки

  • ОЗУ: минимум 4–6 ГБ, рекомендуется 8 ГБ или больше.
  • ОС: Ubuntu (в примере использована 16.04 LTS). Подойдут и более новые LTS‑версии, но учитывайте совместимость метаданных.
  • Свободное место на диске: 60–80 ГБ (рекомендуется 100+ ГБ при активной разработке).
  • Необходимые пакеты и инструменты разработчика.

Факт‑бокс

  • Оценка времени сборки: от 2 до 6 часов при первом запуске (зависит от CPU и сетевого канала).
  • Размер требуемых пакетов: около 1 ГБ при установке зависимостей.

Установка зависимостей

Обновите список пакетов:

apt-get update

Установите рекомендованные пакеты для сборки Yocto:

apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop

Установка необходимых пакетов для Yocto

Рисунок: шкала установки пакетов и оценка их суммарного размера.

Установка пакетов разработки

Рисунок: процесс установки пакетов разработки, требующий примерно 1 ГБ.

Клонирование Poky (релиз morty)

Клонируйте минимальную сборочную среду (poky) стабильного ветвления morty:

git clone -b morty git://git.yoctoproject.org/poky.git

Клонирование poky morty

Перейдите в каталог poky и подготовьте окружение сборки:

source oe-init-build-env

Подготовка окружения сборки OE

После выполнения скрипта вы попадёте в подкаталог build, где появится конфигурация Yocto.

Настройка local.conf

В каталоге build/conf находится файл local.conf — центральный конфиг Yocto для выбора целевой платформы, SDK и путей для кешей.

Укажите целевую машину qemux86-64 (пример):

Установка типа целевой машины

Отредактируйте и раскомментируйте или добавьте следующие параметры в local.conf (примерные строки):

DL_DIR ?= "${TOPDIR}/downloads"

Настройка DL_DIR

SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

Настройка SSTATE_DIR

TMPDIR ?= "${TOPDIR}/tmp"

PACKAGE_CLASSES ?= "package_rpm"

SDKMACHINE ?= "i686"

Установка PACKAGE_CLASSES и SDKMACHINE

Для удобного входа в систему укажите отладочные возможности и пустой пароль для root (в тестовой среде):

EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

Включение debug-tweaks

Важно: не используйте пустой пароль в продуктивной среде. Эти настройки подходят только для тестирования и отладки образа.

Сборка образа Yocto

Запустите сборку минимального образа через bitbake (делайте это от обычного пользователя, не root):

bitbake core-image-minimal

Запуск bitbake

Важно: bitbake нельзя запускать от root. При запуске от root вы получите ошибку — вернитесь к обычному пользователю и повторите экспорт окружения:

Не запускайте bitbake как root

Если вы переключились в новый терминал, выполните снова:

source oe-init-build-env

и повторно вызовите bitbake.

Повторный запуск команд

Первый этап сборки — парсинг рецептов (parsing). Эта стадия определяет зависимости и план сборки.

Процесс сборки

После скачивания SDK и исходников начинается компиляция пакетов; этот этап может занять 2–3 часа и более в зависимости от железа и сети.

Компиляция занимает несколько часов

По завершении вы увидите сообщение об окончании задач и список с результатами.

Собранные образы окажутся в каталоге build/tmp/deploy/images/qemux86-64:

Сборка завершена, образы в deploy

Запуск образа в QEMU

Иногда при удалённом подключении (например, через PuTTY к Windows‑серверу) запуск GUI/QEMU может вызвать ошибки. Запускайте QEMU в локальном сеансе с X11/rdp или используйте параметр —nographic для консольного запуска.

Ошибка команды в PuTTY

Запуск через rdp / локальный терминал часто решает проблему:

Команда корректно работает через rdp

Откроется окно эмулятора QEMU с загруженным образом Yocto:

Окно QEMU с Yocto

Экран логина показывает имя проекта Yocto и позволяет войти под root с пустым паролем (если вы включили debug‑tweaks):

Экран входа в дистрибутив

Войдите как root и выполните несколько базовых команд для проверки образа:

date
ifconfig
uname -a

Тестирование дистрибутива

Критерии приёмки

  • Образ успешно собирается командой bitbake без ошибок.
  • Файлы образа присутствуют в build/tmp/deploy/images/qemux86-64.
  • QEMU загружает образ, появляется экран логина.
  • Удалось войти под root (если включён debug) и выполнить базовые команды.

Чеклист для быстрой проверки

  • Установлены все зависимости apt.
  • Клонирован poky ветки morty.
  • Выполнен source oe-init-build-env.
  • local.conf настроен: DL_DIR, SSTATE_DIR, TMPDIR, PACKAGE_CLASSES, SDKMACHINE.
  • EXTRA_IMAGE_FEATURES = “debug-tweaks” (для тестирования).
  • Запуск bitbake выполнен от обычного пользователя.
  • Образ проверен в QEMU.

Мини‑методология (пошагово)

  1. Подготовьте систему: обновите пакеты и установите зависимости.
  2. Клонируйте poky нужного релиза.
  3. Инициализируйте окружение сборки (oe-init-build-env).
  4. Скройте/укажите пути кешей и таргет (local.conf).
  5. Запустите bitbake core-image-minimal и дождитесь завершения.
  6. Запустите собранный образ в QEMU и проверьте функциональность.

Когда Yocto не подходит

  • Нужен быстрый прототип с минимальной конфигурацией — рассмотрите Buildroot.
  • Требуется готовый репозиторий пакетов и богатый пользовательский набор — используйте Debian/Ubuntu base rootfs.
  • Ограниченные ресурсы и отсутствие времени на конфигурацию — Yocto требует времени на изучение и настройку.

Альтернативные подходы

  • Buildroot: проще и быстрее для простых образов, но менее гибок для SDK/слоёв.
  • Debian debootstrap или debootstrap+chroot: быстрый способ получить готовую файловую систему с пакетной экосистемой.
  • Yocto/OpenEmbedded с кастомными слоями: для долгосрочных продуктов и кастомизации пакетов.

Отладка и полезные команды

  • Просмотр логов сборки:
bitbake -k core-image-minimal
bitbake -f -c cleansstate 
  • Очистка временных артефактов:
bitbake -c cleanall 
rm -rf tmp sstate-cache downloads
  • Проверка содержимого директории deploy:
ls -lh build/tmp/deploy/images/qemux86-64

Роль‑ориентированные рекомендации

  • Разработчик: настраивает local.conf, создаёт метаданные layer, тестирует образы в QEMU.
  • Системный интегратор: проверяет совместимость с железом, собирает SDK для кросс‑компиляции.
  • QA: проверяет загрузку, базовую функциональность, сетевые интерфейсы и сторонние пакеты.

Decision flow (выбор подхода)

flowchart TD
  A[Нужен кастомный образ?] -->|Да| B{Требуется высокая кастомизация}
  A -->|Нет| C[Использовать стандартный дистрибутив]
  B -->|Да| D[Использовать Yocto]
  B -->|Нет| E[Рассмотреть Buildroot]
  D --> F[Создать layer и рецепт]
  E --> G[Buildroot: быстрый прототип]

Краткий словарь терминов

  • Yocto: система сборки для создания кастомных Linux‑образов.
  • Poky: референсная сборочная среда Yocto.
  • Bitbake: инструмент планирования и исполнения рецептов сборки.
  • QEMU: эмулятор аппаратуры для запуска собранных образов.

Безопасность и примечания

  • Не оставляйте пустой пароль для root в продуктивной среде.
  • Убедитесь, что любые включённые пакеты не нарушают лицензионные требования вашей продукции.

Итог

Yocto даёт гибкость и контроль над составом образа, но требует подготовки системы и времени на сборку. Для тестовой минимальной сборки на Ubuntu достаточно установить зависимости, клонировать poky (morty), настроить local.conf и запустить bitbake core-image-minimal, после чего проверять образ в QEMU.

Ключевые советы

  • Всегда запускать bitbake от обычного пользователя.
  • Держите DL_DIR и SSTATE_DIR вне tmp для повторного использования загруженных исходников и ускорения сборок.
  • Используйте debug‑tweaks только в тестовой среде.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как запустить два WhatsApp на одном телефоне
Мессенджеры

Как запустить два WhatsApp на одном телефоне

Ошибка: приложение не запустилось вовремя — решения
Windows

Ошибка: приложение не запустилось вовремя — решения

Изображения внутри ячеек Excel — руководство
Excel

Изображения внутри ячеек Excel — руководство

Терминальное рабочее пространство Linux
Продуктивность

Терминальное рабочее пространство Linux

Защита от атак на push‑2FA
Кибербезопасность

Защита от атак на push‑2FA

Как скрыть историю браузера
Конфиденциальность

Как скрыть историю браузера