Sysupgrade failed on x86 (was "19.07 -> 21.02 interface config migration")

I've just upgraded an x86 box from 19.07 to 21.02, keeping/migrating the previous configuration, and everything seems to be working ok so far. However, I'm not seeing the behaviour described here in the release notes:

There have been several changes to the network configuration syntax in
/etc/config/network:

  • in config interface, option ifname has been renamed to device (since
    it refers to a device section)
  • in config device of type bridge, ifname has been renamed to ports
  • for new installs, the generated configuration now creates separate
    sections for layer 2 (config device) and layer 3 (config interface)
    configuration

The old syntax is still supported to facilitate transition, and there is
no automated migration when upgrading.

However, the LuCI web interface detects old-style configuration and will
propose to migrate it to the new syntax. This is necessary to be able to
edit network configuration through LuCI.

I went into LuCI and opened the Network -> Interfaces page but there was no offer to migrate the config, and it's still using the old format. I'm now worried about making any changes to this config in LuCI in case it messes things up.

How do I trigger the behaviour highlighted in bold above?

grep ifname /etc/config/network

Output from grep ifname /etc/config/network:

option ifname 'lo'
option ifname 'eth3'
option ifname 'eth0'
option ifname 'eth0'
option ifname 'eth2'
1 Like
grep '^Version' /usr/lib/opkg/info/netifd.control

Version: 2021-01-09-753c351b-1

1 Like

you need to be running 21.02 POST rc1 ( netifd post '2021-05-20' )

I installed a package from here:

https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/

Is that not the first stable 21.02 release?

can you explain in more detail the exact OS you installed and exact stuff you installed into it?

[root@dca632 /usbstick 46°] curl -sSL https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/openwrt-21.02.0-x86-64.manifest | grep netifd
netifd - 2021-07-26-440eb064-1

suspect you installed a different image, or similar unknown custom things, as above, 21.02.0 netifd is 2021-07.

Sure. I installed this OS package over 19.07.8 via the web UI, with "keep settings" checked:

https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/openwrt-21.02.0-x86-64-generic-ext4-combined.img.gz

I then installed the following packages via opkg install <package name>:

block-mount
ca-bundle
ca-certificates
conntrack
coreutils-date
coreutils-dd
coreutils-timeout
diffutils
dnsmasq-full
ethtool
f2fs-tools
gdisk
gnuplot
htop
iftop
iperf3
ipset
iptables-mod-extra
iptables-mod-geoip
iptables-mod-hashlimit
iptgeoip
irqbalance
kmod-fs-ext4
kmod-fs-f2fs
kmod-ipt-ipset
kmod-nf-nathelper
kmod-usb-storage
kmod-usb2
kmod-usb3
lftp
libcap-ng
libnetfilter-conntrack3
libnettle7
logrotate
losetup
lsof
luci-app-commands
luci-app-ddns
luci-app-samba
luci-app-sqm
luci-app-upnp
luci-app-wireguard
luci-app-wol
luci-ssl-openssl
miniupnpd-igdv1
netcat
nping
openssh-sftp-client
procps-ng-watch
qrencode
snmp-mibs
snmpd
speedtest-netperf
tcpdump
wget
1 Like

probably a stale extroot then?

I don't use extroot.

Filesystem                Size      Used Available Use% Mounted on
/dev/root               252.0M     45.5M    201.3M  18% /
tmpfs                     1.9G      1.4M      1.9G   0% /tmp
/dev/sda1                15.7M      3.8M     11.6M  25% /boot
/dev/sda1                15.7M      3.8M     11.6M  25% /boot
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sdb1               112.3G      1.6G    104.9G   2% /mnt/sdb1

I will stop guessing then... but only you know why that is reporting an old version (what you have done to your system)

This is interesting. When I run opkg update it's updating from the 19.07 repos...

Downloading http://downloads.openwrt.org/releases/19.07.8/targets/x86/64/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_core
Downloading http://downloads.openwrt.org/releases/19.07.8/targets/x86/64/packages/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/releases/19.07.8/packages/x86_64/base/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_base
Downloading http://downloads.openwrt.org/releases/19.07.8/packages/x86_64/base/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/releases/19.07.8/packages/x86_64/freifunk/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_freifunk
Downloading http://downloads.openwrt.org/releases/19.07.8/packages/x86_64/freifunk/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/releases/19.07.8/packages/x86_64/luci/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_luci
...

Any ideas why it might be doing that?

yeah, I do

ubus call system board

Well, this gets even more interesting. It looks like it in fact did not upgrade at all.

1 Like
opkg remove  --force-depends gzip

(was pulled in by geoip)

1 Like

If your problem is solved, please consider marking this topic as [Solved]. See How to mark a topic as [Solved] for a short how-to.

Hmm. It just hangs if I try to remove gzip:

Removing package gzip from root...

For what it's worth, I see a zcat process running when this hung opkg command is running

13982 13973 root S 1072 0% 0% /bin/zcat

With opkg debug output on I see it's hanging while running this script:

pkg_run_script: Running script //usr/lib/opkg/info/gzip.postrm

Which looks like this:

#!/bin/sh
for app in gunzip gzip zcat; do
  ln -sf busybox ${IPKG_INSTROOT}/bin/$app
  ${IPKG_INSTROOT}/bin/$app 2>&1 | grep 'applet not found' > /dev/null 2>&1 && rm ${IPKG_INSTROOT}/bin/$app
done
exit 0
1 Like

It looks like it's changed the symlinks in /bin though, so it might have done enough for the sysupgrade to work?

lrwxrwxrwx    1 root     root             7 Sep 15 10:56 /bin/gzip -> busybox
lrwxrwxrwx    1 root     root             7 Sep 15 10:56 /bin/zcat -> busybox
lrwxrwxrwx    1 root     root             7 Sep 15 10:56 /bin/gunzip -> busybox
1 Like

Boom, that worked. I'm now upgraded to 21.02, and when I navigated to the Network -> Interfaces page in LuCI it automatically updated the config to the new syntax.

Thanks very much for your help. I think I would have really struggled to find that sysupgrade/gzip issue!

1 Like