我正在运行Yocto Pyro,并且试图创建一个配方,该配方创建到将在运行时安装的区域的符号链接。我们将辅助存储安装在fstab中的/ var / local中。我想将网络设置存储在那里,因为当我们对设备进行固件升级时,rootFS被清除了。
这是我正在研究的食谱。
DESCRIPTION = "Create links to the persistent storage area for the network files."
PRIORITY = "optional"
LICENSE = "CLOSED"
FILES_${PN} += "/etc /etc/systemd/network"
S = "${WORKDIR}"
do_install() {
ln -frs /var/local/network/hostname ${D}/hostname
ln -frs /var/local/network/eth0.network ${D}/etc/systemd/network/eth0.network
# ln -frs /var/local/network/sysctl.conf ${D}/etc/sysctl.conf
# ln -frs /var/local/network/iptables-config ${D}/etc/sysconfig/iptables-config
}
我遇到的错误是它无法创建符号链接。
| ln: failed to create symbolic link '/home/gen-ccm-root/workdir/tools/poky/build-dev/tmp/work/armv7ahf-neon-poky-linux-gnueabi/network-links/1.0-r0/image/etc/systemd/network/eth0.network': No such file or directory
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_install (log file is located at /home/gen-ccm-root/workdir/tools/poky/build-dev/tmp/work/armv7ahf-neon-poky-linux-gnueabi/network-links/1.0-r0/temp/log.do_install.118559)
ERROR: Task (/home/gen-ccm-root/workdir/tools/poky/meta-markem-imaje-private-bsp/recipes-core/network-links/network-links_1.0.bb:do_install) failed with exit code '1'
NOTE: Tasks Summary: Attempted 2805 tasks of which 2796 didn't need to be rerun and 1 failed.
Summary: 1 task failed:
/home/gen-ccm-root/workdir/tools/poky/meta-markem-imaje-private-bsp/recipes-core/network-links/network-links_1.0.bb:do_install
是否可以建立链接?还是我需要采取其他方法在启动时读取文件并以某种方式复制文件?我确实相信安全团队最终会希望将根文件系统设为只读,因此,在启动时最好使用链接来修改RootFS。
答案 0 :(得分:0)
您可能想通过bbappend扩展基本文件配方来做到这一点
base-files _%。bbappend
do_install_append() {
...
}
答案 1 :(得分:0)
我们要做的是在映像文件夹中的.inc文件中创建安装后功能。
ROOTFS_POSTPROCESS_COMMAND += " symlinkfunction "
symlinkfunction() {
ln -s /path/on/target "${IMAGE_ROOTFS}/path/in/rootfs"
}
在创建目标的任何图像文件中使用.inc文件,它将使用新的符号链接更新目标根文件系统。