Demi Marie Obenour writes: > On 10/29/25 07:36, Alyssa Ross wrote: >> Demi Marie Obenour writes: >> >>> Busybox provides a broken fdisk that doesn't support GPT, only MBR. >>> The systemd built against musl doesn't include systemd-pull, so >>> systemd-sysupdate doesn't work. Therefore, use all of util-linux's >>> command-line tools, and use systemd built against glibc. >> >> That's a problem that's going to need to be fixed. We're not mixing two >> different libcs on the host. > > Unfortunately, systemd-pull can't be built with musl libc. That leaves > four options: > > 1. Try to fix the build problem, knowing that it could come back. > 2. Mix two libcs on the host. > 3. Try to fix the build (but this could take quite a while to upstream). > 4. Use glibc on the host. > > I don't think we should ship with option 2, but I think it might be > acceptable until the underlying problem is solved. Depends how hard it is to fix I suppose. What's the actual issue? >>> diff --git a/host/rootfs/default.nix b/host/rootfs/default.nix >>> index 0d79f7ca54ccc86eb0fa6e743f2011237d365f24..00052222507077b9e94a5ed0a3fbddd27caeefc3 100644 >>> --- a/host/rootfs/default.nix >>> +++ b/host/rootfs/default.nix >>> @@ -4,20 +4,20 @@ >>> >>> import ../../lib/call-package.nix ( >>> { callSpectrumPackage, spectrum-build-tools, src >>> -, pkgsMusl, pkgsStatic, linux_latest >>> +, pkgsMusl, pkgsStatic, linux_latest, systemd >>> }: >>> pkgsStatic.callPackage ( >>> >>> { busybox, cloud-hypervisor, cryptsetup, dbus, erofs-utils, execline >>> , inkscape, inotify-tools, iproute2, jq, lib, mdevd, nixos >>> , runCommand, s6, s6-linux-init, s6-rc, socat, spectrum-host-tools >>> -, stdenvNoCC, util-linuxMinimal, virtiofsd, writeClosure >>> +, stdenvNoCC, util-linux, virtiofsd, writeClosure >> >> util-linuxMinimal = util-linux.override { >> cryptsetupSupport = false; >> nlsSupport = false; >> ncursesSupport = false; >> pamSupport = false; >> shadowSupport = false; >> systemdSupport = false; >> translateManpages = false; >> }; >> >> So how come we need the non-minimal version? > > I didn't check. Let's stick with the minimal one until there's a need, then. >>> + # clobber any conflicting files from busybox >>> + ln -sft "$out/usr/bin" ${escapeShellArg util-linux}/bin/* >> >> The approach we've taken so far is to disable those tools in Busybox, >> and avoid conflicting symlinks, and I like that better. Alternatively, >> if you want to figure out which Busybox tools are actually needed, we >> could switch to a minimal build and enable only what we use. > > I don't want to block on either of those, and I'd rather not risk > breaking the build whenever util-linux adds a new tool. It's pretty > clear that util-linux is to be preferred over Busybox in the event > of a conflict. > > This does add bloat, but there are far *more* sources of bloat right > now, so I think that should be part of a more general debloating > effort. How would disabling the conflicting tools in Busybox like we've done so far block?