This service is available only in Japanese-language.

構築

meta-oeレイヤの組み込みについて教えてください

いつもお世話になっております。
当方のターゲット環境は、Renesas RZ/G2L評価ボード「RTK9744L27S01000BE」を使用しています。
ソフトウェアはRZ/G Verified Linux Package Version 3.0.3(DISTRO_VERSION = "3.1.21")です。

以下にて、レイヤ「meta-oe」を組み込み際にエラーが発生しております。
つきましては対処方法をご教授いただけると幸いです。

「meta-oe」レイヤーは「meta-openembedded」以下に配置されているのを確認した為、
buildディレクトリにて以下を実行しました。

======================================
bitbake-layers add-layer ../meta-openembedded/meta-oe
======================================

結果、以下の様なエラーが返ってきておりレイヤーが重複していると読めるのですが、
どこの「bblayers.conf」や「layer.conf」を確認するべきでしょうか?
対処方法をご教授いただけると幸いです。

======================================
ERROR: Found duplicated BBFILE_COLLECTIONS 'openembedded-layer', check bblayers.conf or layer.conf to fix it.
ERROR: Parse failure with the specified layer added, aborting.
======================================

以上、お手数をお掛けしますが、宜しくお願いします。

rootを封印してsudoユーザを新規登録すると作成したパーティションの所有者がsudoユーザのものになる

よろしくお願いします。
■yocto project : v4.0 (Kirkstone)
■ターゲット : Raspberry Pi CM4

まず、rootユーザを以下の通り封印して新しくsudoユーザを登録するようlocal.confに記載しました。
--------
INHERIT += " extrausers"

# root(管理者アカウント : 封印)
EXTRA_USERS_PARAMS += " \
usermod -g root root; \
usermod -s /bin/false root; \
usermod -m -d /root root; \
usermod -p '**************************' root; \
"

# originalgrp(新規ユーザグループ)
EXTRA_USERS_PARAMS += " \
groupadd -f originalgrp; \
"

# alternative(管理者アカウント代替)
EXTRA_USERS_PARAMS += " \
useradd -g sudo alternative; \
usermod -aG originalgrp alternative; \
usermod -s /bin/bash alternative; \
usermod -m -d /home/alternative alternative; \
usermod -p '**************************' alternative; \
"
--------

また、いくつかのパーティションを作成するようオリジナルのwksファイルも使用するようにしました。
各パーティション用のpythonファイルはrootfs.pyを参考にして用意しました。
--------
# Use original partition wks file
WKS_FILE = "sdimage-raspberrypi-original.wks"
--------

結論としては各アカウントは意図通り登録され、各パーティションも作成されました。ここで問題なのは、その各パーティションの所有者が上記で作成したsudoユーザになっている点です。
→各パーティションの所有者はsudoユーザを作成するまで(rootを封印していない状態)はrootでした。

これはyoctoでパーティションを作成する段階(おそらくfakeroot時?)でそのようになっているのだと思われますが、これを回避してroot所有とすることは可能でしょうか?

CONNECTIVITY_CHECK_URISを無効にしたい

bitbake core-image-minimalにて以下のエラーが出ます。

ERROR: OE-core's config sanity checker detected a potential misconfiguration.
Either fix the cause of this error or at your own risk disable the checker (see sanity.conf).
Following is the list of potential problems / advisories:

Fetcher failure for URL: 'https://yoctoproject.org/connectivity.html'. URL https://yoctoproject.org/connectivity.html doesn't work.
Please ensure your host's network is configured correctly.
Please ensure CONNECTIVITY_CHECK_URIS is correct and specified URIs are available.
If your ISP or network is blocking the above URL,
try with another domain name, for example by setting:
CONNECTIVITY_CHECK_URIS = "https://www.example.com/" You could also set BB_NO_NETWORK = "1" to disable network
access if all required sources are on local disk.

社内のセキュリティで監視系のproxyを経由して影響と思われますが、connectivity checkのみを無効にする方法はありますか?

独自レシピ追加時のpackageに関するエラー

LuaDBI<https://code.google.com/archive/p/luadbi/>を追加するレシピを作成していますが以下のエラーが生じています。

ERROR: luadbi-0.5-r0 do_package: QA Issue: luadbi: Files/directories were installed but not shipped in any package:
/usr/share
/usr/lib/lua/5.1
/usr/share/lua
/usr/share/lua/5.1
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
luadbi: 4 installed and not shipped files. [installed-vs-shipped]
ERROR: luadbi-0.5-r0 do_package: Fatal QA errors found, failing task.
ERROR: luadbi-0.5-r0 do_package: Function failed: do_package

