Repository navigation
Releases: AyaseEli-Bing/Mac-Arch-Installer
Release list
v1.4.0
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 |
许可证
v1.3.0
v1.2.2
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 -n7/7、py_compile2/2、markdownlint 0 问题,全部通过。
📜 许可证
v1.2.1
v1.2.0
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 项失败。
许可证
v1.1.0 — 虚拟机网络能力增强
v1.1.0 — 虚拟机网络能力增强
本版本聚焦一个实际痛点:让虚拟机也能访问宿主机访问得了的站点。
新增内容
1. arch-install/proxy-forward.py — 端口转发工具
宿主机的本地代理通常只监听 127.0.0.1,虚拟机无法直接使用。
本工具在虚拟网段上开一个端口,把流量原样转发到宿主机代理,
使虚拟机可以复用同一条出网通路。
实现要点:纯 TCP 字节转发,不需要理解 HTTP 协议——
HTTP 代理的 HTTPS 请求使用 CONNECT 方法建立隧道,隧道建立后即为裸 TCP 流,
字节级转发天然支持。
2. 虚拟机网络配置.md — 完整排查文档
记录一个真实案例:虚拟机无法访问 GitHub,而宿主机一切正常。
成因是三层因素叠加,缺一层都不会表现出这个问题:
- 宿主机
/etc/hosts把github.com等指向127.0.0.1 - 宿主机依赖本地代理出网,而该代理只监听回环地址
- 虚拟机的 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 |
许可证
v1.0.0 — 首个正式版本
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 |