用AI辅助编程为废弃Drobo存储设备重写macOS驱动

当硬件成为"孤儿":Drobo用户的困境
当一家硬件厂商倒闭或停止支持某款产品时,那些依然运转良好的设备往往会陷入尴尬境地——硬件本身没有故障,但缺少了配套驱动和软件支持,它们就无法在新版操作系统上正常工作。Drobo正是这样一个典型案例。
Drobo曾是备受欢迎的存储解决方案品牌,以其独特的BeyondRAID技术著称,让普通用户无需专业知识就能构建具备冗余保护的存储阵列。这家公司的前身是2005年由Geoff Barrall创立的Data Robotics,其创始愿景是将企业级存储的可靠性带入消费者和小型企业市场。2011年公司更名为Drobo,巅峰时期产品线涵盖从桌面DAS(直连存储)到机架式NAS(网络附加存储)的完整阵容,累计销售超过100万台设备。然而,随着云存储的兴起和NAS市场竞争加剧(Synology、QNAP等品牌凭借更开放的生态快速崛起),Drobo的市场份额持续萎缩。2022年,公司最终宣布破产清算,留下数十万仍在使用中的设备失去了官方支持。
BeyondRAID与传统RAID(独立磁盘冗余阵列)的最大区别在于允许用户混合使用不同容量、不同品牌甚至不同转速的硬盘。
要理解BeyondRAID的创新之处,有必要了解传统RAID的工作方式。传统RAID技术有多个级别,最常见的包括RAID 0(条带化,提升性能但无冗余)、RAID 1(镜像,完全复制但空间利用率仅50%)、RAID 5(分布式奇偶校验,至少需要3块盘)和RAID 6(双重奇偶校验,可容忍两块盘同时故障)。这些级别都要求磁盘规格一致,且阵列的可用容量受限于最小容量的那块磁盘。而BeyondRAID的核心创新在于其自适应数据布局引擎,它在块级别而非磁盘级别进行数据和校验信息的分配,使得不同容量的磁盘可以充分利用各自的空间。
从技术实现角度看,BeyondRAID维护着一套复杂的元数据映射表,记录每个数据块和校验块在物理磁盘上的确切位置。与传统RAID 5/6使用固定的条带宽度和轮转模式不同,BeyondRAID的数据布局是动态计算的——系统根据各磁盘的可用空间比例来决定数据和校验信息的分配策略。例如,在一个包含2TB、4TB和8TB三块硬盘的阵列中,系统会在8TB硬盘上分配更多的数据块,同时确保校验信息的分布仍能提供单盘或双盘故障保护。这种设计的代价是元数据的复杂性远超传统RAID:元数据本身需要多重冗余保护,且任何元数据损坏都可能导致整个阵列无法读取。
当用户插入一块更大的硬盘替换旧盘时,系统会自动重新平衡数据分布以利用新增容量,整个过程对用户完全透明。
这种"傻瓜式"的体验使Drobo在摄影师、视频制作者和小型工作室中广受欢迎。然而,BeyondRAID的专有性也成为了双刃剑——一旦官方工具不可用,用户几乎无法用标准工具读取存储在Drobo中的数据。这与使用标准Linux mdadm RAID或ZFS/Btrfs等开源文件系统的设备形成了鲜明对比:后者即使设备厂商消失,用户仍然可以用任何兼容系统读取数据。
随着公司破产,其官方软件停止更新,众多Drobo用户面临着一个共同的难题:随着macOS版本的迭代,他们手中价格不菲的存储设备逐渐变成了无法访问的"砖头"。

