Встроенное программное обеспечение - Yocto сборка Raspberry Pi 4: скриншот компьютера

Yocto создает Raspberry Pi 4

в среде Docker

Руководство по проекту Yocto с открытым исходным кодом

советы по настройке пользовательского Linux на Raspberry Pi с Docker

Руководство по проекту Yocto с открытым исходным кодом для пользовательского Linux на Raspberry Pi с советами по настройке Docker

Погрузитесь в проект Yocto для пользовательских систем Linux на любом оборудовании. Идеально подходит для разработчиков и энтузиастов встраиваемых систем . Начните строить прямо сейчас!

Познакомьтесь с проектом Yocto — инициативой с открытым исходным кодом для создания пользовательских систем Linux для любой аппаратной архитектуры. Научитесь использовать CROPS для кроссплатформенной разработки, настраивайте контейнеры Docker и создавайте специализированные образы Linux для встраиваемых и IoT-устройств. В нашем руководстве рассказывается о настройке на macOS, настройке сред сборки и оптимизации для Raspberry Pi. Независимо от того, являетесь ли вы новичком или экспертом, вы найдете лучшие практики, инструменты и поддержку сообщества для вашего проекта Linux.

Yocto работает в docker-контейнере

В документации Yocto есть глава (2.2.2) для настройки CROss PlatformS (CROPS) в качестве альтернативы настройке стандартного linux на ПК.В этом случае используется Docker-контейнер для создания персонализированного образа системы, например, для Raspberry Pi.

К сожалению, в документации по настройке этой среды для меня на Mac OS X (Monterey) есть небольшие ошибки.### Настройка Docker-контейнера для Mac OS X

Для использования док-сервера CROPS в Linux, Windows и Mac OS X необходимо выполнить некоторые специальные настройки. Перед настройкой контейнера для Yocto необходимо создать том docker для хранения результатов. Также для предоставления файлов в Mac OS X используется контейнер docker samba.

Создайте том docker

В окне терминала введите следующие команды:

docker volume create --name raspberry
docker run -it --rm -v raspberry:/workdir busybox chown -R 1000:1000 /workdir

# Создайте и запустите контейнер samba

OSX не позволит подключиться к локально запущенному общедоступному ресурсу samba. Поэтому сначала нужно создать псевдоним для 127.0.0.1 и указать его как 127.0.0.2.

sudo ifconfig lo0 127.0.0.2 alias up

Затем создайте контейнер samba, который позволяет просматривать файлы в томе docker:

docker create -t --expose 445 -p 127.0.0.2:445:445 --name samba -v raspberry:/workdir crops/samba

Поскольку для подключения к контейнеру samba вам всегда понадобится псевдоним, вы можете объединить запуск samba и псевдоним, например:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

Теперь вы можете открыть рабочую папку (workdir) в браузере файлов. В поиске нажмите «Command-K» и в поле адреса сервера введите «smb://127.0.0.2/workdir» и нажмите «Connect». Теперь вы должны увидеть содержимое тома docker в поиске.

Создайте и запустите контейнер Yocto

Чтобы создать и/или запустить контейнер с типом Yocto в окне терминала:

docker run --rm -it --name=crops-poky -v raspberry:/workdir crops/poky:ubuntu-20.04 --workdir=/workdir

Настройка среды сборки в контейнере

При запуске docker-контейнера в терминале появляется запрос, который выглядит так: «pokyuser@d4ddfe042587:/workdir».

Теперь вы можете настроить среду сборки.

Клонируйте poky-версию

В моем случае я использую Yocto версии 3.4 с именем «Honister», потому что в данный момент слои meta-raspberry не доступны для более новых poky версий. Сначала нужно клонировать репозиторий poky:

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

Если вы хотите обновить poky до последней версии:

cd poky-honister
git pull --all --prune

# Дополнительные мета слои для Raspberry Pi

Измените на «poky-honister» и клонируйте следующие репозитории: meta-raspberry, meta-openembedded и при необходимости meta-qt5

cd poky-honister
git clone -b honister git://git.yoctoproject.org/meta-raspberrypi
git clone -b honister git://git.openembedded.org/meta-openembedded
git clone -b honister https://github.com/meta-qt5/meta-qt5.git

Настройка конфигурации сборки

Выйдите из каталога poky-honister, чтобы попасть в каталог /workdir. Теперь создайте среду сборки с помощью скрипта oe-init-build-env.

