オープンソースのYoctoプロジェクトガイド
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.mdとextra-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 **ライセンスの下でライセンスされています。
謝辞
この手順を作成するために使用されるソース:
に
感謝します。