bbファイルで以下の記述をしていますが、インストール先ディレクトリに関する記述が足らないのではと想像していますのが、よくわかりません。

do_install() {
install -D -p dbdpostgresql.so ${D}/usr/lib/lua/5.1
install -D -p DBI.lua ${D}/usr/share/lua/5.1
}

解決方法をアドバイスいただけますと助かります。

カーネルコンフィグの編集について

お世話になっております。
以下の手順でYoctoでビルド後に別途カーネルコンフィグを編集してビルドを行い,起動しようとしましたが上手くいきません。
ご教示いただけますと幸いです。

①$ bitbake core-image-minimalでフェッチや生成されたファイル,ディレクトリをコピー
カーネルソース:$ cp tmp/work-shared/imx8dx*/kernel-source ~/
.configファイル:$ cp tmp/work-shared/imx8dx*/kernel-build-artifacts/.config ~/kernel-source

②退避したディレクトリでカーネルコンフィグを編集しビルド
(シェル変数などを設定後)
$ make menuconfig
$ make -j32

③生成されたカーネルイメージをブート用SDカードの第一パーティションに上書き
$ rm /media/user/sd/Image (/media/user/sdにマウントしたSDカードの第一パーティションのカーネルイメージの削除)
$ cp arch/arm64/boot/Image /media/user/sd
$ sync
$ umount /media/user/sd

④SDを差し込み,ブートの設定を行ったうえで起動。

起動時のログは大量なのですべては記載できませんが,出力が無くなった周辺のログを記載します。
[ 3.046763] imx8qxp-lpcg-clk: probe of 5cae0000.clock-controller failed with
error -110
[ 3.077821] ALSA device list:
[ 3.080495] No soundcards found.
[ 3.083934] Warning: unable to open an initial console.
[ 3.089176] Waiting for root device /dev/mmcblk1p2...
[ 33.871636] vref_1v8: disabling
以下応答なし

i.MX 8DXについて

恐らくこちらで質問する内容でないため,質問を取りやめます。

ドットファイルのインストール

bbファイルでドットファイルをインストールしようとして以下の行を追加しました。
install -m 0600 ${S}/.pwd.lock ${D}/etc/.pwd.lock

ビルドすると以下のようのpath mismatchといったエラーが出てしまいます。

ERROR: Task (/home/keisuke/lts22/wrtools/windriver/layers/wrlinux/wrlinux-distro/recipes-base/images/wrlinux-image-small.bb:do_image_tar) failed with exit code '134'
Pseudo log:
path mismatch [1 link]: ino 109647635 db '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' req '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/group.15625'.
inode mismatch: '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' ino 109647635 in db, 109646385 in request.
Setup complete, sending SIGUSR1 to pid 15904.

ERROR: Task (/home/keisuke/lts22/wrtools/windriver/layers/wrlinux/wrlinux-distro/recipes-base/images/wrlinux-image-small.bb:do_image_ext4) failed with exit code '134'
Pseudo log:
path mismatch [1 link]: ino 109647635 db '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' req '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/group.15625'.
inode mismatch: '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' ino 109647635 in db, 109646385 in request.
path mismatch [1 link]: ino 109647635 db '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' req '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/group.15625'.
inode mismatch: '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' ino 109647635 in db, 109646385 in request.
Setup complete, sending SIGUSR1 to pid 15904.

ERROR: Task (/home/keisuke/lts22/wrtools/windriver/layers/wrlinux/wrlinux-distro/recipes-base/images/wrlinux-image-small.bb:do_image_wic) failed with exit code '134'
Pseudo log:
path mismatch [1 link]: ino 109647635 db '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' req '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/group.15625'.
inode mismatch: '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' ino 109647635 in db, 109646385 in request.
path mismatch [1 link]: ino 109647635 db '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' req '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/group.15625'.
inode mismatch: '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' ino 109647635 in db, 109646385 in request.
path mismatch [1 link]: ino 109647635 db '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' req '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/group.15625'.
inode mismatch: '/home/keisuke/lts22/wrtools/build/qemux86-64/tmp-glibc/work/qemux86_64-wrs-linux/wrlinux-image-small/1.0-r1/rootfs/etc/.pwd.lock' ino 109647635 in db, 109646385 in request.
Setup complete, sending SIGUSR1 to pid 15904.

