@@ 1,10 1,10 @@
From: phoebe-lab local fix
-Subject: [PATCH] builds.sr.ht-images ubuntu/genimg: fix nbd settle race + host chown
+Subject: [PATCH] builds.sr.ht-images ubuntu/genimg: fix nbd settle race + host chown + networkd match
-Two independent fixes for the upstream `images/ubuntu/genimg` script as shipped
-in the `builds.sr.ht-images` Alpine package (last verified against 0.103.12-r0).
-Both bugs make image generation fail on any host that doesn't happen to satisfy
-their hidden assumptions.
+Three independent fixes for the upstream `images/ubuntu/genimg` script as
+shipped in the `builds.sr.ht-images` Alpine package (last verified against
+0.103.12-r0). All three bugs make image generation or first-boot networking
+fail on any host that doesn't happen to satisfy their hidden assumptions.
1) After `qemu-nbd --connect`, the kernel hasn't picked up the device size yet,
so the immediate `dd if=mbr.bin of=/dev/nbd0` fails with "No space left on
@@ 17,6 17,16 @@ their hidden assumptions.
work. Routing the chown through `run_root` (the existing chroot helper used
everywhere else in the file) puts it where the user actually exists.
+3) `/etc/systemd/network/25-ens3.network` matches only `Name=ens3`. The kernel
+ actually picks the predictable name from PCI topology, and on QEMU machine
+ types newer than upstream's tested combo (e.g. modern noble + virtio on
+ i440fx slot 3) the interface comes up as `enp0s3` or similar — so the file
+ matches nothing, no DHCP runs, the guest has no IP, and the builds-worker
+ spins for 2 min `Waiting for guest to settle` before giving up. Widen the
+ match to any ethernet name (`Name=en*`); the image only ever has one NIC,
+ so there's no risk of binding the wrong one. Rename the file to drop the
+ stale interface-name hint.
+
Apply when refreshing the apk recipe tree on the image-builder host:
cd /var/lib/images
@@ 32,6 42,18 @@ Apply when refreshing the apk recipe tree on the image-builder host:
trap cleanup EXIT
if [ "$arch" = "amd64" ]
+@@ -85,9 +86,9 @@
+ EOF
+ fi
+
+-cat >/mnt/etc/systemd/network/25-ens3.network <<EOF
++cat >/mnt/etc/systemd/network/25-ethernet.network <<EOF
+ [Match]
+-Name=ens3
++Name=en*
+
+ [Network]
+ DHCP=yes
@@ -163,7 +164,7 @@
name = builds.sr.ht
email = builds@sr.ht