void-linux / void-mklive

The Void Linux live image maker
https://voidlinux.org
Other
324 stars 189 forks source link

dracut 056 breaks gui image building due to systemd module dependency #296

Closed classabbyamp closed 1 year ago

classabbyamp commented 1 year ago

this doesn't happen in the console images because no network manager. It works fine on dracut 053.

log highlights:

dracut: dracut module 'dbus-daemon' depends on 'systemd', which can't be installed
dracut: dracut module 'dbus' depends on 'dbus-daemon', which can't be installed
dracut: dracut module 'network-manager' depends on 'dbus', which can't be installed
dracut: dracut module 'network' depends on 'network-manager', which can't be installed
dracut: dracut module 'autoinstaller' depends on 'network', which can't be installed
fuller log ``` [5/9] Generating initramfs image (xz)... dracut: Executing: /usr/bin/dracut -N --xz --add-drivers ahci --force-add "vmklive autoinstaller" --omit systemd /boot/initrd 5.19.17_1 dracut: dracut module 'mksh' will not be installed, because command 'mksh' could not be found! dracut: dracut module 'dbus-daemon' depends on 'systemd', which can't be installed dracut: dracut module 'dbus' depends on 'dbus-daemon', which can't be installed dracut: dracut module 'network-manager' depends on 'dbus', which can't be installed dracut: dracut module 'network' depends on 'network-manager', which can't be installed dracut: dracut module 'autoinstaller' depends on 'network', which can't be installed dracut: dracut module 'modsign' will not be installed, because command 'keyctl' could not be found! dracut: dracut module 'busybox' will not be installed, because command 'busybox' could not be found! dracut: dracut module 'dbus-broker' will not be installed, because command 'dbus-broker' could not be found! dracut: dracut module 'rngd' will not be installed, because command 'rngd' could not be found! dracut: dracut module 'network-wicked' will not be installed, because command 'wicked' could not be found! dracut: dracut module 'url-lib' will not be installed, because command 'curl' could not be found! dracut: 62bluetooth: Could not find any command of '/usr/lib/bluetooth/bluetoothd /usr/libexec/bluetooth/bluetoothd'! dracut: dracut module 'dmsquash-live-ntfs' will not be installed, because command 'ntfs-3g' could not be found! dracut: dracut module 'multipath' will not be installed, because command 'multipath' could not be found! dracut: dracut module 'pcsc' will not be installed, because command 'pcscd' could not be found! dracut: dracut module 'tpm2-tss' will not be installed, because command 'tpm2' could not be found! dracut: dracut module 'cifs' will not be installed, because command 'mount.cifs' could not be found! dracut: dracut module 'fcoe' will not be installed, because command 'dcbtool' could not be found! dracut: dracut module 'fcoe' will not be installed, because command 'fipvlan' could not be found! dracut: dracut module 'fcoe' will not be installed, because command 'lldpad' could not be found! dracut: dracut module 'fcoe' will not be installed, because command 'fcoemon' could not be found! dracut: dracut module 'fcoe' will not be installed, because command 'fcoeadm' could not be found! dracut: dracut module 'fcoe-uefi' will not be installed, because command 'dcbtool' could not be found! dracut: dracut module 'fcoe-uefi' will not be installed, because command 'fipvlan' could not be found! dracut: dracut module 'fcoe-uefi' will not be installed, because command 'lldpad' could not be found! dracut: dracut module 'iscsi' will not be installed, because command 'iscsi-iname' could not be found! dracut: dracut module 'iscsi' will not be installed, because command 'iscsiadm' could not be found! dracut: dracut module 'iscsi' will not be installed, because command 'iscsid' could not be found! dracut: dracut module 'nbd' will not be installed, because command 'nbd-client' could not be found! dracut: 95nfs: Could not find any command of 'rpcbind portmap'! dracut: dracut module 'nvmf' will not be installed, because command 'nvme' could not be found! dracut: dracut module 'biosdevname' will not be installed, because command 'biosdevname' could not be found! dracut: dracut module 'memstrack' will not be installed, because command 'memstrack' could not be found! dracut: memstrack is not available dracut: If you need to use rd.memdebug>=4, please install memstrack and procps-ng dracut: dracut module 'squash' will not be installed, because command 'mksquashfs' could not be found! dracut: dracut module 'squash' will not be installed, because command 'unsquashfs' could not be found! dracut: dracut module 'autoinstaller' cannot be found or installed. ERROR: Failed to generate the initramfs ```
KF-Art commented 1 year ago

I tested it and have the same issue. Apparently the problem is NetworkManager. I tried to remove it from ISO and it built successfully. I replaced it by Connman in my custom ISOs.

classabbyamp commented 1 year ago

well the problem is with the dbus-daemon hook wanting the systemd hook, but it's pulled in because network-manager is pulled in

motorto commented 1 year ago

