Skip to content

Releases: AyaseEli-Bing/Mac-Arch-Installer

v1.4.0

Choose a tag to compare

@AyaseEli-Bing AyaseEli-Bing released this 22 Sep 17:13
3ab1488

v1.4.0

自 v1.3.0 以来的变更:

  • 3ab1488 feat: 新增虚拟机时钟偏差自检,双通道各测一头
  • 5a021ee docs: 补充 CHANGELOG 的 1.4.0 条目并修正版本对比链接
  • 62f2818 feat: 安装日志结构化,回传丢失从静默变为可计数
  • f32b82c chore: 忽略本地会话日志目录
  • f4e364c fix: 修正 install.sh 包名不存在的判读正则,该分支此前永不触发
  • 49ad24a feat: 开发环境清单化与镜像探活择优
  • ff1fe2b feat: 新增宿主机资源水位预检,check.sh 与 diagnose.sh 共用探测片段

下载

文件 适用平台
Mac-Arch-Installer-1.4.0.tar.gz macOS / Linux
Mac-Arch-Installer-1.4.0.zip Windows

许可证

MIT

v1.3.0

Choose a tag to compare

@AyaseEli-Bing AyaseEli-Bing released this 22 Sep 14:59
7f23d00

v1.3.0

自 v1.2.2 以来的变更:

  • 7f23d00 docs: 补充 CHANGELOG 的 1.3.0 条目并修正版本对比链接
  • b2349ce docs: 修复 GitHub 入门教程的 6 处 markdownlint 报错
  • badf6e5 docs: 新增 GitHub 零基础入门教程与 README 徽章体系指南

下载

文件 适用平台
Mac-Arch-Installer-1.3.0.tar.gz macOS / Linux
Mac-Arch-Installer-1.3.0.zip Windows

许可证

MIT

v1.2.2

Choose a tag to compare

@AyaseEli-Bing AyaseEli-Bing released this 22 Sep 12:23
932a94f

v1.2.2

本版本是对 arch-install 全部脚本与 Python 程序的一次全量代码审查后的修复版。审查发现并修复了 4 个高危、8 个中危、15 个低危/健壮性 缺陷;其中 4 个高危项均无法被 shellcheck / bash -n / py_compile 等静态检查发现(属于「语法正确但语义有偏」的逻辑问题),必须靠人工逐文件走读才能暴露。完整清单见 代码审查报告.md。

