YellowHearth1/artix-tui-installer

GitHub: YellowHearth1/artix-tui-installer

一款用 Rust 编写的 Artix Linux 终端安装程序,专为 dinit 初始化系统定制,提供双语界面和丰富的磁盘加密、引导与桌面环境配置选项。

Stars: 3 | Forks: 0

# 🐧 Artix TUI 安装程序 **支持双语(乌克兰语/英语)的终端安装程序,用于自定义构建的基于 [dinit](https://davmac.org/projects/dinit/) 初始化系统的 [Artix Linux](https://artixlinux.org)。** 使用 Rust 和 [ratatui](https://ratatui.rs) 编写,设计风格类似于现代图形 安装程序:左侧步骤面板、圆角边框、Artix 蓝色主题、 分段开关以及实时滚动的安装日志。 [![Language: Rust](https://img.shields.io/badge/Rust-2021-orange?logo=rust)](https://www.rust-lang.org/) [![TUI: ratatui](https://img.shields.io/badge/TUI-ratatui%200.30-blue)](https://ratatui.rs) [![Init: dinit](https://img.shields.io/badge/init-dinit-green)](https://davmac.org/projects/dinit/) 🇬🇧 **[英文版本 → README.en.md](README.en.md)**
## ✨ 功能特性 - **🌐 双语界面** —— 支持乌克兰语和英语,在首个屏幕进行选择。 - **⚙️ 原生 dinit** —— 专门针对此初始化系统配置自定义 dinit 实例, 对 systemd 没有任何依赖: - **turnstile** 用于 `seatd`(自定义 PAM 模块,不需要 elogind); - **userspawn** 用于 `elogind`(标准 Artix 方案); - `seatd`/`elogind` 会话管理器及自定义 PipeWire 服务。 - **📦 交互式包安装** —— 包通过 `pacman` 在伪终端下安装,因此由*您*来 选择提供商(GPU/Vulkan 驱动、多媒体后端等),而不是静默选择 第一个。来自不同仓库的同名包会自动从 Artix 获取;`[Y/n]` 请求会 自动确认。 - **🔒 LUKS 磁盘加密** —— 仅 `root`,UEFI 下的**包含加密 `/boot` 的 全盘加密**,或 **USB 密钥**(使用 keyfile 只需输入一次密码)。 - **🥾 引导加载程序选择** —— GRUB、rEFInd、Limine 或 **EFISTUB**;对于 GRUB,使用 `os-prober` 检测其他操作系统。在对额外磁盘进行分区之前进行 配置。 - **📦 EFISTUB(无引导加载程序启动)** —— UEFI 固件**直接**加载内核, 无需中间引导加载程序(Artix 内核已构建为 EFI 存根, `CONFIG_EFI_STUB=y`)。initramfs 和参数通过 `efibootmgr` 条目传递。 **不需要额外安装包或 systemd** —— 不像 UKI 那样需要 `systemd-stub`。 仅限 UEFI;与加密的 `/boot` 不兼容。**支持回滚** —— 内核、initramfs 和 参数保持为独立文件,因此安装程序会注册额外的 UEFI 回滚和急救条目 (可通过固件启动菜单选择)。这是未来实现 Secure Boot 的基础。 - **🗄️ 额外磁盘** —— 挂载其他磁盘或分区(挂载到用户目录、`/mnt` 或 自定义路径),可选择格式化或加密每一个。加密的额外磁盘会在启动时 自动解锁(密钥位于加密的根目录上,通过 dinit 服务),无论根目录 使用何种解锁方式。 - **💾 文件系统选择** —— ext4、btrfs、xfs、f2fs、jfs、ext3、ext2。 - **🌳 带有快照和回滚的 Btrfs** —— 子卷 @/@home/@snapshots/@log/@cache, 在每次 pacman 操作前后自动创建快照(snapper + snap-pac),并支持在任何 引导加载程序上进行 artix-rollback 回滚(在 GRUB/rEFInd/Limine 中作为 图形菜单中的独立条目,在 EFISTUB 中作为固件启动菜单中的独立条目)。 - **🖥️ 桌面环境选择** —— KDE Plasma、LXQt、**Pinnacle**(AwesomeWM 风格的 Wayland 合成器)、XFCE、Cinnamon、MATE、LXDE 或无桌面环境。 - **🎮 GPU 驱动** —— NVIDIA (open-dkms)、NVIDIA 580xx(旧版)、nouveau、 AMD、Intel;选择专有驱动时会自动屏蔽 nouveau。 - **🛟 系统恢复模式** —— 挂载现有安装(如需要则进行 LUKS 解密), 检测引导加载程序并打开 chroot shell 进行修复。 - **🔁 AUR 支持** —— 从源码编译 `paru`(以始终匹配系统 `libalpm`), 随后安装您选择的包。 - **🧩 自动启用 dinit 服务** —— 任何已安装的 `*-dinit` 包都会自动启用 服务,无论它来自仓库还是 AUR。 - **📜 开箱即用的系统日志** —— `syslog-ng` 将所有日志收集到 `/var/log`, 而 `logrotate`(通过 `cronie`)将日志保留**一周**,删除更旧的日志,并 在文件超过 **5GB** 时立即轮转。自定义服务会记录到缓冲区,因此 `dinitctl catlog` 可以立即对它们使用。 - **🔥 现成的防火墙** —— 内置的 nftables 配置开放了 KDE Connect、LocalSend、 Sunshine、RustDesk、Steam Remote Play、Syncthing 和 SSH 的端口。 - **🎨 内置配置** —— kitty (Catppuccin Mocha)、starship 提示符、fastfetch, 对于 Pinnacle 还有 waybar 和 wofi;不需要外部文件。 - **🕹️ 游戏就绪** —— 提升 Wine/Proton fsync 的打开文件数 (`nofile`) 限制, 并可选择自动配置 `auto-cpufreq`。 - **🧳 自给自足** —— 所需的 host 工具(artools、gptfdisk、cryptsetup 等) 会自动安装,因此安装程序甚至可以在 **Artix 官方 ISO** 上运行,而不仅仅是在 自定义镜像上。 - **🏷️ 可自定义**的计算机名称和 UEFI 条目名称。 - **🚦 谨慎启动** —— 磁盘分区仅在“检查并安装”屏幕上明确确认后才会开始, 所需的 host 工具(git、gptfdisk、dosfstools、parted 等)会在连接到 网络后立即在后台加载。 - **⚠️ 分区前警告** —— 在磁盘选择屏幕上,安装程序会进行非阻塞式提醒 (不影响您的选择),如果:选定的磁盘是用于启动安装程序本身的 **可启动介质**(通过 live 镜像的 iso9660 文件系统检测);磁盘**小于 20 GB** (基本系统可以容纳,但可能没有足够空间容纳完整的桌面环境);或者选定的 **UEFI/BIOS 模式与计算机实际启动的模式不匹配**(这将导致系统无法启动)。 每个警告都是滚动窗口中完整、易懂的句子(在磁盘列表上按 `w` 键);如果您 有意为之,您随时可以继续。 - **🧨 磁盘擦除确认** —— 格式化前的最后一步:单独的窗口直接显示哪个磁盘 (路径、型号、容量)及其**现有分区**将被不可逆地销毁,并要求显式按回车键。 没有这第二次确认,格式化永远不会开始 —— 意外擦除错误磁盘变得更加困难。 - **🪞 快速且稳定的镜像** —— 5 个最近的国家/地区(根据您的时区)按**实际 速度**排名并置于顶部;**世界上所有其他镜像在下方保持激活状态**,从近到远 —— 没有被注释或丢弃。因此,如果在下载期间快速镜像“死机”,pacman 会 直接移至下一个(直到 Artix 主服务器),而不会中断安装。俄罗斯镜像被 完全排除在外。此外,还有带有预编译 AUR 二进制包的可选 Chaotic-AUR。 - **📊 实时进度** —— 实时滚动的安装日志(PgUp/PgDn、Home/End);发生错误后 —— 可以在不丢失已做选择的情况下重新运行。 - **🏁 三种最终选项** —— 重启、关闭计算机或立即 chroot 进入新系统;在所有 情况下,分区都会被安全卸载。 - 📀 通过 **artools** (`buildiso`) 构建为 live ISO 镜像。 ## 👁️ 外观 ![Disk and Partitions screen live](https://static.pigsec.cn/wp-content/uploads/repos/cas/e6/e65986ffed815e8b0503c16343b3ebe7eed725c863c8d652db3ba71ac4e29eb0.png) *截图来自图形终端;在纯 TTY 中,颜色更简单(请参阅“屏幕截图”部分的说明)。* 每个屏幕的示意图如下所示: ``` ┌───────────┬──────────────────────────────────────────────┐ │ ◆ 01 │ 09 · Диск та розділи │ │ ● 02 │ ┌────────────────────────────────────────┐ │ │ ● … │ │ Режим ● UEFI ○ BIOS │ │ │ ◆ 09 │ │ Диск: /dev/sda 256G │ │ │ ○ 10 │ │ Додати SWAP? [так] [ 4 ГіБ ] │ │ │ ○ … │ │ Файлова система ‹ ext4 › btrfs xfs │ │ │ │ │ ◂ Назад Далі ▸ │ │ │ │ └────────────────────────────────────────┘ │ │ ├──────────────────────────────────────────────┤ │ │ ↑/↓ рух · ←/→ зміна · Enter далі │ └───────────┴──────────────────────────────────────────────┘ ``` 左侧面板仅显示步骤编号(在活动步骤上会旋转一个小菱形);完整的步骤名称位于 面板标题中。 ## ⌨️ 控制 | 按键 | 动作 | |---|---| | ↑ / ↓ | 在列表和字段中移动 | | Enter | 选择 / 下一步 | | Esc 或 Shift+Tab | 返回;Esc 也会关闭模态窗口 | | ↑ 在顶部项目上 | 返回上一个屏幕 | | 空格键 | 标记项目 / 切换开关 | | ← / → | 更改值:文件系统、SWAP 大小、账户模式、会话 | | 输入文本 | 列表过滤、搜索包、编辑字段 | | Tab | “账户”屏幕上的下一个字段 | | o | 文件系统选项(“磁盘和分区”屏幕) | | w / s | 在文件系统选项模态窗口中滚动描述 | | PgUp / PgDn · Home / End | 快速滚动长列表和安装日志 | | q | 退出安装程序(在安装过程中被锁定) | | Ctrl+C | 紧急退出 | 活动屏幕的上下文提示始终显示在界面的底行。 ## 🔨 构建 ``` cd installer cargo build --release # → target/release/artix-installer ``` 只读步骤(时区、键盘、Wi-Fi、包搜索、磁盘列表)在目标系统之外 缺少其所需工具时会正确降级。实际的安装过程(分区、basestrap、chroot) 需要 root 权限和真实目标,因此**请在虚拟机中进行测试**。 ## 🚀 在官方 Artix 上运行 安装程序不一定非要从自定义镜像运行 —— 它可以直接从任何**官方 Artix** 启动:无论是控制台“base”镜像,还是带有桌面环境和图形安装程序 (Calamares) 的社区镜像 —— 只需打开终端并运行此 TUI 来代替 Calamares。它所需的 所有 host 工具(artools、gptfdisk、cryptsetup 等)都会在工作期间自行部署。 ### 预编译二进制文件(最简单) 从[发布页面](https://github.com/YellowHearth1/artix-tui-installer)下载已编译的安装程序 并以 root 身份运行: ``` curl -LO https://github.com/YellowHearth1/artix-tui-installer/releases/download/artix-tui-installer/artix-installer chmod +x artix-installer sudo ./artix-installer ``` ### 从源码构建 `base-devel` 提供了 `cargo` 所需的编译器和链接器: ``` sudo pacman -S --needed git rust base-devel git clone https://github.com/YellowHearth1/artix-tui-installer cd artix-tui-installer/installer cargo build --release sudo ./target/release/artix-installer ``` 几点注意事项: - 安装程序**必须以 root 身份运行** —— 它会进行磁盘分区,执行 `basestrap` 和 `chroot`。 - 这是一个全屏 TUI:请在真正的控制台 (`Ctrl`+`Alt`+`F2`) 或 live 桌面环境 的终端中运行,尺寸至少为 **80×24**。 - 在 live 镜像上,从源码构建会消耗内存;如果内存不足,请使用上面的预编译 二进制文件,或在另一台 Artix 机器上构建,并将单个文件复制到目标机器上。 - ⚠️ 安装程序会**格式化磁盘** —— 请先在虚拟机中进行测试。 ## 🧭 向导步骤 安装程序从选择模式开始:**安装**或**系统恢复**。安装包含 15 个步骤: 1. **语言** —— 乌克兰语/英语;设置界面语言和系统区域设置。 2. **时区** —— 带有搜索过滤的完整 IANA 列表。 3. **Wi-Fi** —— 跳过(有线)、扫描或通过 `nmcli` 连接。 4. **键盘** —— 通过 `localectl` 设置的控制台布局;第一个选择为主布局。 5. **内核** —— linux / lts / zen / hardened。 6. **桌面环境** —— 选择图形环境(或不选择)和会话管理器。 7. **包** —— GPU 驱动 + 从仓库中搜索并进行多选。 8. **AUR** —— 精选的推荐列表和 AUR 实时搜索。 9. **磁盘** —— 启动模式、目标磁盘、SWAP 和根文件系统。 10. **引导加载程序和加密** —— 选择引导加载程序 (GRUB / rEFInd / Limine),检测其他 操作系统(`os-prober`,用于 GRUB)、UEFI 条目名称和磁盘加密:仅 `root`、全盘加密(包含 加密的 `/boot`)或 USB 密钥、容量和密码短语。在额外磁盘**之前**完成, 以便额外磁盘上的密钥有意义。 11. **额外磁盘** —— 对于每个找到的磁盘/分区:格式化(或“数据”)、挂载位置(用户目录 / `/mnt` / 带有文件夹名称的自定义路径)以及独立的加密复选框。在您选择之前,不会进行任何更改。 12. **用户** —— 计算机名称、账户模式、用户名和密码(仅保留在内存中,安装程序不会将其写入磁盘)。 13. **选项** —— 无密码 sudo、Chaotic-AUR 仓库和镜像优化。 14. **安装** —— 概览,然后实时日志逐步执行计划;发生错误时停止,并允许您返回**上一步**。 15. **完成** —— 总结和重启。 各处的导航都是相同的:`↑`/`↓` 移动焦点(在最高项目上按向上箭头返回上一步), `←`/`→` 更改值,`Enter` —— 下一步,`Esc` —— 关闭窗口或返回。 ## 🧱 安装的组织方式 `src/system/install.rs` 构建一个有序的操作列表;安装屏幕执行每一个操作, 实时转换输出。大致如下: 安装 host 工具 → 分区 → 格式化(如需要则进行 LUKS 加密)→ 挂载 → **阶段 1** `basestrap` 最小的可引导基础系统(内核、固件、dinit + 服务、声音、日志)→ 配置仓库和密钥 → **阶段 2** 用于桌面环境、驱动和您的包的交互式 `pacman` → 用户账户 → 区域设置 / 时区 / 键盘布局 / hostname + hosts → 配置 user-dinit (turnstile 或 userspawn)→ initramfs(加密时带有 `encrypt` 钩子)→ 引导加载程序 → 内置 nftables → 日志轮转 → 启用所有 dinit 服务 → **阶段 3** 通过 `paru` 安装 AUR。 ## 🌳 Btrfs:子卷、自动快照和系统回滚 如果在“磁盘和分区”步骤中选择 **btrfs**,文件系统选择下方会出现额外选项 (每个选项在界面中都有直接的“收益/损失”说明): - **子卷** —— 布局为 `@`(根)、`@home`、`@snapshots` → `/.snapshots`、 `@log` → `/var/log`、`@cache` → `/var/cache`。系统快照不会触及 `/home`, 也不会被日志和缓存膨胀。 - **自动快照(snapper + snap-pac)** —— 在**每次 pacman/paru 事务前后**创建快照; 自动启用子卷(需要 `@snapshots`)。 - **压缩** —— 写入时透明的 `compress=zstd`。 - **SSD 的 TRIM** —— 后台 `discard=async`。 - 对于任何文件系统,单独提供 **noatime** 选项。 根目录始终使用 `rootflags=subvol=@` 挂载 —— 按名称挂载,而不是通过 default 子卷。 安装程序为快照进行的配置: - **snapper** 通过直接写入 `/etc/snapper/configs/root` 进行配置(因为在 chroot 中 `create-config` 无法工作):`TIMELINE_CREATE=no` —— 快照绑定到 pacman 事件, 而不是时钟;`NUMBER_LIMIT=10` —— 保留最近约 10 个快照。 - **计划清理** —— 通过 cronie 运行 `/etc/cron.d/snapper`(每天 5:30),因为 dinit 没有 systemd 定时器。 - **首次启动的基础快照** —— 一次性后台服务会等待 D-Bus 和 snapper 启动, 创建“clean system (post-install baseline)”快照并自行清理。 回滚**适用于任何引导加载程序**(GRUB、rEFInd、Limine): - **`sudo artix-rollback [N]`** —— 显示快照列表;选定的快照将成为新的 `@`, 旧根保存为 `@.rollback-<时间>`,重新指向 default 子卷,并从快照中清理过时的 pacman 本地数据库(snap-pac 会在 `db.lck` 下额外创建 PRE 快照)。在应用程序菜单 中也有快捷方式。 - **回滚到系统启动** —— 内核参数 `artix.rollback` 直接从 initramfs 打开快照选择; mkinitcpio 钩子在 `encrypt` **之后**运行,因此也适用于 LUKS。在 **GRUB** 上,为此 提供了单独的 **System Rollback** 菜单项。 - 经典的 `snapper rollback` 也可以使用。 回滚**不依赖于活动内核**:`/boot` 中包含一对冻结的 `vmlinuz-artix-rescue` + `initramfs-artix-rescue.img`,pacman 不会触及它们。GRUB、rEFInd 和 Limine 中的 *System Rollback* 条目正是加载这对文件 —— 因此即使更新破坏了内核或 initramfs, 快照选择器仍然可以启动(旁边还有常规的 *rescue kernel* 条目 —— 在备用内核上 启动而无需任何回滚)。这对文件仅在成功正常启动后更新:服务 `artix-rescue-sync` 会在运行时间 30 秒后触发,并首先验证当前运行的正是活动内核(与 `/usr/lib/modules/$(uname -r)/vmlinuz` 进行逐字节比较),因此损坏的内核永远不会污染副本。而在回滚之后立即, 一次性的 `artix-rollback-fixup` 会自动使 `/boot` 与恢复的系统保持一致:从快照的 `/usr/lib/modules` 恢复内核,重新构建 initramfs,更新 GRUB 菜单并冻结新的备用对。 ## 📀 ISO 配置文件 (`iso-profile/`, 用于 artools `buildiso`) - `Packages-Root` / `Packages-Live` —— 用于 live 镜像的包(仅限 dinit)。 - `profile.conf` —— live 会话的自动登录/显示管理器。 - `live-overlay/usr/bin/installer-launch` —— 在 tty1 上为 TUI 提供真正的控制终端 (`setsid -c`),并在失败时提供备用 shell。 - `live-overlay/etc/dinit.d/installer.conf` —— 取代 tty1 上的 getty 的安装程序自动 启动服务。 - `grub-overrides/loopback.cfg` —— 直接启动到安装程序。 将编译好的二进制文件放入 `live-overlay/usr/bin/artix-installer`,然后 执行 `sudo buildiso -p `。 ## 🗂️ 项目结构 ``` installer/ Сирці Rust (TUI на ratatui + логіка встановлення) src/app.rs модель стану + конфіг src/event.rs глобальна обробка клавіш / навігація src/main.rs точка входу + «графічна» оболонка інсталятора src/screens/ по модулю на кожен крок майстра src/system/ диск, runner (PTY), план встановлення, пакунки, відновлення src/assets/ вбудовані конфіги (kitty, fastfetch, waybar, wofi, pinnacle) i18n/ рядки інтерфейсу en.toml / uk.toml iso-profile/ профіль artools buildiso + накладка живого образу screenshots/ знімки екрана для README (15 кроків майстра) ``` ## 📸 屏幕截图 完整的向导流程 —— 所有 **15 个步骤**。界面支持双语(乌克兰语/英语);以下截图 为乌克兰语界面。 **第 1/15 步 —— 语言。** 界面语言和未来系统的语言。 ![Step 1 — Language](https://static.pigsec.cn/wp-content/uploads/repos/cas/0c/0c856050dfa08f0865030e7b7caca125626b97c50021443c4a35f96bcf5b0fdf.png) **第 2/15 步 —— 时区。** 搜索和选择时区。 ![Step 2 — Timezone](https://static.pigsec.cn/wp-content/uploads/repos/cas/cf/cf099931ad31722bdc9ba6ffa2af1c9e2e29e246698247413a54a47a3dd2be51.png) **第 3/15 步 —— 网络。** 跳过(有线连接)或扫描 Wi-Fi:选择适配器、网络并输入密码。 ![Step 3 — Network](https://static.pigsec.cn/wp-content/uploads/repos/cas/b8/b8e7fe0eaeea78ae86da8d8c96ff60cacd260cbdac02dcb6b06f4ef9a2ddddb8.png) **第 4/15 步 —— 键盘布局。** 带有过滤器的键盘布局多选;第一个标记的成为主布局。 ![Step 4 — Keyboard Layout](https://static.pigsec.cn/wp-content/uploads/repos/cas/af/afaec8eba0ecbd24be8c90c56fb995b66252968d4612b222ccb8e5cd4aea2078.png) **第 5/15 步 —— 内核。** Linux、Linux Zen、Linux Hardened 或 Linux LTS。 ![Step 5 — Kernel](https://static.pigsec.cn/wp-content/uploads/repos/cas/df/df26aa548903d0766580a8f5b06c01c3b2fc48378e251e0e10ed8cc30d47a478.png) **第 6/15 步 —— 图形环境。** 桌面环境多选、会话切换 (Wayland/X11) 以及登录界面选择。 ![Step 6 — Desktop Environment](https://static.pigsec.cn/wp-content/uploads/repos/cas/f6/f65d714fe5a7e2e57a7ff81d108ce432187e4743f5d681842a7585305ddb9343.png) **第 7/15 步 —— 额外包。** 显卡驱动 + 搜索并选择流行软件包。 ![Step 7 — Additional Packages](https://static.pigsec.cn/wp-content/uploads/repos/cas/ac/ac3e6689df0564ecedd41b8403e99cccfaa8b860bcf805e4a69501abe00eca72.png) **第 8/15 步 —— AUR 包。** 在 AUR 中搜索和推荐包(通过 paru 构建)。 ![Step 8 — AUR Packages](https://static.pigsec.cn/wp-content/uploads/repos/cas/9c/9c5e382097d1d9eb31aaf6a8d64445cb707102f52588856f6f4de53dc1c754e1.png) **第 9/15 步 —— 磁盘和分区。** UEFI/BIOS、磁盘选择、SWAP 分区、根文件系统。 ![Step 9 — Disk and Partitions](https://static.pigsec.cn/wp-content/uploads/repos/cas/e6/e65986ffed815e8b0503c16343b3ebe7eed725c863c8d652db3ba71ac4e29eb0.png) **第 10/15 步 —— 引导加载程序和加密。** GRUB / rEFInd / Limine / EFISTUB、os-prober、 UEFI 条目名称、LUKS 加密。 ![Step 10 — Bootloader and Encryption](https://static.pigsec.cn/wp-content/uploads/repos/cas/8f/8fba7c748ec38d3295c17f0d80655efc410e5811af93a2ba83d6703d805a2cae.png) **第 11/15 步 —— 额外磁盘。** 挂载其他磁盘和现有分区(例如 Windows NTFS — 保留数据)。 ![Step 11 — Additional Disks](https://static.pigsec.cn/wp-content/uploads/repos/cas/35/35272d16925d922f5a44ec951e2b2c7d73d8eba38bcb4bfd5806182ba82d4dd9.png) **第 12/15 步 —— 账户。** 计算机名称、用户和密码;账户模式。 ![Step 12 — Accounts](https://static.pigsec.cn/wp-content/uploads/repos/cas/cd/cd5627573d2fd4443dd4fef87153831f0ee5b8a7e31c886bdc34862664130c18.png) **第 13/15 步 —— 安装选项。** Sudo 密码、Chaotic-AUR 仓库、镜像优化。 ![Step 13 — Installation Options](https://static.pigsec.cn/wp-content/uploads/repos/cas/05/0553e1c8c11c9e7f2b05ee82309000e0ccd71f849be8aae226c51cadfdf7d652.png) **第 14/15 步 —— 检查并安装。** 开始前的所有选择摘要。 ![Step 14 — Review and Install](https://static.pigsec.cn/wp-content/uploads/repos/cas/9b/9b9f5df1d2824c3597e9a30efa4c795c01b7d266363630aecb73303e29957c8d.png) **第 15/15 步 —— 完成。** 为乌克兰国防捐款的二维码以及选项:重启、关机或进入 安装好的系统进行手动操作。 ![Step 15 — Finish](https://static.pigsec.cn/wp-content/uploads/repos/cas/de/de7d4b02b088f6bd90d605cc28eb4bf7f11abfddbea737a33b535f035a154519.png) ## 📄 许可证 该项目在 **Apache 2.0** 许可证下分发 —— 完整文本请参见文件 [`LICENSE`](LICENSE)。
标签:Artix Linux, Linux安装器, ratatui, Rust, TUI, 可视化界面, 系统工具, 网络流量审计, 通知系统