cd ..
source poky-honister/oe-init-build-env rpi-build

Новый каталог "rpi-build" – вы можете назвать его по своему усмотрению – и создается каталог conf с файлами bblayers.conf, local.conf и templateconf.cfg.

Поскольку в контейнере не установлен текстовый редактор, необходимо либо отредактировать файлы конфигурации в смонтированном томе samba в Mac OS X, либо установить текстовый редактор в контейнер. Для этого необходимо открыть второе окно терминала – во время работы yocto контейнера – и запустить в контейнере оболочку bash с правами root:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit

После этого вы можете редактировать конфигурационные файлы в контейнере yocto как pokyuser.

Примечание

Редактор не сохраняется. Выйдя из контейнера и войдя снова, вам придется снова установить его.

Сначала добавьте meta-raspberry в файл bblayers.conf

nano conf/bblayers.conf

Добавьте «/workdir/poky-honister/meta-raspberrypi \», чтобы он выглядел как

BBLAYERS ?= " \
  /workdir/poky-honister/meta \
  /workdir/poky-honister/meta-poky \
  /workdir/poky-honister/meta-yocto-bsp \
  /workdir/poky-honister/meta-raspberrypi \
  "

и сохраните его.

Затем, отредактируйте local.conf

Отредактируйте файл local.conf:

nano conf/local.conf

Измените следующие строки:

  • MACHINE ??= "qemux86-64" -> MACHINE ??= "raspberrypi4-64"

В зависимости от того, какую Raspberry вы хотите использовать (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64 и т. д.)

Раскомментируйте следующие строки:

  • DL_DIR ?= "${TOPDIR}/downloads"
  • SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
  • TMPDIR = "${TOPDIR}/tmp"

Добавьте следующие строки в конце, чтобы получить sdimg на SD-карту:

  • IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
  • SDIMG_ROOTFS_TYPE = "ext4.xz"

Сохраните файл local.conf.

Bitbake первый образ

Теперь у вас есть минимальные настройки для создания первого образа:

bitbake -k core-image-minimal

В документации Yocto вы найдете краткое описание доступных описаний образов.Например:

  • core-image-minimal – небольшой образ, позволяющий загрузить устройство.
  • core-image-base – образ только для консоли, который полностью поддерживает оборудование целевого устройства.
  • core-image-full-cmdline: консольный образ с более полной функциональностью системы Linux.

Через некоторое время, которое в первый раз может составить несколько часов, процес bitbake будет завершен и вы найдете файл sdimg в следующем каталоге:

/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64

Дополнительные настройки

Дополнительные конфигурации оборудования Raspberry

Чтобы задать определенные настройки оборудования, вы можете обратиться к extra-apps.md и extra-build-config.md.Вы также можете найти эти файлы в каталоге meta-raspberrypi/docs.

Мета-слой также предоставляет конфигурацию образа «rpi-test-image» для использования с bitbake. Образ основан на «core-image-base», которая включает большинство пакетов в meta-raspberrypi и некоторые образцы медиа.

bitbake -k rpi-test-image

Дополнительные конфигурации программного обеспечения

В зависимости от используемой конфигурации сборки образа может потребоваться установка дополнительных пакетов программного обеспечения.

Это можно сделать, добавив некоторые настройки в файл local.conf.

Например, добавьте следующие строки, чтобы установить ssh-server, pi-user и systemd:

## packages
IMAGE_INSTALL:append = " openssh-sftp-server sudo python3 python3-pip rpi-gpio raspi-gpio"
IMAGE_FEATURES:append = " ssh-server-openssh"

## systemd settings
DISTRO_FEATURES:append = " systemd"
VIRTUAL-RUNTIME:init_manager = "systemd"
VIRTUAL-RUNTIME:initscripts = ""
IMX_DEFAULT_DISTRO_FEATURES:append = " systemd"

Или добавьте python:

IMAGE_INSTALL:append = " python3 python3-pip rpi-gpio raspi-gpio"

Примечание

Начальный пробел в " python3 python3-pip rpi-gpio raspi-gpio" важен, поскольку текст добавляется к существующей конфигурации и его необходимо отделить этим пробелом.

Лицензия на авторские права

Авторское право © 2022 Interelectronix e.K.
Данный исходный код проекта лицензирован под лицензией GPL-3.0.

Благодарности

Источники, используемые для создания этой инструкции: -https://github.com/crops/poky-container <-<

https://docs.yoctoproject.org/index.html

Спасибо всем.