首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义bitbake bbapend未正确追加修补程序fstab文件

自定义bitbake bbapend未正确追加修补程序fstab文件
EN

Stack Overflow用户
提问于 2017-04-24 23:18:02
回答 1查看 859关注 0票数 0

我在yocto构建中使用github.com/mendersoftware/meta-修补程序。我希望在自己的层中使用带有bbappend文件的sed编辑/etc/fstab。具体来说,元修补程序目前正在提供自己的fstab文件并使用base-files_3.%.bbappend编辑它,我只想从生成的/etc/fstab中删除auto关键字。

问题是,当我在我的层中为基本文件3.%. bbappend提供自己的bbappend(我的层比元修补程序具有更高的优先级)时,似乎根本没有创建元修补程序fstab,而来自开放嵌入的存储部分则是相反的。

这是我的meta-layer/recipes-core/base-files/base-files_3.%.bbappend:

代码语言:javascript
复制
do_install_append(){
    sed -i -e 's$.*@MENDER_BOOT_PART@.*$@MENDER_BOOT_PART@   /uboot           @MENDER_BOOT_PART_FSTYPE@       defaults,sync    0  0$' ${D}${sysconfdir}/fstab
    sed -i -e 's$.*@MENDER_DATA_PART@.*$@MENDER_DATA_PART@   /data     @MENDER_DATA_PART_FSTYPE@       defaults         0  0$' ${D}${sysconfdir}/fstab
}

如果我运行meta-mender/meta-mender-core/recipes-core/base-files/base-files_3:,然后查找do_install函数,您可以清楚地看到,我的sed命令被正确地附加到了do_install

代码语言:javascript
复制
do_install() {
for d in /boot /dev /bin /sbin /lib            /etc /etc/default            /etc/skel /lib /mnt /proc /home/root /run            /usr /usr/bin /usr/share/doc/base-files-3.0.14 /usr/games /usr/include            /usr/lib /usr/sbin /usr/share            /usr/share/common-licenses /usr/share/dict /usr/share/info            /usr/share/man /usr/share/misc /var            /var/backups /var/lib            /sys /var/lib/misc /var/spool            /var/volatile            /var/volatile/log            /home /usr/src /var/local            /media; do
    install -m 0755 -d /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image$d
done
for d in /tmp /var/volatile/tmp; do
    install -m 1777 -d /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image$d
done
for d in ; do
    install -m 2775 -d /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image$d
done
for d in log tmp; do
    ln -sf volatile/$d /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/var/$d
done

ln -snf ../run /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/var/run
ln -snf ../run/lock /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/var/lock

do_install_basefilesissue

rotation=`cat /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/rotation`
if [ "$rotation" != "0" ]; then
    install -m 0644 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/rotation /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/rotation
fi

install -m 0644 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/fstab /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/fstab
install -m 0644 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/filesystems /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/filesystems
install -m 0644 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/usbd /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/default/usbd
install -m 0644 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/profile /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/profile
sed -i 's#ROOTHOME#/home/root#' /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/profile
install -m 0644 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/shells /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/shells
install -m 0755 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/share/dot.profile /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/skel/.profile
install -m 0755 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/share/dot.bashrc /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/skel/.bashrc
install -m 0644 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/nsswitch.conf /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/nsswitch.conf
install -m 0644 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/host.conf /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/host.conf
install -m 0644 /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/motd /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/motd

ln -sf /proc/mounts /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/mtab
install -d /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/uboot
install -d /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/data
sed -i -e 's$.*@MENDER_BOOT_PART@.*$@MENDER_BOOT_PART@   /uboot               @MENDER_BOOT_PART_FSTYPE@       defaults,sync    0  0$' /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/fstab
sed -i -e 's$.*@MENDER_DATA_PART@.*$@MENDER_DATA_PART@   /data                @MENDER_DATA_PART_FSTYPE@       defaults         0  0$' /home/user/Desktop/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/base-files/3.0.14-r89/image/etc/fstab

}

然而,我的/etc/fstab看起来是这样的:

代码语言:javascript
复制
# stock fstab - you probably want to override this with a machine specific one

/dev/root            /                    auto       defaults              1  1
proc                 /proc                proc       defaults              0  0
devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
tmpfs                /run                 tmpfs      
mode=0755,nodev,nosuid,strictatime 0  0
tmpfs                /var/volatile        tmpfs      defaults              0  0

# uncomment this if your device has a SD/MMC/Transflash slot
#/dev/mmcblk0p1       /media/card          auto       defaults,sync,noauto  0  0

正如您所看到的,它完全跳过了menders的/etc/fstab文件,只编写了一个股票文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-25 06:48:05

那么,您的sed表达式中的.*@MENDER_BOOT_PART@.*计算结果是什么?

据我所见,您没有任何与.*@MENDER_BOOT_PART@.*.*@MENDER_DATA_PART@.*匹配的东西。

如果我的理解是正确的,你可以用类似于

代码语言:javascript
复制
 echo "data" >> ${D}${sysconfdir}/fstab
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43599128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档