Минимальная 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
Рисунок: шкала установки пакетов и оценка их суммарного размера.
Рисунок: процесс установки пакетов разработки, требующий примерно 1 ГБ.
Клонирование Poky (релиз morty)
Клонируйте минимальную сборочную среду (poky) стабильного ветвления morty:
git clone -b morty git://git.yoctoproject.org/poky.git
Перейдите в каталог poky и подготовьте окружение сборки:
source oe-init-build-env
После выполнения скрипта вы попадёте в подкаталог build, где появится конфигурация Yocto.
Настройка local.conf
В каталоге build/conf находится файл local.conf — центральный конфиг Yocto для выбора целевой платформы, SDK и путей для кешей.
Укажите целевую машину qemux86-64 (пример):
Отредактируйте и раскомментируйте или добавьте следующие параметры в local.conf (примерные строки):
DL_DIR ?= "${TOPDIR}/downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
TMPDIR ?= "${TOPDIR}/tmp"
PACKAGE_CLASSES ?= "package_rpm"
SDKMACHINE ?= "i686"
Для удобного входа в систему укажите отладочные возможности и пустой пароль для root (в тестовой среде):
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
Важно: не используйте пустой пароль в продуктивной среде. Эти настройки подходят только для тестирования и отладки образа.
Сборка образа Yocto
Запустите сборку минимального образа через bitbake (делайте это от обычного пользователя, не root):
bitbake core-image-minimal
Важно: bitbake нельзя запускать от root. При запуске от root вы получите ошибку — вернитесь к обычному пользователю и повторите экспорт окружения:
Если вы переключились в новый терминал, выполните снова:
source oe-init-build-env
и повторно вызовите bitbake.
Первый этап сборки — парсинг рецептов (parsing). Эта стадия определяет зависимости и план сборки.
После скачивания SDK и исходников начинается компиляция пакетов; этот этап может занять 2–3 часа и более в зависимости от железа и сети.
По завершении вы увидите сообщение об окончании задач и список с результатами.
Собранные образы окажутся в каталоге build/tmp/deploy/images/qemux86-64:
Запуск образа в QEMU
Иногда при удалённом подключении (например, через PuTTY к Windows‑серверу) запуск GUI/QEMU может вызвать ошибки. Запускайте QEMU в локальном сеансе с X11/rdp или используйте параметр —nographic для консольного запуска.
Запуск через rdp / локальный терминал часто решает проблему:
Откроется окно эмулятора 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.
Мини‑методология (пошагово)
- Подготовьте систему: обновите пакеты и установите зависимости.
- Клонируйте poky нужного релиза.
- Инициализируйте окружение сборки (oe-init-build-env).
- Скройте/укажите пути кешей и таргет (local.conf).
- Запустите bitbake core-image-minimal и дождитесь завершения.
- Запустите собранный образ в 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 только в тестовой среде.
Похожие материалы

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

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

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

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

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