Файл bbappend Yocto Poky-Pyro для init-ifupdown не заменяет / etc / network / interfaces

Я использую Yocto poky-pyro в Ubuntu 16.04. Я хочу заменить файл / etc / network / interfaces в корневой файловой системе результирующего изображения, поэтому я добавил рецепт 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:"

И файл интерфейсов в этом каталоге выглядит так:

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 я вижу, что там находится неправильный файл «интерфейсов», и он соответствует тому, что находится в образе:

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 повлиять на мой файл пользовательских интерфейсов и развернуть его?


person PhilBot    schedule 03.08.2017    source источник
comment
работал на меня. убедитесь, что вы включили свой слой в bblayers.conf и очистите его перед восстановлением идентификатора: я использую bitbake -c clean ‹imagename›, а затем bitbake ‹imagename›   -  person recycler    schedule 04.11.2018


Ответы (1)


Файл interfaces зависит от машины, поэтому вполне вероятно, что за machine override уже есть другой файл interfaces.

Поместите файл в подкаталог init-ifupdown_1.0/${MACHINE}. Это гарантирует, что ваш interfaces файл будет получен только вашей машиной, а также даст ему приоритет для вашей машины.

person Anders    schedule 04.08.2017
comment
Для записи я только что нашел, где это объясняется в документации: yoctoproject.org/docs/current/dev-manual/ - person JonasVautherin; 22.02.2021