組み込みソフトウェア - Yoctoはラズベリーパイを構築します 4 コンピュータのスクリーンショット

YoctoビルドRaspberry Pi 4

ドッカー環境内で

オープンソースのYoctoプロジェクトガイド

セットアップのヒント カスタムLinux on Raspberry Pi with Docker

Dockerセットアップのヒントを備えたRaspberry Pi上のカスタムLinuxのオープンソースYoctoプロジェクトガイド

Yocto Projectに参加して、あらゆるハードウェア上のカスタムLinuxシステムを手に入れましょう。開発者や 組み込みシステム 愛好家に最適です。今すぐ組み立てを始めましょう!

Yocto Projectは、あらゆるハードウェアアーキテクチャに対応するカスタムLinuxシステムを作成するためのオープンソースの取り組みです。クロスプラットフォーム開発にCROPSを使用する方法、Dockerコンテナを設定する方法、組み込みデバイスやIoTデバイス向けにカスタマイズされたLinuxイメージを構築する方法を学びます。このガイドでは、macOSでのセットアップ、ビルド環境の構成、Raspberry Piの最適化について説明します。初心者でも専門家でも、Linuxプロジェクトのニーズに合ったベストプラクティス、ツール、コミュニティサポートを見つけることができます。

ドッカーコンテナで実行中のYocto

Yoctoドキュメント には、ネイティブのlinux PCを設定する代わりにCROss PlatformS (CROPS)を設定するための章(2.2.2)があります。この代替案では、ドッカーコンテナを使用して、Raspberry Piなどのカスタマイズされたシステムイメージを構築します。残念ながら、Mac OS X ( Monterey )でこの 環境を設定するための ドキュメントには、いくつかの小さな間違いがあります。### Mac OS X用ドッカーコンテナのセットアップ

Linux,Windows,Mac OS XでCROPS dockerを使用するには、いくつかの特別な設定が必要です。Yoctoのコンテナを設定する前に、結果を保存するためのドッカーボリュームを作成する必要があります。また、Mac OS Xでファイルを提供するためにドッカーサンバコンテナが使用され

ます。####ターミナルウィンドウでドッカーボリュームを作成 するには、次のコマンドを入力します。

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

####サンバコンテナの作成と実行

OSXでは、ローカルで実行されているSamba共有に接続することはできません。したがって、最初に127.0.0.2の127.0.0.1のエイリアスを作成する必要があります。

sudo ifconfig lo0 127.0.0.2 alias up

次に、ドッカーボリュームのファイルを表示できるSambaコンテナを作成します。

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

Since you will always need to have the alias to connect to the samba container, you could combine the start of samba and alias like so:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

これで、ファイルブラウザでワークディレクトリを開くことができます。ファインダーで「Command-K」、サーバーアドレスボックスで「smb://127.0.0.2/workdir」と入力し、「Connect」をクリックします。これで、ドッカーボリュームの内容がファインダーに表示されます。### Yoctoコンテナを作成して起動する

ターミナルウィンドウでYoctoコンテナタイプを作成および/または開始するには:

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

コンテナ内のビルド環境のセットアップ

ドッカーコンテナを起動すると、次のようなターミナルプロンプトが表示されます。"pokyuser@d4ddfe042587:/workdir"

これで、ビルド環境を設定できます。### pokyのクローン

バージョン私の場合、「Honister」という名前のYoctoバージョン3.4を使用しています。なぜなら、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

###ビルド設定のセットアップ

/workdirにいるように、poky-honisterディレクトリを残します。これで、スクリプトoe-init-build-envを使用してビルド環境をソースします。

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

新しいディレクトリ"rpi-build"を作成し、必要に応じて名前を付けることができます。また、bblayers.conf、local.conf、templateateconf.cfgファイルを含むConfディレクトリが作成されます。コンテナにテキストエディタがインストールされていないため、Mac OS Xのマウントされたサンバボリュームで設定ファイルを編集するか、コンテナにテキストエディタをインストールする必要があります。これを行うには、2番目のターミナルウィンドウを開き(Yoctoコンテナの実行中)、ルート権限でコンテナ内のbashシェルを開始する必要があります。

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

その後、pokyuserとしてyoctoコンテナ内の設定ファイルを編集できます。

注記事項

エディタ

が永久にインストールされていません。コンテナを離れて再び入った後、再度インストールする必要があります

####まず、bblayers.confファイルにmeta-raspberryを追加します。

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の2番目の編集

ファイルlocal.confの編集:

nano conf/local.conf

次の行を変更します。-マシン??= "qemux86-64" -> マシン??= "raspberrypi4-64"

どのRaspberryを使用するかによって異なります( raspberrypi0、raspberrypi0w、raspberrypi3、raspberrypi3-64、raspberrypi4、raspberrypi4-64など)

次の行のコメントを解除します。- DL_DIR ?= "${TOPDIR}/downloads"

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

最後に次の行を追加して、SDカードにフラッシュするsdimgを取得します。- 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システム機能がインストールされたコンソール専用画像。After a while - which could be serveral hours for the first time - the bitbake finishes and you find the sdimg file in the following directory:
/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64

追加の構成

##追加のラズベリーハードウェア構成

特定のハードウェア設定を設定するには、extra-apps.mdextra-build-config.mdこのファイルは、meta-raspberrypi/docsディレクトリにもあります。メタレイヤーはまた、bitbakeで使用する画像構成「rpi-test-image」も提供します。画像は、meta-raspberrypiのパッケージのほとんどと一部のメディアサンプルを含む「core-image-base」に基づいています。

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」の最初のスペースは重要です。テキストは既存の構成に追加されているため、このスペースで区切る必要があります。

著作権ライセンス

** Copyright © 2022 Interelectronix e.K.** このプロジェクトのソースコードは、** GPL-3.0 **ライセンスの下でライセンスされています。

謝辞

この手順を作成するために使用されるソース:

感謝します。