Can you try if adding this lines to the dracut.conf makes it work again ?

omit_dracutmodules+=" systemd systemd-networkd "
add_dracutmodules+=" network-legacy "

known issue upstream: https://github.com/dracutdevs/dracut/issues?q=is%3Aissue+is%3Aopen+dbus-daemon

$ git diff
diff --git a/srcpkgs/dracut/template b/srcpkgs/dracut/template
index 3356f10529..0b66943898 100644
--- a/srcpkgs/dracut/template
+++ b/srcpkgs/dracut/template
@@ -35,6 +35,12 @@ case "$XBPS_TARGET_MACHINE" in
        ;;
 esac

+pre_install() {
+       #
+       printf '%s\n' "omit_dracutmodules+=\" systemd systemd-networkd \"" >> dracut.conf
+       printf '%s\n' "add_dracutmodules+=\" network-legacy \"" >> dracut.conf
+}
+
 post_install() {
        # kernel hooks.
        vinstall ${FILESDIR}/kernel-hook-postinst 755 usr/libexec/dracut
Vaelatern commented 1 year ago

from the linked issue, network-legacy is going away, to prefer iwd or networkmanager.

motorto commented 1 year ago

@classabbyamp Seeing that you merged the downgrade is the plan to stay in dracut053 forever ?

classabbyamp commented 1 year ago

we'll see

TeusLollo commented 1 year ago

From https://github.com/dracutdevs/dracut/issues/1756#issuecomment-1074877596

No, there shouldn't. The change to start NetworkManager via a service has been intentional. Let's not go back.

I don't think they are going to reverse this decision. After all, it had been deemed probable that dracut would eventually grow into a systemd-only subsystem.

Also https://github.com/dracutdevs/dracut/issues/1756#issuecomment-1320329632

The legacy network is the ifcfg files which I think NM has already dropped support for but continuing using NM should be just fine. In anycase iwd works just fine with NM, connman and sd-networkd or without it ( standalone ) as well as to replace the legacy wpa_supplicant stuff

It will not be a problem to stick with a downgraded version of dracut for a while more. But, medium-long term, assuming nothing changes (And I bet it won't) it may be necessary to either drop the network-manager package from the repos (Hoping that iwd won't eventually get axed, as well) or to drop dracut entirely and switching to either mkinitcpio or booster. I would personally prefer the latter approach.

I'm not a dev, of course, but I do have a spare system I may lend to experiment with new initramfs generators. Currently, most dev manpower is tied into the gcc/glibc upgrades, thus I guess it'll be a while before a decision is posited. At the very least, let's wait and see what the Gentoo guys will be doing.

classabbyamp commented 1 year ago

I'll be investigating whether it's practical to switch to another initramfs generator sometime soon, but everything is back to working for now.

We've noticed the trend with dracut melding with sysd stuff too and that weighs strongly on decisions about it. at least for now, you can use xbps-alternatives to easily switch to mkinitcpio, booster, or other future initramfs generators

LaszloGombos commented 1 year ago

from the linked issue, network-legacy is going away

network-legacy dracut module is supported in dracut v56 and dracut v57. By supported I mean there are tests for NFS, ISCSI, NBD network boot with and without multiple NICs with network-legacy. With v56 dracut you need to be more specific regarding what dracut modules you want in your initramfs.

We've noticed the trend with dracut melding with sysd stuff too and that weighs strongly on decisions about it.

Dracut latest upstream is specifically tested on openrc (and musl) using a Gentoo container.

bugcrazy commented 1 year ago

I'll be investigating whether it's practical to switch to another initramfs generator sometime soon, but everything is back to working for now.

We've noticed the trend with dracut melding with sysd stuff too and that weighs strongly on decisions about it. at least for now, you can use xbps-alternatives to easily switch to mkinitcpio, booster, or other future initramfs generators

mkinitfs is used in Alpine, it can be easily adapted to Void.

https://gitlab.alpinelinux.org/alpine/mkinitfs

https://github.com/alpinelinux/mkinitfs

https://wiki.alpinelinux.org/wiki/Initramfs_init

https://git.alpinelinux.org/aports/tree/main/mkinitfs/APKBUILD?h=3.17-stable

bugcrazy commented 1 year ago

tinyramfs is portable,it's POSIX shell, no bashism. Need more features: https://github.com/illiliti/tinyramfs/issues/7

https://github.com/illiliti/tinyramfs

classabbyamp commented 1 year ago

if we switch, it would be to an initramfs generator that's already packaged and well-tested with void. this issue is not for bikeshedding that.

ahesford commented 1 year ago

@abby I think we should consider this issue closed following the reversion to 053. As I noted in https://github.com/void-linux/void-mklive/pull/297#issuecomment-1335218751, the outstanding issue is not really with this project, but with our failure to identify and patch or remove incompatible modules in the Void dracut package.