☰
老Time Capsule开机自启Samba:TimeCapsuleSMB flash Boot Hook刷机安全指南与回滚方案
2026/10/14 16:17:13 网站建设 项目流程

【免费下载链接】TimeCapsuleSMB

Hacking the Apple AirPort Time Capsule to run modern Samba

项目地址:https://gitcode.com/gh_mirrors/ti/TimeCapsuleSMB
点击查看免费下载

还在为老 Time Capsule 每次重启都要手动启动 Samba 而烦恼?TimeCapsuleSMB 的 flash boot hook 刷机可以让 1–4 代 Time Capsule 实现 Samba 开机自启。本文用通俗语言讲清 Boot Hook 刷机原理、安全预检步骤,以及flash --restore回滚方案,让你放心刷、随时能退。

为什么老 Time Capsule 重启后 Samba 会失效?

TimeCapsuleSMB 把一套现代版 Samba 跑在 Time Capsule 上,让 macOS 27+ 也能用 Time Machine 备份(详见 README.md)。其中:

  • Gen 5(NetBSD 6)设备:开机自动启动 Samba,部署完基本不用再管
  • Gen 1–4(NetBSD 4)设备:原厂固件不会持久化引导钩子,每次重启后 Samba 都不会自启,需要手动执行tcapsule activate

如果不想每次重启都手动激活,就可以用flash boot hook 刷机:在固件里补一个小小的启动钩子,让设备每次开机自动执行/mnt/Flash/rc.local,进而拉起 Samba。

⚠️ 注意:这是整个安装流程中唯一有风险的步骤——工具会先自动备份 Flash,但若刷机过程中设备断电,理论上存在变砖风险(见 FAQ.md)。下面这些安全机制就是为把风险降到最低的。

Boot Hook 刷机原理:只动一个固件银行

Time Capsule 的 Flash 里有两个固件银行(primary 主银行 / secondary 备份银行)。TimeCapsuleSMB 的刷机遵循一条铁律:每次只改写其中一个银行,另一个保持原样,写完后立刻读回整块银行做 SHA-256 校验。

  • patch(刷入 Boot Hook):只写入主银行,且钩子极小,作用仅仅是每次启动时运行 rc.local,由它后台拉起 boot.sh,最终启动 Samba 服务管理器
  • restore(回滚):只把选中的活动银行重写为 Apple 官方固件

完整的写前校验与写后验证逻辑在 flash_workflow.py 中实现,命令行入口在 flash.py。

刷机前必备步骤:备份 Flash 与预检

直接跳过备份就刷写,是把风险放大十倍。标准流程分三步:

  1. 备份:先执行tcapsule flash,把两个固件银行的完整镜像 + 清单(大小、SHA-256、页脚校验和)存到本地 Mac/Linux 上
  2. 预检(Plan):执行tcapsule flash --patch前,工具会检查「两个银行是否都是有效备份」「主银行是否为活动候选固件」,任一不通过就会拒绝写入并说明原因
  3. 写入(Write):确认预检通过后才会真正写 Flash,写完自动读回比对,校验不通过即报错

如果你只想先看看会发生什么,可以加--dry-run --json查看机器可读的执行计划而不改动设备。

一键安装 Boot Hook:macOS 应用与命令行两种方式

macOS 图形界面(推荐新手)

在应用的「维护」页找到Persistent NetBSD4 Boot Hook区块(界面源码:FlashBootHookView.swift),按按钮顺序操作即可:

  1. 点击Back Up and Inspect(备份并检查)
  2. 点击Plan Patch(预检能否刷入)
  3. 预检通过后点击Write Patch(写入 Boot Hook)
  4. 按提示拔掉电源等待 10 秒再插回(刷机成功后工具无法远程重启设备,需手动断电重启)
  5. 等几分钟设备启动完成后,运行 Checkup 体检确认 Samba 已随开机自启

Python 命令行方式