インストール先を以下のように変更すると問題なくビルドが完了し、インストールされました。
${D}/etc/.pwd.lock

${D}/etc/pwd.lock

ドットファイルをインストールする場合は特別な記述や設定が必要でしょうか。

レシピの記述方法に関する質問

二つほど質問があります

1)イメージ毎に内容の異なるファイルを選択するレシピの作成方法
eMMC起動用イメージとUSB起動用イメージで起動時にマウントするパーテションを変更したいのですが方法がよくわかりません。
eMMC起動用のfstabとUSB用のfstabを作成しbase-files_%.bbappendで分岐条件を記載すれば良いのでしょうか?(記載できるのでしょうか)
それもイメージレシピ側に分岐となる条件を記載すれば良いのでしょうか?
あるいはその両方が必要なのでしょうか?

現状はイメージ作成後にext4ファイルをマウントしてfstabを書き換えしております。

2)rootfsファイル(.ext4,.tar.bz2等)にデータを付加する方法
ファイルの整合性チェックのため、作成したrootfsファイルの末尾にmd5のバイナリデータを埋め込みたいのですが方法が判りません。
カーネルおよびデバイスツリーはdo_deploy_append()に付加処理を記述することで付加出来ましたが、イメージレシピにはdo_deployがなく、代わりにdo_image_ext4_appendおよびdo_image_tar_appendを作成しましたが、どうやら元のタスクが自動生成のようでrun.do_image_xxを確認しても処理が追加されていません。
どこか他に追加すべきタスクがあるのか?_appendの処理を追加する方法があるのか?教えていただければと思います。

R-Carをビルドしたい。

VirtulaBox 7.0.6上に、Ubuntu 22.04とYocto(krogothブランチ)を設定し、ルネサスのR-Carレイヤーをダウンロードして
$bitbake core-image-minimal したところ、ログファイルlog.do_compile.3465に以下のエラーメッセージが出力されました。
c-stack.ct等のソースコードには問題ないようです。海外のサイトも見てみましたが具体的にどうすれば良いかわかりません。
対策をご教示頂きたく、投稿しました。
==================================
EBUG: Executing shell function do_compile
NOTE: make -j 2 infodir=/home/ncos/poky/build/tmp/sysroots/x86_64-linux/usr/share/info
make all-recursive
make[1]: Entering directory '/home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/build'
Making all in .
make[2]: Entering directory '/home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/build'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/build'
Making all in examples
make[2]: Entering directory '/home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/build/examples'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/build/examples'
Making all in lib
make[2]: Entering directory '/home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/build/lib'
make all-am
make[3]: Entering directory '/home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/build/lib'
gcc -I. -I../../m4-1.4.17/lib -isystem/home/ncos/poky/build/tmp/sysroots/x86_64-linux/usr/include -isystem/home/ncos/poky/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -c -o c-stack.o ../../m4-1.4.17/lib/c-stack.c
gcc -I. -I../../m4-1.4.17/lib -isystem/home/ncos/poky/build/tmp/sysroots/x86_64-linux/usr/include -isystem/home/ncos/poky/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -c -o closeout.o ../../m4-1.4.17/lib/closeout.c
In file included from /usr/include/signal.h:328,
from ./signal.h:52,
from ../../m4-1.4.17/lib/c-stack.c:49:
../../m4-1.4.17/lib/c-stack.c:55:26: error: missing binary operator before token "("
55 | #elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
| ^~~~~~~~
make[3]: *** [Makefile:1842: c-stack.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/build/lib'
make[2]: *** [Makefile:1602: all] Error 2
make[2]: Leaving directory '/home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/build/lib'
make[1]: *** [Makefile:1506: all-recursive] Error 1
make[1]: Leaving directory '/home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/build'
make: *** [Makefile:1461: all] Error 2
WARNING: exit code 1 from a shell command.
ERROR: oe_runmake failed
ERROR: Function failed: do_compile (log file is located at /home/ncos/poky/build/tmp/work/x86_64-linux/m4-native/1.4.17-r0/temp/log.do_compile.3465)

pythonの標準ライブラリgetpassを追加したい

pythonでSFTPを使用したいため、
paramikoライブラリをレシピで追加したのですが、
getpassが無いというエラーが出ました。

getpassはPythonの標準ライブラリということで、
どのようにして追加したらよろしいのでしょうか。

Linuxの構築はYocto2.2 core-image-minimalイメージをベースに行っております。

ページ