Yocto Poky-Pyro的bbappend文件对init-ifupdown没有进行替换,导致无法替换/etc/network/interfaces文件。

3

我正在使用Ubuntu 16.04上的Yocto poky-pyro。我想要替换结果镜像根文件系统中的/etc/network/interfaces文件,因此我在我的meta-company目录中添加了一个bbappend配方,该目录还包含其他正确构建的软件包配方。

user@BuildMachine:~/bbb/meta-bbb/recipes-custom/init-ifupdown$ tree
.
├── init-ifupdown_1.0
│   └── interfaces
└── init-ifupdown_1.0.bbappend

1 directory, 2 files

bbappend文件长这样:
# Extend the base recipe search path to $HERE/init-ifupdown
FILESEXTRAPATHS_prepend := "${THISDIR}/init-ifupdown-1.0:"

而该目录中的interfaces文件如下:

user@BuildMachine:~/bbb/meta-bbb/recipes-custom/init-ifupdown$ cat init-ifupdown_1.0/interfaces 
# Configure Loopback
auto lo
iface lo inet loopback

# Configure WiFi Infrastructure
auto wlan0
iface wlan0 inet dhcp

 # Configure WiFi Hotspot
auto wlan1
iface wlan1 inet static  
    address 172.24.1.1
    netmask 255.255.255.0
    network 172.24.1.0
    broadcast 172.24.1.255

在我构建镜像后,查看init-ifupdown软件包的工作构建目录时,我发现错误的“interfaces”文件存在,并且与镜像中的内容匹配:

user@BuildMachine:~/bbb/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/init-ifupdown/1.0-r7$ ls interfaces 
interfaces
user@BuildMachine:~/bbb/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/init-ifupdown/1.0-r7$ cat interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

### wired, static
#auto eth0
#iface eth0 inet static
#   address 192.168.10.33
#   netmask 255.255.255.0
#   gateway 192.168.10.1

如何使我的bbappend文件生效并部署我的自定义接口文件?

对我来说是有效的。确保在bblayers.conf中包含您的层,并在重新构建之前进行清理,我使用bitbake -c clean <imagename>,然后再使用bitbake <imagename>。 - recycler
1个回答

8

interfaces文件是特定于计算机的,因此很可能已经有另一个machine overrideinterfaces文件。

将文件放在子目录init-ifupdown_1.0/${MACHINE}中。 这将确保您的interfaces文件仅由您的计算机选择,它也会优先考虑您的计算机。


仅供参考,我刚找到了文档解释这个问题的地方:https://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#best-practices-to-follow-when-creating-layers - JonasVautherin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接