This service is available only in Japanese-language.

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

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

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

rootfsイメージを生成するタスク実行時に、各パッケージを展開後にパッケージで必要とされるユーザーやグループを追加するものがあり、その際に .pwd.lock ファイルも生成されます。その際にファイルのinode番号が更新されるため、レシピ内のdo_installで生成されたinode番号と異なるためエラーとなっています。
do_install タスク実行時は、別の名前でファイルをインストールを行い、ROOTFS_POSTINSTALL_COMMAND に追加する処理で、mv コマンドを使用して "pwd-lock" を ".pwd.lock" に置き換えれば実現可能と考えます。
https://docs.yoctoproject.org/4.0.10/ref-manual/variables.html#term-ROOT...

コメントありがとうございます。

ROOTFS_POSTINSTALL_COMMANDを試してみましたが同じエラーになりました。
エラー発生後にファイルを検索すると.pwd.lock(ドット付き)が存在しましたのでmv自体は実行されたようです。

関連ファイルの内容は以下のとおりです。
おかしいところがありますでしょうか。

[apl_1.0.bb]
#ドットなしのpwd.lockをインストール
install -m 0600 ${S}/.pwd.lock ${D}/etc/pwd.lock

bbclassファイルを新規作成
[mv_pwdlock.bbclass]
mv_pwdlock() {
if [ -e ${IMAGE_ROOTFS}/etc/pwd.lock ]; then
   #ドットなしファイルをリネーム
mv ${IMAGE_ROOTFS}/etc/pwd.lock ${IMAGE_ROOTFS}/etc/.pwd.lock
fi
}
ROOTFS_POSTINSTALL_COMMAND += " mv_pwdlock; "

[conf/local.conf]
USER_CLASSES += "mv_pwdlock"

YoctoProjectのwikiに記載された以下の情報がまさに発生している現象となります。
https://wiki.yoctoproject.org/wiki/Pseudo_Abort
.pwd.lock ファイルは、apl_1.0.bb 以外のレシピで定義されたタスク内で一時的に生成されているため、
ファイルの整合性が損なわれたと判断されています。
PSEUDO_IGNORE_PATHS変数に /etc/.pwd.lock を追記することで、ファイルの状態監視対象から外すことが可能ですので
ご確認ください。
https://docs.yoctoproject.org/4.0.10/ref-manual/variables.html#term-PSEU...

コメントありがとうございます。

PSEUDO_IGNORE_PATHS設定して試してみました。
ビルドは通るようになったのですが、肝心のファイルがインストールされていないようでした(無視された?)。

設定内容は以下の通りです。
--------------------------------------------
[app_1.0.bb]
#ドットが先頭についたファイルをインストール(.pwd.lock)
install -m 0600 ${S}/.pwd.lock ${D}/etc/.pwd.lock

[conf/local.conf]
PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/rootfs/etc/.pwd.lock"
--------------------------------------------

また、以前のyocto(バージョン失念)ではこのような問題が起こらず、アプリのbbファイルに
 install -m 0600 ${S}/.pwd.lock ${D}/etc/.pwd.lock
と書くだけでインストールされていたのですが、新しいバージョンのyoctoで仕様が変更されたのでしょうか。

よろしくお願いいたします。

.pwd.lock は、/etc/passwd に変更を行う際に排他制御を行うため使用されるファイルのため、上記クラスをinherit したレシピから生成されるパッケージがイメージに含まれる場合、イメージレシピのdo_rootfsタスクに対するPOSTPRESS_COMMANDとして/etc/passwd を変更する際に削除される可能性があります。

ファイルをインストールするレシピを追加するのではなく、イメージレシピに対するbbappendの中で、do_rootfs終了後、do_image実行前に、IMAGE_ROOTFS 変数以下/etc/.pwd.lock を生成するタスクを追加することで、/etc/.passwd.lock が含まれるimageが生成可能と考えます。

以下の変更をしたところ期待する結果になりました。
-------------------------------------------------
[app_1.0.bb]
#.pwd.lockのインストールは削除
- install -m 0600 ${S}/.pwd.lock ${D}/etc/.pwd.lock

[conf/local.conf]
+ USER_CLASSES += "pwdlock"

[classes/pwdlock.bbclass]
+ pwdlock() {
+ touch "${IMAGE_ROOTFS}/etc/.pwd.lock"
+ }
+ IMAGE_PREPROCESS_COMMAND += " pwdlock; "
-------------------------------------------------

bbappendの書き方がよく分からず上手くいかなかったので、bbclassファイルを作成してIMAGE_PREPROCESS_COMMANDを実行するようにしました。

どうもありがとうございました。