
Linutil System Setup 模块全解析用跨发行版脚本快速完成 Linux 系统配置【免费下载链接】linutilChris Titus Techs Linux Toolbox - Linutil is a distro-agnostic toolbox designed to simplify everyday Linux tasks.项目地址: https://gitcode.com/GitHub_Trending/li/linutilSystem Setup 是 LinutilChris Titus Techs Linux ToolboxTUI 中的核心模块之一专门承载发行版特定 通用的系统配置脚本。本文以 docs/content/userguide/tweaks/_index.md 为主线结合 core/tabs/system-setup/tab_data.toml 与各脚本源码系统梳理该模块的脚本清单、工作原理与使用注意事项。读完本文你将掌握如何按发行版Arch/Fedora/Debian/Ubuntu/Alpine选择初始化脚本、如何交互式安装或卸载桌面环境与窗口管理器、以及全系统更新与清理等通用运维脚本的实际执行逻辑。模块定位与入口Linutil 的 TUI 顶层由 core/tabs/tabs.toml 定义共包含applications-setup、gaming、security、system-setup、utils五个目录。其中System Setup对应system-setup目录其全部菜单条目由 core/tabs/system-setup/tab_data.toml 声明文档中称为发行版特定设置 通用配置脚本覆盖驱动安装、包管理器配置、桌面环境等场景。从tab_data.toml的元数据可以看到每个条目的完整定义结构[[data.entries]] name Arch Server Setup description This command installs a minimal arch server setup under 5 minutes. script arch/server-setup.sh task_list SI D multi_select falsenameTUI 中显示的名称description功能说明script相对core/tabs/system-setup/的脚本路径task_list脚本所属的任务分类标记如I表示安装类、PFM表示包管理器类、SS表示系统设置类、RP表示移除/清理类供 TUI 的任务视图归类展示multi_select是否允许在 TUI 中与其它脚本多选批量执行preconditions前置条件例如要求系统存在某个命令或某文件内容匹配不满足时该条目在菜单中不可用或隐藏。运行环境检测common-script.sh几乎所有 System Setup 脚本开头都会执行. ../common-script.sh子目录脚本为. ../../common-script.sh其中的checkEnv函数会一次性完成运行环境检测见 core/tabs/common-script.shcheckArch通过uname -m识别x86_64/aarch64不支持的架构直接退出checkEscalationTool优先使用sudo、doas若当前是 root 则直接用env执行避免提权工具缺失导致脚本失败checkPackageManager按nala apt-get dnf pacman zypper apk xbps-install eopkg顺序探测可用包管理器并自动为 Alpine 启用 community 软件源checkSuperUser确认当前用户属于wheel/sudo/root组checkDistro读取/etc/os-release得到发行版 IDcheckAURHelper在 Arch 系自动探测yay/paru缺失时回退安装yay-bin。这套机制保证了同一份脚本可以在多个发行版上以相同方式工作这也是 System Setup 模块distro-agnostic的底层支撑。发行版特定设置Distro-Specific Setup文档按发行版给出了脚本清单下面结合tab_data.toml与源码逐项展开。Arch Linux脚本说明Arch Server Setup5 分钟内完成最小化 Arch 服务器安装Hyprland (JaKooLit)安装 JaKooLit 的 Hyprland 配置Paru AUR Helper安装paruAUR 助手Yay AUR Helper安装yayAUR 助手Install Chaotic-AUR添加 Chaotic-AUR 软件源获取预编译 AUR 包Nvidia Drivers HW Accel安装并配置 Nvidia 驱动与硬件加速Omarchy Rice by DHHDHH 的极简 Hyprland 配置Linux Neptune (SteamDeck)Valve 为 Steam Deck 打造的 Linux 内核分支Virtualization安装 QEMU、Libvirt 与 Virt-Manager这些条目都带有一个隐式前置条件系统必须存在pacman命令tab_data.toml中data.preconditions为command_existsvalues [pacman]因此该组只会在 Arch 系机器上出现。Arch Server Setupcore/tabs/system-setup/arch/server-setup.sh是最重型的脚本它实际上是一个完整的 Arch 安装器适合在官方 ISO 环境中运行启动时做四项安全检查background_checks必须是 root、必须是 Arch 环境、pacman 未被锁、且不在 Docker 容器中交互式引导输入用户名/密码/主机名 → 选择目标磁盘自动过滤 mmcblk 分区→ 选择文件系统btrfs/ext4/luksLUKS 会额外收集加密口令→ 自动检测时区与键盘布局 → 根据键位推导默认 locale磁盘处理用sgdisk创建 GPT 分区BIOS Boot EFI Boot Rootbtrfs 场景下创建与home子卷并将设为默认子卷drivessd根据/sys/block/*/queue/rotational自动区分 SSD/HDD/eMMC 并设置noatime,compresszstd,commit120等挂载参数安装阶段rate-mirrors按国家优选镜像失败自动回滚备份pacstrap安装 base 系统genfstab生成 fstab低于 8G 内存时自动创建 2G swapfilebtrfs 下先chattr C关闭 CoW收尾安装 Intel/AMD 微码、按 GPU 检测结果安装 Nvidia可选/AMD/Intel 驱动、创建用户并加入wheel和libvirt组、配置 locale 与 vconsole、安装 GRUB含 LUKS 加密参数注入、启用 NetworkManager 与 NTP。AUR 助手与软件源parucore/tabs/system-setup/arch/paru-setup.sh与yaycore/tabs/system-setup/arch/yay-setup.sh采用相同的安装路径先装base-devel git再在临时目录git clone对应的-bin包并用makepkg --noconfirm -si编译安装成功后用trap清理临时目录。Chaotic-AUR 则提供预编译 AUR 二进制包以节省编译时间。其它 Arch 条目pacman-config.sh 开启Color、ILoveCandy、ParallelDownloads、VerbosePkgLists与 multilib并设置makepkg.conf的MAKEFLAGSnvidia-drivers.sh 安装闭源驱动与硬件加速组件linux-neptune.sh 仅在board_vendor为Valve即 Steam Deck 硬件时可用这是典型的文件内容前置条件snapshot-setup.sh 需要系统装有btrfs命令才显示负责配置 Snapper 每小时快照、snap-pac 钩子与 GRUB 启动项system-maintenance.sh 启用paccache.timer、清理孤儿包与系统日志。Fedora脚本说明Configure DNF优化 DNF 以支持并行下载RPM Fusion添加 RPM Fusion free 与 non-free 软件源Multimedia Codecs配合 RPM Fusion 安装多媒体解码器Nvidia Proprietary Drivers安装 Nvidia 闭源驱动Hyprland (JaKooLit)安装 JaKooLit 的 Hyprland 配置Virtualization通过 DNF 启用虚拟化Btrfs Assistant Snapper使用 grub-btrfs 集成 Btrfs 快照Upgrade Fedora Release升级到下一个 Fedora 版本Configure DNFcore/tabs/system-setup/fedora/configure-dnf.sh通过sed将/etc/dnf/dnf.conf的max_parallel_downloads改为10并追加fastestmirrorTrue与defaultyesTrue最后安装dnf-plugins-core$ESCALATION_TOOL sed -i /^max_parallel_downloads/c\max_parallel_downloads10 /etc/dnf/dnf.conf || echo max_parallel_downloads10 /etc/dnf/dnf.conf echo fastestmirrorTrue | $ESCALATION_TOOL tee -a /etc/dnf/dnf.conf /dev/null echo defaultyesTrue | $ESCALATION_TOOL tee -a /etc/dnf/dnf.conf /dev/nullUpgrade Fedora Releasecore/tabs/system-setup/fedora/fedora-upgrade.sh用rpm -E %{fedora}读取当前版本号安装dnf-plugin-system-upgrade后执行system-upgrade download --releaseverN1确认后system-upgrade reboot进入离线升级阶段脚本还特别处理了 WSL 场景——WSL 无法执行离线启动阶段改用--releaseverdistro-sync在线等价升级。升级完成后可运行第二项post_upgrade做autoremove与distro-sync收尾。Btrfs Assistant Snappercore/tabs/system-setup/fedora/fedora-btrfs-assistant.sh会安装 Btrfs Assistant、Snapper 与 dnf-snapper 插件对根分区和/home创建首个快照启用snapper-timeline与snapper-cleanup服务并安装 Grub-Btrfs。文档特别提示两点恢复快照需在启动进入快照后借助 Btrfs Assistant GUI 执行 restore若安装系统时使用了 Fedora 默认分区方案/boot是独立 EXT4 分区无法包含进根分区快照需要单独备份。Debian 与 UbuntuDebian仅提供 Hyprland (JaKooLit)core/tabs/system-setup/debian/hyprland-kool-deb.sh前置条件为/etc/os-release中IDdebian。UbuntuHyprland (JaKooLit) 脚本core/tabs/system-setup/ubuntu/hyprland-kool-ubuntu24.sh额外要求VERSION_ID24.04即该条目仅在 Ubuntu 24.04 上展示。文档在 Ubuntu 分组下列出的 Full System Cleanup、Full System Update、Gaming Dependencies、Global Theme、Remove Snaps、Build Prerequisites、TTY Fonts 等条目从 core/tabs/system-setup/tab_data.toml 的结构看实际并未绑定IDubuntu前置条件属于跨发行版通用条目详见下文通用系统脚本文档将其列在 Ubuntu 下应视为便于阅读的归类方式。Alpine脚本说明Alpine Update升级 Alpine 到最新稳定版或 edge 版本该条目前置条件为系统存在apk命令core/tabs/system-setup/alpine/alpine-upgrade.sh。此外common-script.sh的checkPackageManager会在检测到 apk 时自动取消/etc/apk/repositories中 community 源的注释并执行apk update保证后续安装可用。桌面环境设置Desktop Environment Setup这一组脚本跨发行版通用核心是 core/tabs/system-setup/desktop-environments.sh安装与 core/tabs/system-setup/desktop-environments-uninstall.sh卸载二者都提供交互式菜单。安装桌面环境脚本启动后显示三级菜单先选择安装桌面环境 / 安装窗口管理器 / 退出再进入对应子菜单最终把选项映射到具体包名并调用install_packages根据包管理器自动选择sudo/doas提权方式执行安装桌面环境Desktop EnvironmentsGNOME、KDE Plasma、XFCE、Cinnamon、MATE、Budgie、LXQt、LXDE窗口管理器Window Managersi3、Sway、DWM、Awesome、BSPWM、Openbox、Fluxbox源码中实际维护的映射非常细致按PACKAGER分支处理目标pacman经 AUR helperapt/naladnfGNOMEgnome gnome-extraubuntu-gnome-desktopgnome-desktopKDE Plasmaplasma kde-applicationskde-plasma-desktopkde-desktopXFCExfce4 xfce4-goodiesxfce4 xfce4-goodiesxfce-desktop-environmenti3i3-wm i3status i3locki3 i3status i3locki3 i3status i3lockSwaysway swaylock swayidlesway swaylock swayidlesway swaylock swayidle此外窗口管理器菜单在 Arch 分支还额外支持niri、river、hyde、miracle-wm而在 apt/dnf/zypper 分支则仅提供前 7 项——源码结构显示不同发行版可选的窗口管理器范围并不完全相同。卸载桌面环境卸载脚本执行反向操作同样以交互式菜单列出已安装的桌面环境与窗口管理器供选择然后通过包管理器移除对应软件包任务标记为RP移除类。通用系统脚本General System Scripts这些脚本不依赖发行版可在所有受支持发行版上运行。文档强调的四个核心脚本如下另可参考 core/tabs/system-setup/tab_data.toml 中的完整通用条目列表。Full System Update脚本入口为 core/tabs/system-setup/system-update.sh按包管理器分派更新策略包管理器更新逻辑pacman安装rate-mirrors并按$DTYPE重新生成镜像列表失败自动恢复mirrorlist.bak更新 archlinux-keyring 后经$AUR_HELPER -Su升级含 AUR 包apt-get先安装nala并切换为nala fetch --auto优选源失败回滚再upgrade -ydnf / eopkgupdate -y/upgrade -yzypperref后dup发行版升级式更新apkupdate后upgradexbps-install-S后-yu脚本末尾还会调用updateFlatpaks若检测到flatpak执行flatpak update -y实现系统包与 Flatpak 应用同步更新。另外 system-update-topgrade.sh 提供基于topgrade的替代方案可同时更新系统包、配置文件以及其它来源的软件。Full System Cleanup入口为 core/tabs/system-setup/system-cleanup.sh分为三层清理包管理器缓存清理cleanup_systemapt 执行cleanautoremovednf 执行clean allautoremovepacman 执行-Sc --noconfirm并删除孤儿包$(pacman -Qtdq)zypper、apk、xbps、eopkg 各有对应命令系统临时文件清理common_cleanup删除/var/tmp、/tmp中超过 5 天未访问的文件将/var/log下*.log截断为空并对 systemd 系统执行journalctl --vacuum-time3d收缩日志用户缓存与回收站清理clean_data交互式询问默认拒绝是否删除~/.cache中 5 天以上的文件并清空~/.local/share/Trash。Gaming Dependencies 与 Build PrerequisitesGaming Dependencies安装跨发行版 Linux 游戏所需运行时依赖Build Prerequisitescore/tabs/system-setup/compile-setup.sh统一安装编译软件所需的常见构建依赖按发行版自动适配包名。其它通用条目tab_data.toml中还注册了文档表格未完全列举的通用脚本例如脚本说明Global Theme安装并配置全局桌面主题I PFMRemove Snaps移除 Snap 并阻止其重装RPTTY Fonts将默认 TTY 字体设置为 Terminus 32 BoldI PFMPipeWire Audio安装 PipeWire WirePlumber替代 PulseAudioIEnable SSD TRIM通过fstrim.timer启用每周 TRIM 并立即执行一次D I SSZram Swap用 zram-generator zstd 配置压缩内存交换PFM以Remove Snapscore/tabs/system-setup/remove-snaps.sh为例其实现按发行版分支pacman 执行-Rns snapdapt/nala 执行remove --purge -y snapd与autoremove且在 Ubuntu 上额外执行apt-mark hold snapd防止 snap 被重新安装。若系统本就没有snap命令脚本直接提示跳过。使用前提与最佳实践先做一次全系统更新文档在末尾给出明确提示——在安装新软件或应用重大配置变更之前务必先执行Full System Update。这也是system-update.sh内部会先做镜像优化再升级的原因保证软件源可用且包索引最新能显著降低后续脚本失败的几率。留意条目的前置条件System Setup 的菜单并非对所有人一致tab_data.toml中的preconditions决定条目是否出现。例如 Arch 组要求pacman存在、Steam Deck 内核要求board_vendor为Valve、Snapper 快照要求btrfs命令、Ubuntu Hyprland 要求VERSION_ID24.04。在 TUI 中看不到某个条目通常是当前环境不满足其前置条件。区分任务类别task_list标记了脚本用途I安装、PFM包管理器配置、SS系统设置、RP移除清理等在 TUI 中可据此筛选multi_select为false的条目如系统更新、清理、AUR 助手安装设计为单独执行不适合与其它脚本批量勾选。重型脚本需要正确环境Arch Server Setup 必须在 Arch ISO/最小环境中以 root 运行Fedora 版本升级前应确保系统已完全更新并重启一次且离线升级阶段需要重启引导完成。小结System Setup 模块把发行版初始化、包管理器调优、桌面环境切换、系统更新与清理等高频运维动作封装为可交互的脚本菜单其发行版探测 包管理器分派 前置条件过滤的设计见 core/tabs/common-script.sh 与 core/tabs/system-setup/tab_data.toml让它能跨 Arch、Fedora、Debian、Ubuntu、Alpine 等多个发行版工作。理解每个条目的前置条件、任务类别与底层脚本逻辑可以让你在 TUI 之外也能安全、精准地复用这些脚本完成 Linux 系统的快速配置。【免费下载链接】linutilChris Titus Techs Linux Toolbox - Linutil is a distro-agnostic toolbox designed to simplify everyday Linux tasks.项目地址: https://gitcode.com/GitHub_Trending/li/linutil创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考