Yocto Linuxベースの組み込みデバイスでは、私のrootfsはROであり、RWデータ用の追加パーティションがあります。これで、ブート時に別のパーティションに保存されている/ etcにオーバーレイを自動的にマウントしたいと思います。これは私のfstabです。
/dev/mmcblk0p6 /data_local ext4 defaults,sync,noexec,rw 0 2
[...]
overlay /etc overlay defaults,lowerdir=/etc,upperdir=/data_local/overlayfs/upper/etc,workdir=/data_local/overlayfs/workdir,X-mount.mkdir,x-systemd.requires=/data_local,x-systemd.before=local-fs.target,x-systemd.before=systemd-networkd 0 0
ただし、最初の起動時に upperdir ディレクトリと workdir ディレクトリがないため、この操作は失敗します。これらのディレクトリを自動的に生成するには、fstabまたはsystemd.mountをどのように取得しますか?
答え1
私は結局Yocto 4.0から利用可能なYoctoのoverridefs-etc.bbclass機能を使用するようになりました。マニュアルは次の場所にあります。https://docs.yoctoproject.org/ref-manual/classes.html#ref-classes-overlayfs-etc
bbclassオーバーレイがインストールされる前に実行時にフォルダが作成されるように、/ sbin / initのinitプロセスにパッチを適用します。望むより:https://git.yoctoproject.org/poky/plain/meta/files/overlayfs-etc-preinit.sh.in
画像にこれを追加するのはとても簡単です。
machine.confに追加します。
OVERLAYFS_ETC_MOUNT_POINT = "/data_local"
OVERLAYFS_ETC_DEVICE = "/dev/mmcblk0p6"
OVERLAYFS_ETC_FSTYPE = "ext4"
OVERLAYFS_ETC_MOUNT_OPTIONS = "defaults,sync"
画像に追加:
IMAGE_FEATURES:append = " overlayfs-etc"
もちろん、ブートメディアに利用可能な追加の読み取り/書き込みインストールパーティションがあることを確認する必要があります(SDカードのフラッシュイメージにあります)。私の場合はmmcblk0p6です。