.venv/bin/tcapsule flash # 第 1 步:备份 Flash .venv/bin/tcapsule flash --patch # 第 2 步:预检 + 写入 Boot Hook # 拔电 10 秒后重新通电,等待设备启动 .venv/bin/tcapsule doctor # 第 3 步:体检验证

如果预检因「备份银行无效」被拒绝,先用tcapsule flash --restore重写备份银行再刷;确实需要强制写入时,命令行支持--force(不推荐,除非你已确认备份状态)。

安全机制:这套刷机为什么相对可靠?

翻读 flash_workflow.py 能看到几层硬核保护:

防护说明
双银行备份校验patch/restore 前都要求两个银行均为有效备份,否则直接拒绝
单银行写入永远只写一个银行,另一个银行原样保留,天然留了退路
读回验证写入后整块读回,逐字节比对 + 比对 ACPd 自身校验和(cks1/cks2)
页脚最后写入备份银行重写时页脚校验和最后落盘;中途断电会留下「空页脚」,bootloader 和 ACPd 都会安全跳过,而不是启动半截固件
主银行零触碰重写备份银行时,工具会确认主银行校验和(cks1)在操作前后完全一致
只支持验证过的硬件备份银行重写仅开放给已验证的 syAP(106/109/113/116,Kirkwood/Orion 内核)

🔌 唯一无法软件兜底的场景:写主银行过程中整机断电。所以刷写时别碰插线板开关,能接 UPS 更好。

回滚方案:flash --restore 一键恢复 Apple 原厂固件

刷了 Boot Hook 后悔了?设备行为异常?回滚路径是官方支持的:

.venv/bin/tcapsule flash --restore # 用 Apple 官方固件重写活动银行 .venv/bin/tcapsule flash --restore --reboot # 需要时追加软件重启 .venv/bin/tcapsule flash --check-apple # 验证固件已与 Apple 官方镜像一致

回滚时的行为细节:

  • 固件默认从Apple 官方目录下载匹配你设备型号的版本(也可指定本地模板文件)
  • 若设备当前只有一个银行通过活动选择,restore 就重写它;两个都通过时优先选择主银行
  • 若只有备份银行损坏,restore 会先重写备份银行(不碰主银行、无需重启),之后再执行 patch 即可
  • 想彻底恢复出厂干净状态:tcapsule uninstall移除托管文件并重启即可

另外请记住:本地 Mac 上那份tcapsule flash备份是最终保险——它记录了两块银行的原始镜像与校验和,任何情况下都可以据此比对与追溯。

常见问题速查

Q:刷完 Boot Hook 需要做什么?拔掉电源 10 秒再插上(工具不能远程重启),等几分钟启动,然后跑tcapsule doctor确认 Samba、Bonjour、NBNS 全部正常。

Q:部署/重启时设备自己重置了,数据还在吗?硬盘数据是安全的,只有 AirPort 配置(WiFi 名称、密码等)会被重置,重新在 AirPort Utility 里配置一次即可(详见 README.md)。

Q:刷机后 Samba 还是没自启?先检查/mnt/Flash/rc.local与boot.sh是否随 deploy 部署到位,再跑tcapsule doctor看具体哪一环断了;仍不行可用tcapsule activate手动拉起定位问题。

Q:我不刷机可以吗?可以。Gen 1–4 设备不刷 Boot Hook 也能用,只是每次重启后要手动执行一次tcapsule activate。

小结

一句话总结安全刷机路线:先flash备份 → 预检通过再--patch写入 → 断电重启验证 → 后悔了就--restore回滚。TimeCapsuleSMB 的 Boot Hook 刷机只改单个固件银行、全程备份加读回校验,配合本文的回滚方案,完全可以放心让手里的老 Time Capsule 重获新生。

【免费下载链接】TimeCapsuleSMB

Hacking the Apple AirPort Time Capsule to run modern Samba

项目地址:https://gitcode.com/gh_mirrors/ti/TimeCapsuleSMB
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询