Comment 0 for bug 1824236

Revision history for this message
Ioanna Alifieraki (joalif) wrote :

Description

supermin cannot configure network on Bionic onward.

This bug is a combination of supermin package and
/etc/dhcp/dhclient-enter-hooks.d/resolved script from systemd,
present on Bionic onward.
When supermin creates the appliance does chroot and executes its init script.
If networking is enabled init will call dhclient sript to configure the network.

On Bionic onward the make_resolv_conf function of dhclient_script is overwritten
in /etc/dhcp/dhclient-eneter-hooks.d/resolved which before exiting restarts
the systemd.resolved service.
However, this happening in chroot environment fails with
"System has not been booted with systemd as init system (PID 1). Can't operate."
and network is left unconfigured.

Test Case

$ sudo guestfish -a xenial-server-cloudimg-amd64-disk1.img --network -v << EOF
run
mount /dev/sda1 /
command 'apt update'
EOF

libguestfs: launch: program=guestfish
libguestfs: launch: version=1.36.13
libguestfs: launch: backend registered: unix
libguestfs: launch: backend registered: uml
libguestfs: launch: backend registered: libvirt
...
supermin: deleting initramfs files
supermin: chroot
Starting /init script ...
...
+ dhclient --version
+ dhclient eth0
System has not been booted with systemd as init system (PID 1). Can't operate.
...
commandrvf: apt update

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial/InRelease Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-updates/InRelease Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-backports/InRelease Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease Temporary failure resolving 'security.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.
...

Workaround

1) Assume that libguestfs is installed, if not :
$ sudo apt-get install libguestfs-tools

2) Move the base.tar.gz to a temp dir, extract and remove tarball
$ sudo mv /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/base.tar.gz ~/tempdir/
$ cd ~/tempdir
$ sudo tar -xzvf base.tar.gz
$ sudo rm base.tar.gz

3) Remove the etc/dhcp/dhclient-enter-hooks.d/resolved file
$ sudo rm etc/dhcp/dhclient-enter-hooks.d/resolved

4) Create tarball again
$ sudo tar -czvf base.tar.gz etc

5) Move it back to installation dir
$ sudo mv base.tar.gz /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/

6) Clean cache
$ sudo rm -rf /var/tmp/.guestfs*