On 11/1/25 08:13, Alyssa Ross wrote: > 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? The problem went away in your recent Nixpkgs update. It’s only a problem with the older Nixpkgs. I'll keep using glibc systemd for testing but will not include it in subsequent versions. >>>> 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. Will fix in v2. >>>> + # 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? It wouldn't. I thought it would be too much work, but thankfully one can save the errors to a text file and run some vim commands to turn them into something one can paste into host/rootfs/default.nix. -- Sincerely, Demi Marie Obenour (she/her/hers)