From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from atuin.qyliss.net (localhost [IPv6:::1]) by atuin.qyliss.net (Postfix) with ESMTP id 9B44ACC63; Sat, 22 Nov 2025 01:27:35 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 993) id EEEE6CC48; Sat, 22 Nov 2025 01:27:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on atuin.qyliss.net X-Spam-Level: X-Spam-Status: No, score=-0.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DMARC_PASS,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 Received: from mail-yw1-x1131.google.com (mail-yw1-x1131.google.com [IPv6:2607:f8b0:4864:20::1131]) by atuin.qyliss.net (Postfix) with ESMTPS id 4792FCC45 for ; Sat, 22 Nov 2025 01:27:32 +0000 (UTC) Received: by mail-yw1-x1131.google.com with SMTP id 00721157ae682-78a7af9ff1dso26067397b3.1 for ; Fri, 21 Nov 2025 17:27:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763774850; x=1764379650; darn=spectrum-os.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=r3x48xJj/wSs4vfBtUVxzXyNA4gKPz8JQZ9uF5WZy48=; b=k6SXP7PEZ9on7exAbrj2f890TeB6ZId90ScawpSdw7/BMkez2sF6BRe23u81sLnwQQ u+ey188pycf0IUEXcIPqnrUelaK1SlrjxIffOLTMmT8HAlTz1Sl51XP8nEtkmqHYAHRz hhUeSb0YJInz60DcIJkpBT9Oy1ThfzAGey2oP9r0oqZkOeDkDdC8CKM2fcNeMppIwitT PhKKH3sVzv2sXm0gksosUpCPCuu1StvaPKfbOGplpUN98mqF9+4IVULDY0tw6Ok3fz17 oZ29Yki1qErA8oUdoNLi/2TzKl6B1eawcfTI0tj4Mp4CStw/pmh4szWHWvG1zbr5041b 4rHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763774850; x=1764379650; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=r3x48xJj/wSs4vfBtUVxzXyNA4gKPz8JQZ9uF5WZy48=; b=b1IKr8uv8OB5JoiMKIXV9rslF8tvf0keeVvNp57hhuSeW4ylEVGovwmeLrdBET3uPY /ke4CS0cNOJt02/Fm5ReOHXVBKgnEkPjjTizACgCt+4k8Le4pPNaEk0EO/jJUfkDWeyb 79ykRnrw9QxVrbKjZHJn+kLN07GbN27YCZCne+0irwcBa36gc3uFjUXJVFaFW4oPB9C2 ammaJX7vLjQss5u8HzbvtJigkROvOho/hDwIsoRZPUYTZRA3hwIeildkZJ7QGnLings4 vVzeeiLH+dkuIjoQ4YYDWzJaPJ5dtPRiy/oyW33GeXZ0EJkKhNfYLOUKuxB/A6rcjkoR L3gg== X-Gm-Message-State: AOJu0YwYGjIxdTwrcf4WNJ+rTRvFySVEHcygzcdK2KnY7I+KA4zcgtfk 0XhIqR6CRSoHb4nPvRpacFuY0MiFs1sx9kG7yDJ/zXcIgtpCQjegLV960+fv5w== X-Gm-Gg: ASbGnctgbohH27Fiq+yqvCkEHzgu/BVn47SHzzm5dY9yEdefxf3ceh4F6nfbfDCBMHP axCGR1cjOcfS01La98o7E/Z9ClZzKaBO3rE/nt8sjmeHMMY3r7uNTQC7AVv8S4ETKfDKsNar5hw /IofUZDxw8Y67/SJRO/HKO6YDXTfijuI/sPahudzqQDjYFxT2+WvCBHXNL4uYM47eOxXXdCaEjG oKKzHUoPN0wooBKRW8p9ZYm3OduMFGQTZmeKNGvz/Y7hJZHrgyBFCFBWRd+DIVCO/zPPCwoGV74 25l3T+wPmfDu5A07ZUtNZ0X6b2oP4+dawsuPtxUntR1m7B/qHEg5rFwe1qPE4/LFz1iDw9lRG7I ZaaYjY88RCDuuft558X98bnrVHAWXhfLRt8WfzBBgF0RLbG/TinW92RG16Vwy8EMTdIzZFF22kD KR/YxQ53rXTRSiu1Ac+iYUzc9gAvJo3/bR9ILji4XepahURNkJQV9sj+zqY7xtqY6uoudhPg2oe iOJalWTKuSSIVi+ssejSPUPAfdppfHmAVAEvQh+lSFEoQ== X-Google-Smtp-Source: AGHT+IGPzb8AVxibvD2WQhC8FuUTNKgPdmOVPPUJ7vMC8464kg3MmtA1ztv2igXyoLZdgNZT5Fe/jw== X-Received: by 2002:a05:690c:9c01:b0:787:d0d5:808e with SMTP id 00721157ae682-78a8b51fb7emr31698287b3.50.1763774850072; Fri, 21 Nov 2025 17:27:30 -0800 (PST) Received: from localhost.localdomain (h96-60-249-169.cncrtn.broadband.dynamic.tds.net. [96.60.249.169]) by smtp.gmail.com with UTF8SMTPSA id 00721157ae682-78a79925943sm20672747b3.28.2025.11.21.17.27.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 17:27:29 -0800 (PST) From: Demi Marie Obenour Date: Fri, 21 Nov 2025 20:23:23 -0500 Subject: [PATCH v4 01/14] host/rootfs: Install all programs from util-linuxMinimal MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20251121-updates-v4-1-d4561c42776e@gmail.com> References: <20251121-updates-v4-0-d4561c42776e@gmail.com> In-Reply-To: <20251121-updates-v4-0-d4561c42776e@gmail.com> To: Spectrum OS Development X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1763774602; l=6422; i=demiobenour@gmail.com; s=20250729; h=from:subject:message-id; bh=GvyY3tP7S522fBa9sADcO+/z1t7JqQrW+rwcB3ZYuds=; b=NKlwuVRqa9DEDekm5y8pRdKzlipdujlOTa85AEo6k27HKf66nIBeZJtQU+enKCjmL0xsIvDo5 5XvbHk+8ROpApaIl2kD9ugp8SotJC+rBAu+7eYw9QU2X4eANccI1eU7 X-Developer-Key: i=demiobenour@gmail.com; a=ed25519; pk=X57Q4/YQDj9t4SBeKaDwvXYKB6quZJVx/DE2Ly2out0= Message-ID-Hash: 6TIAUGO3EJNZ2KSLTTKJ5XXN3XRU2XAF X-Message-ID-Hash: 6TIAUGO3EJNZ2KSLTTKJ5XXN3XRU2XAF X-MailFrom: demiobenour@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-devel.spectrum-os.org-0; header-match-devel.spectrum-os.org-1; header-match-devel.spectrum-os.org-2; header-match-devel.spectrum-os.org-3; header-match-devel.spectrum-os.org-4; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Demi Marie Obenour , Alyssa Ross X-Mailman-Version: 3.3.9 Precedence: list List-Id: Patches and low-level development discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Busybox fdisk doesn't support GPT, only MBR. Busybox programs are also often buggy, so use the util-linux version where possible. This requires disabling a lot of Busybox applets, so move the Busybox config to a separate file that Nix loads via builtins.readFile. Signed-off-by: Demi Marie Obenour --- Changes since v3: - Add util-linuxMinimal to packages instead of installing it manually. Changes since v2: - Split installation of util-linux and of systemd to separate patches. --- host/rootfs/busybox-config | 134 +++++++++++++++++++++++++++++++++++++ host/rootfs/busybox-config.license | 4 ++ host/rootfs/default.nix | 38 +++-------- 3 files changed, 147 insertions(+), 29 deletions(-) diff --git a/host/rootfs/busybox-config b/host/rootfs/busybox-config new file mode 100644 index 0000000000000000000000000000000000000000..f2fd5fcab4141ea63c663e433412a253d5235aab --- /dev/null +++ b/host/rootfs/busybox-config @@ -0,0 +1,134 @@ +CONFIG_ADDPART n +CONFIG_AGETTY n +CONFIG_BITS n +CONFIG_BLKDISCARD n +CONFIG_BLKID n +CONFIG_BLKPR n +CONFIG_BLKZONE n +CONFIG_BLOCKDEV n +CONFIG_CAL n +CONFIG_CHATTR n +CONFIG_CHCPU n +CONFIG_CHMEM n +CONFIG_CHOOM n +CONFIG_CHRT n +CONFIG_COLCRT n +CONFIG_COLRM n +CONFIG_COLUMN n +CONFIG_CORESCHED n +CONFIG_CTRLALTDEL n +CONFIG_DELPART n +CONFIG_DEPMOD n +CONFIG_DMESG n +CONFIG_EJECT n +CONFIG_ENOSYS n +CONFIG_EXCH n +CONFIG_FADVISE n +CONFIG_FALLOCATE n +CONFIG_FDISK n +CONFIG_FINCORE n +CONFIG_FINDFS n +CONFIG_FINDMNT n +CONFIG_FLOCK n +CONFIG_FSCK n +CONFIG_FSCK_CRAMFS n +CONFIG_FSCK_MINIX n +CONFIG_FSFREEZE n +CONFIG_FSTRIM n +CONFIG_GETOPT n +CONFIG_HALT n +CONFIG_HARDLINK n +CONFIG_HD n +CONFIG_HEXDUMP n +CONFIG_HWCLOCK n +CONFIG_I386 n +CONFIG_INIT n +CONFIG_INSMOD n +CONFIG_IONICE n +CONFIG_IP n +CONFIG_IPCMK n +CONFIG_IPCRM n +CONFIG_IPCS n +CONFIG_ISOSIZE n +CONFIG_KILL n +CONFIG_LAST n +CONFIG_LASTB n +CONFIG_LDATTACH n +CONFIG_LINUX32 n +CONFIG_LINUX64 n +CONFIG_LOGGER n +CONFIG_LOOK n +CONFIG_LOSETUP n +CONFIG_LSATTR n +CONFIG_LSBLK n +CONFIG_LSCLOCKS n +CONFIG_LSCPU n +CONFIG_LSFD n +CONFIG_LSIPC n +CONFIG_LSIRQ n +CONFIG_LSLOCKS n +CONFIG_LSLOGINS n +CONFIG_LSMEM n +CONFIG_LSMOD n +CONFIG_LSNS n +CONFIG_MCOOKIE n +CONFIG_MESG n +CONFIG_MKE2FS n +CONFIG_MKFS n +CONFIG_MKFS_BFS n +CONFIG_MKFS_CRAMFS n +CONFIG_MKFS_EXT2 n +CONFIG_MKFS_MINIX n +CONFIG_MKSWAP n +CONFIG_MODINFO n +CONFIG_MODPROBE n +CONFIG_MOUNT n +CONFIG_MOUNTPOINT n +CONFIG_NAMEI n +CONFIG_NOLOGIN n +CONFIG_NSENTER n +CONFIG_PARTX n +CONFIG_PIPESZ n +CONFIG_PIVOT_ROOT n +CONFIG_POWEROFF n +CONFIG_PRLIMIT n +CONFIG_READPROFILE n +CONFIG_REBOOT n +CONFIG_RENAME n +CONFIG_RENICE n +CONFIG_RESIZEPART n +CONFIG_REV n +CONFIG_RFKILL n +CONFIG_RMMOD n +CONFIG_RTCWAKE n +CONFIG_SCRIPT n +CONFIG_SCRIPTLIVE n +CONFIG_SCRIPTREPLAY n +CONFIG_SETARCH n +CONFIG_SETPGID n +CONFIG_SETPRIV n +CONFIG_SETSID n +CONFIG_SFDISK n +CONFIG_SHUTDOWN n +CONFIG_SULOGIN n +CONFIG_SWAPLABEL n +CONFIG_SWAPOFF n +CONFIG_SWAPON n +CONFIG_SWITCH_ROOT n +CONFIG_TASKSET n +CONFIG_UCLAMPSET n +CONFIG_UMOUNT n +CONFIG_UNAME26 n +CONFIG_UNSHARE n +CONFIG_UTMPDUMP n +CONFIG_UUIDD n +CONFIG_UUIDGEN n +CONFIG_UUIDPARSE n +CONFIG_WAITPID n +CONFIG_WALL n +CONFIG_WDCTL n +CONFIG_WHEREIS n +CONFIG_WIPEFS n +CONFIG_WRITE n +CONFIG_X86_64 n +CONFIG_ZRAMCTL n diff --git a/host/rootfs/busybox-config.license b/host/rootfs/busybox-config.license new file mode 100644 index 0000000000000000000000000000000000000000..ba50b647fbfac9b79ecb29f33a36c07d3e332ba2 --- /dev/null +++ b/host/rootfs/busybox-config.license @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: MIT +# SPDX-FileCopyrightText: 2021-2025 Alyssa Ross +# SPDX-FileCopyrightText: 2022 Unikie +# SPDX-FileCopyrightText: 2025 Demi Marie Obenour diff --git a/host/rootfs/default.nix b/host/rootfs/default.nix index 1578155fa0fb9a4df3fb4884e21ed7d8d8f821dc..dc7786a2afa74abbe5146894f73f5860b5c0ef8f 100644 --- a/host/rootfs/default.nix +++ b/host/rootfs/default.nix @@ -35,28 +35,11 @@ let packages = [ cloud-hypervisor cryptsetup dbus execline inotify-tools iproute2 jq mdevd s6 s6-linux-init s6-rc socat spectrum-host-tools - virtiofsd xdg-desktop-portal-spectrum-host + util-linuxMinimal virtiofsd xdg-desktop-portal-spectrum-host (busybox.override { - extraConfig = '' - CONFIG_CHATTR n - CONFIG_DEPMOD n - CONFIG_FINDFS n - CONFIG_HALT n - CONFIG_INIT n - CONFIG_INSMOD n - CONFIG_IP n - CONFIG_LSATTR n - CONFIG_LSMOD n - CONFIG_MKE2FS n - CONFIG_MKFS_EXT2 n - CONFIG_MODINFO n - CONFIG_MODPROBE n - CONFIG_MOUNT n - CONFIG_POWEROFF n - CONFIG_REBOOT n - CONFIG_RMMOD n - ''; + # Use a separate file as it is a bit too big. + extraConfig = builtins.readFile ./busybox-config; }) # Take kmod from pkgsGui since we use pkgsGui.kmod.lib below anyway. @@ -96,6 +79,12 @@ let mkdir -p $out/usr/bin $out/usr/share/dbus-1/services \ $out/usr/share/icons/hicolor/20x20/apps + # lndir silently ignores existing links, so run it before ln + # so that ln catches any duplicates. + for pkg in ${escapeShellArgs usrPackages}; do + lndir -ignorelinks -silent "$pkg" "$out/usr" + done + # Weston doesn't support SVG icons. inkscape -w 20 -h 20 \ -o $out/usr/share/icons/hicolor/20x20/apps/com.system76.CosmicFiles.png \ @@ -110,18 +99,9 @@ let ln -st $out/usr/share/dbus-1/services \ ${pkgsGui.xdg-desktop-portal-gtk}/share/dbus-1/services/org.freedesktop.impl.portal.desktop.gtk.service - for pkg in ${escapeShellArgs usrPackages}; do - lndir -ignorelinks -silent "$pkg" "$out/usr" - done - ${concatStrings (mapAttrsToList (name: path: '' ln -s ${path} $out/usr/lib/spectrum/vm/${name} '') appvms)} - - # TODO: this is a hack and we should just build the util-linux - # programs we want. - # https://lore.kernel.org/util-linux/87zgrl6ufb.fsf@alyssa.is/ - ln -s ${util-linuxMinimal}/bin/{findfs,uuidgen,lsblk,mount} $out/usr/bin ''; in -- 2.52.0