🔴 高危修复(凭据泄露与错误掩盖)

  • install.sh:收尾阶段一并删除 /root/.install-vars 与 /root/.host_url,避免明文密码残留在新系统的 root 目录。
  • install.sh:用 ${PIPESTATUS[0]} 捕获 arch-chroot 真实退出码。此前 | tail -5 让 $? 取到 tail 的 0,chroot 配置失败时仍误报 ALL DONE。
  • reset-password.sh:密码改为经 stdin 传给 chpasswd,不再拼进 bash -c 参数。此前密码会暴露在 ps / /proc/*/cmdline,且密码含单引号时引号结构被破坏,构成命令注入。
  • proxy-forward.py:连接建立后清除 socket 超时(settimeout(None))。此前 create_connection(timeout=15) 的超时会保留,导致空闲超过 15 秒的连接被静默断开(实测确认,修复后空闲 18 秒正常)。

🟡 中危修复

  • serve.py:限制请求体 1 MB(超限返回 413)、Content-Length 非法值不再抛异常、路由改为精确匹配(未知路径返回 404,此前 /key 会命中 /k)。
  • proxy-forward.py:accept() 异常区分瞬时/致命并退避避免忙等;新增并发连接上限(128)。
  • diagnose.sh:ISO 探测改为按时间取最新,与 check.sh 一致,避免两脚本结论互相矛盾。
  • release.sh:分支推送失败改为阻断发版,避免「分支未推送但 Release 已创建」的不一致。
  • install.sh:加载配置前校验属主与写权限;校验目标磁盘非光驱/回环设备。

🟢 低危与健壮性

  • check.sh / diagnose.sh:grep -qF 避免虚拟机名被当正则;端口探测在 lsof 缺失时回退 nc,避免把「工具缺失」误判为「未监听」。
  • proxy-forward.py:转发结束改为半关闭(SHUT_WR)避免截断响应;参数支持环境变量覆盖。
  • install.sh:宿主机探测失败时显式告警;pacstrap 前关闭路径名展开;修正 dd 注释。
  • reset-password.sh:校验 passwd -S 状态位,未生效则报错退出;宿主机地址支持自动探测。
  • dev-setup.sh:Go 校验库改用 gosum.io 并经 goproxy.cn 代理 sumdb。

📄 文档

  • 新增 自检功能使用教程.md;check.sh 可移植性修正(自动探测 Python 与 ISO)。

📦 下载

文件 适用平台
Mac-Arch-Installer-1.2.2.tar.gz macOS / Linux
Mac-Arch-Installer-1.2.2.zip Windows

✅ 校验

  • CI:shellcheck 0 告警(7 脚本)、bash -n 7/7、py_compile 2/2、markdownlint 0 问题,全部通过。

📜 许可证

MIT

v1.2.1

Choose a tag to compare

@AyaseEli-Bing AyaseEli-Bing released this 21 Sep 19:33

v1.2.1

自 v1.2.0 以来的变更:

  • abe1a72 fix: 修正 release.sh 中未定义变量引用

下载

文件 适用平台
Mac-Arch-Installer-1.2.1.tar.gz macOS / Linux
Mac-Arch-Installer-1.2.1.zip Windows

许可证

MIT

v1.2.0

Choose a tag to compare

@AyaseEli-Bing AyaseEli-Bing released this 21 Sep 19:32

v1.2.0 — 配置化安装与工程化配套

本次为功能扩展版本,让项目从「一次性脚本」变成可配置、可维护、可协作的工具。


新增内容

1. 配置文件驱动安装

install.sh 现在支持通过 /root/install.conf 覆盖默认配置,无需修改脚本:

配置项 默认值 说明
NEW_HOSTNAME arch-vm 主机名
NEW_TIMEZONE Asia/Shanghai 时区
NEW_USER / NEW_USER_PW arch 普通用户与密码
NEW_ROOT_PW arch root 密码
NEW_DESKTOP kde 桌面环境(见下)
NEW_DISK 空 目标磁盘,留空自动检测
NEW_CJK yes 中文字体与输入法
NEW_MIRROR_CN yes 优先国内镜像
NEW_EXTRA_PKGS 空 额外软件包

不提供配置文件时全部沿用默认值,行为与之前完全一致——向后兼容。

2. 多桌面环境支持

NEW_DESKTOP 安装内容 显示管理器
kde KDE Plasma sddm
gnome GNOME gdm
xfce XFCE lightdm
none 纯命令行 无

3. 四个配套脚本

脚本 运行位置 作用
dev-setup.sh 虚拟机内 一键安装语言工具链(Go/Python/Node/Rust/C++/Java 可选)与常用 CLI 工具,并配置国内镜像源(goproxy.cn / npmmirror / 清华 PyPI / USTC Cargo)
vm-check.sh 虚拟机内 健康巡检:系统 / 磁盘 / 服务 / 网络 / 桌面 / 输入法 / Parallels 集成,按 OK·WARN·FAIL 分级汇总,退出码 = 失败项数
diagnose.sh 宿主机 故障自诊断:逐条检测本项目实际踩过的坑,每项问题给出可执行的修复命令
release.sh 宿主机 自动发版:前置检查 → 语法校验 → 打标签 → 打包 → 推送 → 建 Release → 验证下载链接

4. 工程质量

  • GitHub Actions CI:shellcheck 静态检查 + Python 语法检查 + Markdown 文档检查 + bash 语法检查
  • CHANGELOG.md:遵循 Keep a Changelog 与语义化版本
  • CONTRIBUTING.md:贡献指南、代码规范与发版流程

修复

  • 环境配置与验证清单.md:修正 4 处代码块缺少前后空行(markdownlint MD031)
  • install.sh:修正 shellcheck SC2034(循环变量未使用)

下载

文件 适用平台
Mac-Arch-Installer-1.2.0.tar.gz macOS / Linux
Mac-Arch-Installer-1.2.0.zip Windows

解压后从 README.md 开始;想尽快跑起来就看 使用教程.md 的「步骤 1 ~ 步骤 6」。


环境验证

组件 版本
macOS 26 (Darwin 27.0)
硬件 Apple M4 (arm64)
Parallels Desktop 27.0.1
引导镜像 Archboot 2026.09.21 aarch64 ISO
发行版 Arch Linux ARM aarch64 + KDE Plasma

vm-check.sh 在真实环境中实测:13 项通过 / 1 项警告 / 0 项失败。
diagnose.sh 实测:15 项通过 / 1 项警告 / 0 项失败。

许可证

MIT

v1.1.0 — 虚拟机网络能力增强

Choose a tag to compare

@AyaseEli-Bing AyaseEli-Bing released this 21 Sep 18:56

v1.1.0 — 虚拟机网络能力增强

本版本聚焦一个实际痛点:让虚拟机也能访问宿主机访问得了的站点。


新增内容

1. arch-install/proxy-forward.py — 端口转发工具

宿主机的本地代理通常只监听 127.0.0.1,虚拟机无法直接使用。
本工具在虚拟网段上开一个端口,把流量原样转发到宿主机代理,
使虚拟机可以复用同一条出网通路。

实现要点:纯 TCP 字节转发,不需要理解 HTTP 协议——
HTTP 代理的 HTTPS 请求使用 CONNECT 方法建立隧道,隧道建立后即为裸 TCP 流,
字节级转发天然支持。

2. 虚拟机网络配置.md — 完整排查文档

记录一个真实案例:虚拟机无法访问 GitHub,而宿主机一切正常。

成因是三层因素叠加,缺一层都不会表现出这个问题:

  1. 宿主机 /etc/hosts 把 github.com 等指向 127.0.0.1
  2. 宿主机依赖本地代理出网,而该代理只监听回环地址
  3. 虚拟机的 DNS 继承了宿主机的解析结果,于是也指向 127.0.0.1

关键特征:虚拟机的报错是 after 1 ms: Could not connect——
1 毫秒就失败说明是被立即拒绝,属于名称解析层问题;真正的网络不通会是超时。

文档给出三步解法(端口转发 → 导入代理根证书 → 条件代理配置),
并说明该模式在 Docker / WSL / 其他虚拟机 场景中的对应关系。


下载说明

文件 适用平台
Mac-Arch-Installer-1.1.0.tar.gz macOS / Linux
Mac-Arch-Installer-1.1.0.zip Windows

解压后进入目录,从 README.md 开始阅读;
如果只是想尽快跑起来,直接看 使用教程.md 的「步骤 1 ~ 步骤 6」。

附件是整理过的发行包(顶层带版本目录名)。
GitHub 同时提供的 Source code 包内容相同,按需选择即可。


自 v1.0.0 以来的完整变更

变更 说明
新增 使用教程.md 逐步说明 / 功能演示 / 5 个使用场景 / 12 个 FAQ
README.md 全面重写 把教程核心呈现在介绍页,新增目录导航与鲁棒性设计表
新增 arch-install/proxy-forward.py 端口转发工具
新增 虚拟机网络配置.md 网络问题排查与解法

环境验证

组件 版本
macOS 26 (Darwin 27.0)
硬件 Apple M4 (arm64)
Parallels Desktop 27.0.1
引导镜像 Archboot 2026.09.21 aarch64 ISO
发行版 Arch Linux ARM aarch64 + KDE Plasma

许可证

MIT

v1.0.0 — 首个正式版本

Choose a tag to compare

@AyaseEli-Bing AyaseEli-Bing released this 21 Sep 18:17

Mac 虚拟机安装 Arch Linux 懒人包 v1.0.0

首个正式版本 —— 在 Apple Silicon Mac + Parallels Desktop 上自动安装 Arch Linux ARM。

为什么需要这个包:Apple Silicon 上的 Parallels 只能虚拟化 ARM64 客户机,
而 Arch Linux 官方 ISO 仅有 x86_64 版本 —— 直接下载官方镜像根本无法启动。
本项目基于 Archboot 的 aarch64 镜像
(ArchWiki 明确推荐 此方案)。


本次发布内容

文件 说明
arch-install/install.sh VM 内安装脚本:分区 → 装包 → 配置 → 写引导
arch-install/serve.py 宿主机分发服务:/i 安装脚本、/k 公钥、/r 密码重置、日志回传
arch-install/reset-password.sh 忘记密码时经 live 环境 chroot 重置(密码由使用者提供,不硬编码)
arch-install/check.sh 宿主机侧环境自检(11 项)
Arch-Linux-ARM-Parallels-安装指南.md 手工安装指引,含 archinstall 向导逐步说明
环境配置与验证清单.md 依赖清单、环境变量、构建调试、验证步骤、缺失项清单

工程上的关键处理

  • 分区工具四级降级:sgdisk → parted → sfdisk → fdisk
    (实测 Archboot 精简环境不含 parted/partprobe,且错误被静默吞掉会导致后续以完全无关的现象报错)
  • 多重断言:分区数量必须为 2、/mnt 容量须 > 10 GB,不满足立即中止
  • 引导兜底:bootctl 无法写 EFI 变量时,复制 systemd-bootaa64.efi 到 EFI/BOOT/BOOTAA64.EFI
  • 内核路径适配:ARM 的内核镜像是 /boot/Image,而非 x86 的 vmlinuz-linux
  • 宿主机地址自动探测:脚本依次尝试两个 Parallels 网段地址,无需硬编码

已验证环境

组件 版本
macOS 26 (Darwin 27.0)
硬件 Apple M4 (arm64)
Parallels Desktop 27.0.1
引导镜像 Archboot 2026.09.21 aarch64 ISO
发行版 Arch Linux ARM aarch64 + KDE Plasma

安装授权

MIT License