要更新的 Yocto 食谱 /etc/fstab

Yocto recipe to update /etc/fstab

我在使用 Yocto 构建 Linux 发行版时遇到更新 /etc/fstab 的问题。我是 Yocto 的新手,所以也许我不在状态。

我最近的尝试是添加一个名为 base-files_%.bbappend 的食谱。

mount_smackfs () {
    cat >> ${IMAGE_ROOTFS}/etc/fstab <<EOF

# Generated from smack-userspace
smackfs /smack smackfs smackfsdefault=* 0 0 

EOF
} 

ROOTFS_POSTPROCESS_COMMAND += "mount_smackfs; "

但是,分配上的输出 /etc/fstab 没有改变。所以问题是:

  1. 有更好的方法吗?
  2. 如何判断我的 .bbappend 文件是否已实际执行?

ROOTFS_POSTPROCESS_COMMAND 在图像配方中处理,不在包配方中。你有2种可能。

  • base-files_%.bbappend 中更新您的 fstab:

    do_install_append () {
        cat >> ${D}${sysconfdir}/fstab <<EOF
    
    # Generated from smack-userspace
    smackfs /smack smackfs smackfsdefault=* 0 0 
    
    EOF
    }
    
  • 更新图像配方中的 fstab:在这种情况下,您只需追加 你上面写的(在你的 post 中)在图片的食谱中。

使用

创建一个新图层

yocto-layer create mylayer

在其中,创建一个名为 recipes-core 的文件夹,并在此文件夹内 创建另一个名为 base-files 的文件夹。

在此文件夹中创建一个名为 base-files_%.bbappend 的文件,内容如下:

FILESEXTRAPATHS_append := "${THISDIR}/${PN}:"

创建另一个名为 base-files 的文件夹,您应该在其中放置一个名为 fstab 的文件,其中包含您的配置。

确保在 bblayers.conf 中启用您的新层,它会正常工作,无需创建任何附加配方或东西。 我遇到了这个问题,今天用这个方法解决了。

给定以下目录结构:

.
└── recipes-core/
    └── base-files/
        ├── base-files/
        │   └── fstab
        └── base-files_%.bbappend

以及相关食谱 base_files_%.bbappend 的以下内容

DESCRIPTION = "Allows to customize the fstab"
PR = "r0"

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

SRC_URI += " \
   file://fstab \
"

do_install_append(){
   install -m 0644 ${WORKDIR}/fstab ${D}${sysconfdir}/
}

您可以在该文件中指定所需的 fstab,并将其包含在您自己的自定义层中。编译完成后,您将在目标系统上拥有自定义 fstab。