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 94ACA1ABF9; Wed, 12 Nov 2025 22:18:13 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 993) id B35AC1ABD2; Wed, 12 Nov 2025 22:18:02 +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-x1129.google.com (mail-yw1-x1129.google.com [IPv6:2607:f8b0:4864:20::1129]) by atuin.qyliss.net (Postfix) with ESMTPS id 5AE211AB31 for ; Wed, 12 Nov 2025 22:17:55 +0000 (UTC) Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-787e35ab178so2161857b3.2 for ; Wed, 12 Nov 2025 14:17:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762985874; x=1763590674; 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=sUYA4941aIMn5vlID/QgWhFGs3NDlri8lFzTD339nqs=; b=MoKfkRSTgEvL4MMNb7U04s7n2lfs3K2dkuyZkXrPn061SvCRJwfqjEu5W01C4XJCaZ e4rRrB+BhPIUKxxx+RJxliHXarOqKb7VNKWEBH6Vh5pvJFcX91Dl+qtW+nnupDo+tb/u XrrMBDqUPH5+Pe9da7VdDTpOznxsBpLjj/jrpvMFzWNiZqBZ4XkHq2Ek9zcncL7Mbfx7 CSv12GK+zqtdg9UYwRNs7G0Zi/8/ndR0D9raLTRKWhM1SJCWqcLs/yPCy822BheKi+vS EJtIgfHreTaKPe3zvaRALwT0zGgMoUa2BUGxF3xmnVfn1EdkKVj+qtxHxdv6myDuDZiB GFdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762985874; x=1763590674; 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=sUYA4941aIMn5vlID/QgWhFGs3NDlri8lFzTD339nqs=; b=ENwBIZOx7pti2DPydoawOtuMS4WmJWSMjk218FWu3eAphdC6m6uParbmMBr7Ndcbri kcKeG+FhdaNQBSlKZEmSlUgl0qCnsHxDFjBt8e18DFvM5CTE0tXSxpIV93VaJe2KCRJO vcqrrGj4wZ4Lo5PBAsvd7HKuCWQUh2lGS9uJ/hmRGwQ5MUXACqOKXng7mL6ourAftS36 4JAPQBmFQW0jHscxY36BwNH4p++WQ0xARPI42GnMTlfa75xKl1mbNg1x+F/vNlzaxczu K/bokadPlBoUKjPFTkxETanzx9ZGlGkbVZvOAimR/Jbo0kCMYPkfwr1IVyiO9mP2lkn1 zSoA== X-Gm-Message-State: AOJu0YwBBHzDAvao2j82vIgBROOXAA80GhaWLzq6NnCJ/GPpe+H0W2Di 73DMVK4dwA5BTTkPexrCFKBB/VA7mzT9yI3AnVUDC6Dqd0tiEwATC+LtaYzZb/UV X-Gm-Gg: ASbGncv+PPe/AgMJf3HN9HAzqm37o0Y75hj/TxfvWtTPDqN6M2pZ1xO/uFLXgYbHiaH A25Pxsvf6CzPWdozCLo/KUGsgvmzvs3Q39z6i8f+1OQkgMiKp4dOtqilLqClQGll9YcReDDHPFm 9QFMfx6dn55rgQS4PO+UzK6/QI2QvSxnw9m4ILahP818Wilcx/NSJ9EivFyiA05imURmWeCtmsD z2PIhnWMZvT0oeOzcnr3w9AADKRXEcc7HlHlzyOnRNtEpClfGeGoDyhhpHhQ8322PwKa/6c5d88 YSwV79nCata8iMplt+tZynnEhAQl8fD2U5EDmI6CdgXM5f556H8NbCXCG9Sd2Fxx2+4vjl9NoB6 vfopXq0YRn+csxq3iHgeUSGtTSEKYWYCzK++APIqOgBTDPqHaJYo1MuB/Rfbx4QVUqeT7yXoXUH FRbyPYwQCJZYR0NaCYmS1no0EOm5SgU/JizHG32g5Og+1OFJNHg5Fhq7Il9qzqSoXfUxcbpikcx miOhqCUtuPxBApSFXuq6h6R X-Google-Smtp-Source: AGHT+IFLwIOeO0CEDrjmmw9KQ6k59Qf4iFga/ANBUzXA6VIsTpeCOje+L0cUiSFbRICoygqu/LRxxQ== X-Received: by 2002:a05:690c:6810:b0:786:91ac:e160 with SMTP id 00721157ae682-7881350278cmr44661387b3.0.1762985873537; Wed, 12 Nov 2025 14:17:53 -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-78821de1bfcsm1008097b3.4.2025.11.12.14.17.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Nov 2025 14:17:52 -0800 (PST) From: Demi Marie Obenour Date: Wed, 12 Nov 2025 17:14:55 -0500 Subject: [PATCH v2 1/8] 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: <20251112-updates-v2-1-88d96bf81b79@gmail.com> References: <20251112-updates-v2-0-88d96bf81b79@gmail.com> In-Reply-To: <20251112-updates-v2-0-88d96bf81b79@gmail.com> To: Spectrum OS Development X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762985694; l=6068; i=demiobenour@gmail.com; s=20250729; h=from:subject:message-id; bh=qAOe9gkug8Kg1EuqTO7KIfb6w/4DmQYq5BpLcKEN9uM=; b=+Al/VBI0DppGlGH+8Wd0kqaLFh/aa9PYdxOegEB9Xa3/Z78uAH6QoVH4fZYirYyeKabLkKSpQ UUCucvWQS1sAquTeQQpLVlePv6lQ81FCE6C/tudjmoF9QrFgEB4tD9Q X-Developer-Key: i=demiobenour@gmail.com; a=ed25519; pk=X57Q4/YQDj9t4SBeKaDwvXYKB6quZJVx/DE2Ly2out0= Message-ID-Hash: AU7EX6NUIGTYA62QLNP2IMW3OM4O53UJ X-Message-ID-Hash: AU7EX6NUIGTYA62QLNP2IMW3OM4O53UJ 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 --- host/rootfs/busybox-config | 134 +++++++++++++++++++++++++++++++++++++ host/rootfs/busybox-config.license | 4 ++ host/rootfs/default.nix | 36 +++------- 3 files changed, 147 insertions(+), 27 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 eb6c64067091ef3802596ce581f82f322f5bfe34..aea2e46bb5998176eb6d9b8aef802ae270fdd28c 100644 --- a/host/rootfs/default.nix +++ b/host/rootfs/default.nix @@ -38,25 +38,8 @@ let 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,11 @@ 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 + ln -st "$out/usr/bin" ${util-linuxMinimal}/bin/* ${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.51.2