macOS 的 root 是 Unix 管理员账户;SIP 与签名系统卷是另两层平台保护。BlueStacks 或 Android Emulator 里的 root 又属于虚拟来宾,既不会 Root Mac,也不会 Root USB 连接的真机。本篇只做只读边界盘点,不启用 macOS root user、不关闭 SIP/SSV,也不运行模拟器 Root 脚本。
你会完成什么#
- 记录 Mac 型号架构、macOS 版本、当前 UID 与 sudo 授权范围。
- 读取 SIP 和 Gatekeeper 状态,不修改它们。
- 用
adb devices -l分辨 emulator、网络设备和 USB 真机。 - 为一个明确 serial 读取 guest 型号、build 与 shell UID。
- 画出 host → guest → app sandbox 三层,并写下未来变更的快照/停止点。
先看结论#
| 层或术语 | 保护/控制对象 | 它不代表什么 |
|---|---|---|
macOS root / sudo | host 上的 Unix 进程身份 | SIP/SSV 已关闭或 Android 已 Root |
| SIP | 限制包括 root 在内的进程修改受保护部分 | 普通文件权限或来宾状态 |
| Signed System Volume | 验证系统卷内容完整性 | Android 模拟器虚拟磁盘 |
| Gatekeeper/notarization | 评估下载软件来源、签名和策略 | 代码绝对安全 |
emulator guest su | 某个虚拟 Android 实例内部权限 | host Mac 或 USB 真机的权限 |
心智模型#
macOS host:当前用户 → sudo/root user ──仍受 SIP / SSV / Gatekeeper 等层约束
└─ Android emulator/BlueStacks guest:自己的 system/data/boot 与 shell UID
└─ Android app sandbox:每个 App 的独立 UID
USB 真机是另一台目标;必须用 ADB serial 明确选择,权限不会跨层传播
工具清单#
| 工具/功能 | 角色 | 什么时候用 | 来源与注意 |
|---|---|---|---|
sw_vers、uname -m | 识别 macOS 版本与架构 | 任何桌面教程第一步 | Intel 与 Apple silicon 步骤不能混用 |
id、sudo -l | 观察 host 身份与允许的管理动作 | 权限诊断 | 不启用长期 root user,不用 sudo 启动未知 App |
csrutil status | 读取 SIP 状态 | 判断 host 保护基线 | 本篇不运行 disable;关闭会降低保护 |
| Gatekeeper / notarization | 校验下载 App 的策略层 | 安装软件前 | 有签名不等于无漏洞或无恶意行为 |
adb devices -l | 枚举并标识 Android transports | 同时有模拟器/真机时 | 每条后续命令都加 -s <serial> |
root-bluestacks-air | 目录中的 guest 修改案例 | 仅用于辨识名字 | 第三方脚本可能改虚拟磁盘,不在本篇执行 |
项目全景:macOS 与桌面系统的 12 个项目,一个不漏#
12 个项目覆盖 macOS 系统修改、NixOS/ZFS 根文件系统、桌面安全工具、Android 上的 Linux 桌面,以及数学和游戏工具同名项。主题应是先识别“root”所处的平台层。
| 技术路线 | 项目数 | 处理等级 | 在主题任务中的位置 |
|---|---|---|---|
| macOS 系统与应用特权修改 | 4 | 候选路线 | 围绕旧网卡兼容、可写系统根、远程保存和 BlueStacks Air,讲清 SIP/SSV、备份和系统升级回归测试。 |
| NixOS、短暂根与持久化 | 3 | 候选路线 | 用 flakes、BTRFS root 和 impermanence 解释声明式系统、短暂根目录与显式持久化清单。 |
| ZFS root 与服务器部署 | 1 | 候选路线 | 把 Hetzner VPS 的 ZFS root 安装放进可恢复部署路线,要求先验证目标盘、快照、引导器和远程控制台。 |
| 桌面文件系统蜜罐与无特权运行 | 1 | 候选路线 | 以 canary 说明 root 与非 root 挂载的威胁面、假秘密文件的告警验证和卸载清理。 |
| Android 上的无 Root Linux 桌面 | 1 | 候选路线 | 单列 AndroidLinux-GPU 一类跨平台方案,解释图形栈、容器/用户空间边界和“无需 Root”不等于原生桌面驱动。 |
| 游戏、几何与其他同名项目 | 2 | 边界复核 | 对 mod 管理器的 Root Builder、碰撞检测的 root parity 等剩余条目逐项解释术语,不暗示系统权限能力。 |
1. macOS 系统与应用特权修改 · 4#
围绕旧网卡兼容、可写系统根、远程保存和 BlueStacks Air,讲清 SIP/SSV、备份和系统升级回归测试。
本组共 4 项:4 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| hanreev/root-bluestacks-air | 主题用途:将 hanreev/root-bluestacks-air 纳入「macOS 系统与应用特权修改」候选路线,根据 Shell 核对功能、平台与版本适配。 上游自述(保留原文):Root BlueStacks Air macOS | 未归档源项目 · ★ 207 · 协议未声明 · 2025-12-05。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
| 0xFireWolf/AppleBCMWLANCompanion | 主题用途:将 0xFireWolf/AppleBCMWLANCompanion 纳入「macOS 系统与应用特权修改」候选路线,根据 仓库名、README 与发布记录 核对功能、平台与版本适配。 上游自述(保留原文):Revive your legacy Broadcom Wi-Fi cards on macOS Sonoma, Sequoia, and Tahoe without root patches | 未归档源项目 · ★ 137 · 协议未声明 · 2025-11-21。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
| yy0931/save-as-root | 主题用途:将 yy0931/save-as-root 纳入「macOS 系统与应用特权修改」候选路线,根据 JavaScript 核对功能、平台与版本适配。 上游自述(保留原文):Save as Root in Remote - SSH | 未归档源项目 · ★ 71 · MIT · 2025-12-13。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
| fxgst/writeable_root | 主题用途:将 fxgst/writeable_root 纳入「macOS 系统与应用特权修改」候选路线,根据 C 核对功能、平台与版本适配。 上游自述(保留原文):Make the root directory writeable on macOS Big Sur. | 未归档源项目 · ★ 45 · 协议未声明 · 2020-12-11。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
2. NixOS、短暂根与持久化 · 3#
用 flakes、BTRFS root 和 impermanence 解释声明式系统、短暂根目录与显式持久化清单。
本组共 3 项:3 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| nix-community/impermanence | 主题用途:将 nix-community/impermanence 纳入「NixOS、短暂根与持久化」候选路线,根据 home-manager · nix · nixos · Nix 核对功能、平台与版本适配。 上游自述(保留原文):Modules to help you handle persistent state on systems with ephemeral root storage (maintainer=@talyz) | 未归档源项目 · ★ 1832 · MIT · 2026-01-27。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
| n8henrie/nixos-btrfs-pi | 主题用途:将 n8henrie/nixos-btrfs-pi 纳入「NixOS、短暂根与持久化」候选路线,根据 Nix 核对功能、平台与版本适配。 上游自述(保留原文):Raspberry Pi SD card image for NixOS on BTRFS root | 未归档源项目 · ★ 49 · MIT · 2024-01-05。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
| firecat53/nixos | 主题用途:将 firecat53/nixos 纳入「NixOS、短暂根与持久化」候选路线,根据 nix · nixos · Nix 核对功能、平台与版本适配。 上游自述(保留原文):NixOS configs. Flakes, multiple machines, ZFS on root, disko. | 未归档源项目 · ★ 33 · 协议未声明 · 2026-07-19。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
3. ZFS root 与服务器部署 · 1#
把 Hetzner VPS 的 ZFS root 安装放进可恢复部署路线,要求先验证目标盘、快照、引导器和远程控制台。
本组共 1 项:1 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| terem42/zfs-hetzner-vm | 主题用途:将 terem42/zfs-hetzner-vm 纳入「ZFS root 与服务器部署」候选路线,根据 Shell 核对功能、平台与版本适配。 上游自述(保留原文):script to install Debian 10, 11, 12, 13 and Ubuntu 18, 20, 22, 24 LTS with ZFS root on Hetzner VPS | 未归档源项目 · ★ 220 · 协议未声明 · 2025-10-26。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
4. 桌面文件系统蜜罐与无特权运行 · 1#
以 canary 说明 root 与非 root 挂载的威胁面、假秘密文件的告警验证和卸载清理。
本组共 1 项:1 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| dweinstein/canary | 主题用途:将 dweinstein/canary 纳入「桌面文件系统蜜罐与无特权运行」候选路线,根据 developer-tools · filesystem · honeypot · Go 核对功能、平台与版本适配。 上游自述(保留原文):Tiny filesystem honeypot for macOS. Mounts fake secret files (.env, id_rsa, credentials.json) via WebDAV (no root) or NFS (root) — any access triggers an alert. Zero dependencies, pure Go stdlib. | 未归档源项目 · ★ 95 · GPL-3.0 · 2026-03-27。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
5. Android 上的无 Root Linux 桌面 · 1#
单列 AndroidLinux-GPU 一类跨平台方案,解释图形栈、容器/用户空间边界和“无需 Root”不等于原生桌面驱动。
本组共 1 项:1 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| AbuZar-Ansarii/AndroidLinux-GPU | 主题用途:将 AbuZar-Ansarii/AndroidLinux-GPU 纳入「Android 上的无 Root Linux 桌面」候选路线,根据 Shell 核对功能、平台与版本适配。 上游自述(保留原文):Run Linux Desktop on any Android (No Root!) | 未归档源项目 · ★ 37 · 协议未声明 · 2026-05-25。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
6. 游戏、几何与其他同名项目 · 2#
对 mod 管理器的 Root Builder、碰撞检测的 root parity 等剩余条目逐项解释术语,不暗示系统权限能力。
本组共 2 项:2 个源项目、0 个 Fork,其中 0 项已归档。它们的平台、用途或分类存在边界,只作逐项核验,不当作默认安装候选。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| SulfurNitride/Fluorine-Manager | 主题用途:将 SulfurNitride/Fluorine-Manager 作为「游戏、几何与其他同名项目」边界条目,通过 C++ 核对它实际是否属于本教程。 上游自述(保留原文):A port of MO2 in linux with NaK integration and FUSE based VFS. Comes with Root Builder support by default. | 未归档源项目 · ★ 325 · GPL-3.0 · 2026-07-16。边界条目:先核对实际平台、用途和分类理由,不作为默认安装源。 |
| Continuous-Collision-Detection/Exact-Root-Parity-CCD | 主题用途:将 Continuous-Collision-Detection/Exact-Root-Parity-CCD 作为「游戏、几何与其他同名项目」边界条目,通过 C++ 核对它实际是否属于本教程。 上游自述(保留原文):Exact floating-point implementation of root parity CCD (Wang et al. 2022) | 未归档源项目 · ★ 36 · MIT · 2022-07-24。边界条目:先核对实际平台、用途和分类理由,不作为默认安装源。 |
开始前#
使用你拥有的 Mac。若 ADB 未安装,不要为了本篇从随机下载站安装;可以完成 host 部分,并在 Android Studio 官方环境可用时再做 guest 部分。关闭不相关的模拟器,断开不需要的真机。在笔记中建立三列:macOS host、Android guest、Android app。命令均为只读;sudo -l 可能请求你的密码,但不会执行管理命令。
操作步骤#
1. 建立 macOS host 事实卡#
运行 sw_vers、uname -m、id、sudo -l、csrutil status 与 spctl --status,把输出按 host 列记录。不要根据“我是管理员”推断 root user 已启用;Apple 默认禁用 root user,并建议按任务使用 sudo。也不要把 SIP enabled/disabled 与普通 Unix 文件 owner 混为一个开关。
2. 对每个 ADB transport 明确命名#
若官方 ADB 已可用,运行 adb devices -l。把每个 serial、transport 类型、model/product 记录到 guest 列;emulator-5554 一类通常是模拟器,但仍以实际输出为准。若列出多台设备,绝不省略 serial。选择一个你明确拥有的测试模拟器,运行 adb -s <serial> shell getprop ro.product.model、adb -s <serial> shell getprop ro.build.fingerprint 和 adb -s <serial> shell id。不要运行 adb root 或 su。
3. 写出边界结论并保留未来回滚点#
将 host 的 id 与 guest 的 shell id 放在不同列。即使某个调试镜像的 guest shell 显示 UID 0,也只在该虚拟机内成立;Mac 的 SIP/SSV 状态和其他 serial 的物理设备未变。未来若确需改 guest,先在模拟器管理器创建快照或复制可恢复的 AVD 数据,并在命令中固定 serial;本篇不做改动,所以回滚只需关闭终端/模拟器,不删除任何虚拟磁盘。
验证#
- host 卡包含 macOS 版本、CPU 架构、UID、SIP 与 Gatekeeper 状态。
- 每个 ADB 条目都有 serial 和类型,没有把 emulator 与 USB 真机混在一起。
- 所有 guest 命令都显式使用
-s <serial>。 - 记录明确说明 guest UID 不改变 host 的 SIP/SSV 或另一台设备。
- 没有启用 root user、关闭保护、运行第三方脚本或写入虚拟磁盘。
排错#
| 现象 | 常见原因 | 安全处理 |
|---|---|---|
csrutil: command not found 或状态不可读 | 非标准环境、命令路径或系统版本差异 | 用 Apple 当前安全文档核对,不安装同名第三方工具 |
ADB 显示 unauthorized | 真机未确认 RSA 调试授权 | 核对设备屏幕和指纹;不是自己的设备就断开 |
| ADB 报 more than one device | 同时存在多个 transport | 用 adb devices -l 记录并加 -s <serial> |
guest id 不是 root | 普通 production image 的 shell 权限有限 | 这是正常结果,不运行来历不明的 root 脚本 |
老教程说必须关闭 SIP 才能写 /System | 针对旧系统或绕过平台保护 | 不照做;重新定义任务到受支持位置或官方 API |
完成清单#
- 我能区分 host root、SIP、SSV、Gatekeeper 与 guest root。
- 我记录了 macOS 版本和 Intel/Apple silicon 架构。
- 我为 ADB 命令固定了明确 serial,没有操作错设备。
- 我没有关闭平台保护或执行模拟器 Root 脚本。
- 我写下了未来 guest 修改前的快照和停止条件。