这篇标题致敬《夺宝奇兵》的文章《Raiders of the Lost Array》,记录了一位开发者如何借助AI辅助编程(vibe-coding)为他被遗弃的Drobo设备重新编写macOS驱动的完整历程。
Vibe-coding:AI时代的驱动开发新范式
"Vibe-coding"是近期在开发者社区兴起的一个概念,指的是开发者借助大语言模型等AI工具,以一种更加直觉化、对话式的方式进行编程。这一术语由OpenAI联合创始人Andrej Karpathy在2025年初提出,他描述了一种全新的编程方式:开发者完全"顺着感觉走",将意图用自然语言描述给AI,由AI生成代码,开发者只需运行、观察结果、再用自然语言修正方向。Karpathy坦言自己在这种模式下甚至不再仔细阅读AI生成的代码,而是"看它大概对不对就行"。
这个概念迅速引发了开发者社区的热议,且形成了明显的两极分化。支持者认为它极大地降低了编程门槛,GitHub的研究数据显示,使用Copilot的开发者完成任务的速度平均提升了55%。批评者则担忧它培养了对代码缺乏理解的"表面开发者"。软件工程师Simon Willison等人指出,vibe-coding与"AI辅助编程"之间存在重要区别:后者意味着开发者仍然审查和理解每一行生成的代码,而前者则放弃了这一责任。在实践中,大多数开发者采用的是介于两者之间的方法——利用AI加速原型开发和探索,但在关键逻辑和安全敏感的部分保持人工审查。
值得注意的是,vibe-coding的有效性与任务类型高度相关。对于具有大量公开示例代码和文档的领域(如Web开发、数据处理),AI生成的代码质量通常较高。但对于小众领域——如特定硬件的驱动开发——训练数据的稀缺意味着AI更可能产生"幻觉"(hallucination),即生成看似合理但实际上不存在或不正确的API调用和代码模式。这要求开发者具备辨别AI输出质量的能力,知道何时信任、何时质疑AI的建议。
在驱动开发这样的高风险领域使用vibe-coding,恰好体现了这种方法论的极端挑战——Drobo驱动这个案例正好处于实践光谱的有趣位置:驱动开发的错误后果严重,但逆向工程的探索性又天然适合AI辅助的快速迭代。开发者不再需要从零掌握每一个技术细节,而是通过与AI协作,逐步逼近可用的解决方案。
为什么驱动开发特别适合AI辅助
驱动程序开发历来被视为软件工程中门槛最高的领域之一。它要求开发者深入理解操作系统内核机制、硬件通信协议、内存管理以及底层的数据结构。对于一个业余开发者而言,独自逆向工程一个已停产设备的通信协议几乎是不可能完成的任务。
值得注意的是,macOS的驱动架构近年经历了重大变革,进一步加大了这项工作的难度。传统上,第三方硬件驱动以内核扩展(Kernel Extension,简称kext)的形式加载到macOS内核中,拥有最高级别的系统权限。然而从macOS 11 Big Sur开始,Apple逐步推行DriverKit框架,要求第三方驱动运行在用户空间而非内核空间。
macOS的内核XNU(X is Not Unix)是一个混合内核,融合了Mach微内核的消息传递机制和BSD的POSIX兼容层。在XNU之上,IOKit提供了面向对象的设备驱动框架,使用受限的C++子集(libkern C++)来描述设备树中的驱动对象层次。IOKit的核心概念包括:IOService(所有驱动的基类)、IORegistryEntry(设备注册表条目)、IOWorkLoop(事件处理循环)和IOMemoryDescriptor(内存缓冲区抽象)。传统kext驱动直接继承IOService的子类,在内核地址空间中运行,拥有完整的硬件访问权限但也承担着导致kernel panic的风险。据Apple统计,macOS上超过90%的系统崩溃与第三方kext相关,这正是推动DriverKit诞生的直接原因。
DriverKit是Apple在WWDC 2019上正式发布的框架,它基于IOKit的概念模型但运行在用户空间的一个特殊沙盒环境中。与传统kext直接运行在XNU内核的ring 0权限级别不同,DriverKit驱动作为独立的用户态进程运行,通过IPC(进程间通信)机制与内核中的IOKit桩代码交互。这意味着即使驱动崩溃,也不会导致整个系统内核恐慌(kernel panic)。DriverKit支持USB、PCI、HID、网络、串口、音频和块存储等多种设备类别。对于块存储设备(如Drobo),开发者需要使用IOUserSCSIParallelInterfaceController或IOUserBlockStorageDevice等类来实现数据通道的管理。值得注意的是,DriverKit驱动需要通过System Extension机制安装,并且需要Apple颁发的特殊entitlement签名才能加载,这进一步增加了独立开发者的门槛。
这一转变大幅提升了系统稳定性和安全性,但也意味着旧的kext驱动可能无法在新版macOS上加载。Drobo设备的官方驱动正是基于旧的kext架构,因此在Apple收紧内核扩展策略后,这些驱动在新版macOS上完全失效。要让Drobo重新工作,开发者不仅需要逆向通信协议,还需要将驱动迁移到DriverKit这一全新的框架上,这实质上是一次完整的架构重写。
然而,AI辅助编程改变了这个局面。大语言模型在训练过程中吸收了海量的系统编程知识、协议文档和代码示例,能够帮助开发者:
- 快速理解陌生的系统API和内核编程接口
- 分析设备返回的原始数据,推断其协议结构
- 生成样板代码,减少繁琐的重复工作
- 在遇到晦涩的错误时提供调试思路
这使得原本需要专业团队数月才能完成的工作,个人开发者借助AI也有了尝试的可能。
逆向工程Drobo通信协议的挑战
为一个没有官方文档的废弃设备编写驱动,本质上是一场逆向工程的探险。开发者需要观察Drobo设备如何与主机通信,捕获数据包,分析其中的模式,然后一点点重建通信协议。
从二进制数据中寻找规律
Drobo作为一个存储阵列设备,其核心是通过特定的协议向主机报告磁盘状态、容量信息和阵列健康度。要理解这一过程的复杂性,需要了解存储设备通信的多层架构。Drobo设备通常通过USB或Thunderbolt接口连接主机,在协议层面,底层是物理接口协议(USB或Thunderbolt),中间是USB Mass Storage Class(大容量存储类)或SCSI命令集,上层则是设备厂商自定义的管理协议。
具体到USB连接的Drobo设备,完整的协议栈从下到上依次为:USB物理层(信号传输)→ USB协议层(端点管理、枚举)→ USB Mass Storage Class BBB(Bulk-Only Transport)协议 → SCSI命令层 → 厂商自定义管理命令。BBB协议定义了CBW(Command Block Wrapper,31字节)和CSW(Command Status Wrapper,13字节)的格式,将SCSI CDB封装在USB Bulk传输中。在逆向工程时,开发者通常使用Wireshark配合USBPcap(Windows)或tcpdump(macOS/Linux)来捕获USB层面的原始通信数据。通过过滤CBW中的操作码字段,可以区分标准SCSI命令和厂商自定义命令,后者通常使用0xC0以上的操作码。
SCSI(Small Computer System Interface)命令集是一套标准化的设备通信协议,最初为并行SCSI总线设计,后来被广泛移植到USB(通过USB Mass Storage Class的BBB协议——Bulk-Only Transport)、FireWire、Thunderbolt和iSCSI等多种传输层。标准SCSI命令包括READ(10)、WRITE(10)、INQUIRY、TEST UNIT READY等操作码,这些命令在T10技术委员会的SPC(SCSI Primary Commands)和SBC(SCSI Block Commands)等规范中有详细定义。标准的读写操作走SCSI通道,通常不需要特殊驱动,操作系统内置的驱动即可处理。
但Drobo的阵列管理——包括查看磁盘状态、重建阵列、监控健康度等——依赖厂商自定义的管理协议。SCSI标准预留了0xC0-0xFF的操作码范围供厂商自定义使用,即Vendor-Specific命令。Drobo正是利用这一范围来实现设备特有的管理功能,如查询阵列重建进度、获取各磁盘的SMART健康数据、配置警告阈值等。这些命令的CDB(Command Descriptor Block)格式、数据传输方向和响应数据结构完全由厂商自行定义,不会出现在任何公开标准文档中。逆向工程的核心难点正在于此:开发者需要弄清这些非标准命令的格式、参数含义和响应结构,而这些信息在没有官方文档的情况下只能通过抓包分析和反复试验来获取。
在实际的逆向过程中,开发者通常会采用以下策略:首先在旧版操作系统上运行官方管理软件并同时捕获USB通信数据;然后对比不同操作(如查看状态、开始重建等)对应的命令差异;接着通过字节级对比识别命令中的可变字段和固定字段;最后构建假设并通过主动发送命令来验证。AI在这个过程中的价值在于模式识别——当开发者将数十个捕获的数据包提供给AI时,AI可以快速发现人眼不易察觉的字节级模式,如特定偏移位置的字段总是与磁盘数量对应,或某些字节组合可能是大端序的容量值。
当官方软件不再可用后,这些信息就变成了一堆难以解读的二进制数据。借助AI工具,开发者可以将捕获到的原始数据交给模型分析,让AI帮助识别其中的字段边界、数据类型和状态标志。这种"人机协作"的逆向方式,大大降低了独立分析协议的难度。虽然AI给出的推断未必总是正确,但它提供的方向和假设,能够显著加速试错过程。
AI辅助编程的实际价值与局限性
这个案例生动展示了AI辅助编程在实际工程中的双重价值。一方面,它降低了专业领域的准入门槛,让个人开发者有能力挑战原本遥不可及的技术任务;另一方面,它也为"电子废物"问题提供了新的解题思路——当厂商放弃支持时,社区和个人有可能借助AI工具让设备焕发新生。
需要理性看待的边界
当然,vibe-coding并非万能。驱动程序运行在系统的核心层,一旦出现问题可能导致系统崩溃甚至数据丢失。AI生成的代码需要开发者具备足够的判断力去审查和验证,尤其是在涉及底层硬件操作时,盲目信任AI的输出是危险的。
在驱动开发中,常见的危险操作包括:不正确的DMA(直接内存访问)缓冲区管理可能导致内存越界写入;错误的中断处理时序可能造成死锁或数据竞争;不恰当的设备状态机管理可能在热插拔时触发未定义行为。对于存储设备驱动,风险更加具体——错误的SCSI命令可能触发设备固件的未定义行为,不正确的块地址计算可能导致写入错误的磁盘位置从而破坏数据。这些都是AI在缺乏硬件交互反馈的情况下很难准确预判的场景。
此外,逆向工程本身也涉及法律和授权的灰色地带。在不同司法管辖区,逆向工程的法律地位存在显著差异。在美国,1998年颁布的《数字千年版权法》(DMCA)原则上禁止规避技术保护措施,但其中的"互操作性"例外条款(Section 1201(f))允许为实现软件或硬件的兼容性而进行逆向工程。这一条款明确规定,合法获得计算机程序副本的个人可以对程序中的元素进行识别和分析,前提是这些元素对于实现与其他程序的互操作性是必要的,且这些信息无法通过其他途径获取。欧盟的《计算机程序法律保护指令》(2009/24/EC)同样为互操作性目的的反编译提供了法律空间。
此外,美国近年来不断推进的"维修权"(Right to Repair)立法运动也在为独立维修和兼容性开发创造更有利的法律环境。2024年,多个州通过了维修权法案,要求厂商提供维修工具和文档。在Drobo这个案例中,由于公司已破产且设备已停产,为个人所有设备编写兼容驱动的法律风险相对较低,但仍然需要注意不侵犯可能被收购方继承的知识产权。
对可持续硬件生态与维修权的启示
这个Drobo驱动复活的故事,超越了单纯的技术层面,触及了当下科技行业一个重要议题:硬件的可持续性与用户的"维修权"。
当越来越多的设备依赖厂商的云服务和专有软件才能工作时,厂商的商业决策就直接决定了这些设备的寿命。根据联合国《全球电子废物监测报告》,2022年全球产生了创纪录的6200万吨电子废物,其中只有不到四分之一得到了正式的回收处理。更令人震惊的是,电子废物的增长速度是普通城市固体废物的五倍。在这6200万吨电子废物中,含有价值约910亿美元的可回收贵金属(金、银、铜、铂等),但不当处理也释放了大量有毒物质,包括铅、汞、镉和阻燃剂,对发展中国家的回收工人和周边社区造成严重健康危害。
软件停止支持导致的"人为报废"(planned obsolescence)是电子废物增长的重要推手之一。许多硬件设备在物理上完全可以继续使用数年甚至十数年,但由于操作系统更新、云服务关闭或厂商停止提供固件更新,这些设备被迫退役。智能家居设备、网络存储设备和物联网硬件尤其容易遭遇这种"软件性死亡"。Drobo用户的困境正是这一更大问题的缩影,也解释了为什么开源驱动和社区维护对可持续科技生态至关重要。
在开源社区中,类似的"设备复活"项目并不罕见。OpenWrt为数千款路由器提供了远超厂商支持周期的固件更新;Linux内核社区维护着数量庞大的设备驱动,许多驱动在厂商停止支持后仍持续更新数年;Rockbox项目为早已停产的MP3播放器提供了功能更强大的开源固件。这些项目证明了社区驱动的硬件维护模式的可行性,而AI辅助编程的出现有望大幅降低参与门槛,使更多设备有机会获得"第二次生命"。对于面临类似困境的Drobo用户,短期内的替代方案包括迁移到基于OpenZFS的FreeNAS/TrueNAS系统,或使用Synology/QNAP等提供更开放生态的NAS设备。
面对这一挑战,各国和地区的监管机构已开始采取行动。欧盟在2024年进一步强化了其"生态设计法规"(Ecodesign Regulation),不仅要求电子产品提供更长的软件支持周期,还首次将固件和驱动更新纳入产品可持续性评估标准。法国更是在2021年推出了全球首个"可修复性指数"(Indice de réparabilité),强制要求电子产品在销售时标注其可修复程度评分,其中软件支持承诺是评分的重要维度。这些政策正在从制度层面推动硬件生态向更可持续的方向发展。
AI辅助编程为打破这种厂商依赖提供了一线希望——它让技术能力较强的社区成员有可能接管废弃产品的维护工作,延长硬件的使用寿命,减少电子垃圾的产生。
这个案例所代表的方向值得关注:在AI工具日益强大的今天,个人开发者的能力边界正在被重新定义,那些曾经只属于专业团队的技术领域,正逐渐向更广泛的群体开放。
核心要点
核心要点
核心要点
相关推荐

谷歌免费送大学生一年Gemini AI Pro权限,附申领方式
谷歌推出Gemini for Students计划,全球大学生可免费获得一年Google AI Pro/Plus权限及专属Student Hub学生中心。了解申领条件、产品功能及谷歌教育战略布局。

实测:Codex Pro隐藏性价比竟超DeepSeek 62倍杠杆
通过严格实测,将200美元ChatGPT Pro订阅的Codex额度按API费率折算,GPT-5.6每百万token仅需1.2美分,综合成本比DeepSeek V4 Pro还低。详解62倍杠杆的测算逻辑与风险提示。

AI日报:GLM赠1亿token、GPT降价20%、智能体进入飞书办公
8月22日AI行业动态汇总:ZCode赠送1亿GLM Token、OpenAI GPT API降价超20%、DeepSeek多模态模型上线、Kimi AI同事Mira入驻飞书、GPT Image 2支持透明背景,AI竞争进入价格战与多模态能力竞赛新阶段。