在老旧苹果设备上运行不受支持的高版本iOS系统

今年早些时候,我曾演示在iPod touch 3上运行iOS 6——这款设备从未获得苹果官方支持的iOS 6系统,其最高可运行版本仅为iOS 5.1.1

数月后我又发布了脚本,可生成适用于该iPod touch型号的iOS 6恢复映像

本文将阐述该项目的技术细节,需读者具备iOS内部机制的基础认知

揭秘iOS的构成要素

首先回顾iOS包含的软件组件:

  1. iBoot – 引导加载程序。针对不同场景存在4种类型:iBSS、iBEC、LLB和iBoot
  2. 内核缓存 – 将操作系统内核与内核扩展(驱动程序)整合为单一二进制数据块
  3. 设备树 – 特定设备型号使用的硬件结构化列表 + 部分定义软件行为的参数。IPSW文件中的设备树更像模板,在跳转至内核前会被iBoot深度修改
  4. 用户空间文件系统 – 纯用于系统安装的微型 恢复ramdisk ,或iOS实际安装的持久化 根文件系统
  5. 各类协处理器固件(无论位于主SoC内部或外部),如基带、Wi-Fi、蓝牙、多点触控等模块
元素周期表

iPhone 3GS 测试

iPhone 3GS 与 iPod touch 3 代同期发布(2009年),硬件架构高度相似(采用 S5L8920X SoC 与 S5L8922X )。但关键在于它确实获得了官方支持的 iOS 6 系统

在对iPod进行任何操作前,我决定先尝试用iPhone的iOS 5.1.1 iBoot及DeviceTree启动iOS 6.0,观察会出现哪些故障及具体表现

DeviceTree

最严重的问题出在DeviceTree——iOS 6新增了大量节点和属性。为实现自动化修复,我编写了一个简单的Python脚本,用于解码并计算两个设备树之间的差异。该差异结果也可应用于其他设备树。

脚本存放于 SundanceInH2A 代码库

如前所述,设备树中大量内容由iBoot在运行时填充。新增属性之一是chosen节点下的nvram-proxy-data

该属性必须包含原始NVRAM转储数据——若留空将导致内核在启动早期卡死。

针对iPod touch 3,我还需在应用至iPod 5.1.1设备树前,清理掉iPhone特有的差异内容

iBoot

本次iBoot无需重大修改,仅需常规Image3签名验证补丁、引导参数注入及debug-enabled补丁,确保内核能正确识别AMFI引导参数

关键点在于动态填充nvram-proxy-data,至少在常规启动(即非恢复模式)时如此。恢复启动可通过DeviceTree硬编码随机NVRAM值实现,但常规启动若触发同步机制,会用随机值覆盖实际NVRAM数据

我的实现方式是将UpdateDeviceTree()调用替换为自定义函数:该函数既调用真实的UpdateDeviceTree(),同时填充实际的nvram-proxy-datarandom-seed(后者通常无关紧要)

针对引导参数,我始终添加amfi=0xff禁用代码签名,这已是标准做法

请注意其他iBoot+内核组合可能需要更多修改——若尝试后仍无法运行,建议检查设备树差异(包括初始模板和iBoot填充方式),以及iBoot传递给内核的boot_args结构体(注意区分boot-args字符串与boot_args结构体,两者不同)

内核缓存

这是最复杂的部分。iPod touch 3 虽未正式获得 iOS 6 支持,但有传闻称其最初本应搭载该系统,后被苹果营销团队否决。无论如何,几乎所有内部 iOS 6 构建都包含独立的 S5L8922X 内核,甚至独立的 kexts 驱动(包括 iPod touch 3 专属驱动)。(包括专为iPod touch 3设计的版本)

关键在于如何同时加载所有组件。我最初的构想是效仿早期Mac OS X的做法——在引导层级动态加载所有扩展程序。简而言之,我的策略如下:

  1. 在iBoot环境中,从文件系统加载所有扩展程序——包含二进制文件本身及Info.plist
  2. 将它们布局在内存中,并在DeviceTree的chosen/memory-map节点添加对应条目
  3. 启动独立内核,由其自动识别并加载这些扩展

令人沮丧的结果:

panic(cpu 0 caller 0x802e5223): “kern_return_t kxld_link_file(KXLDContext *, u_char *, u_long, const char *, void *, KXLDDependency *, u_int, u_char **, kxld_addr_t *) (com.apple.kec.corecrypto) 在内核中调用时缺少kxld支持”

内核具备识别这些文件的全部代码,但缺乏实际链接功能…

粘合预链接内核缓存

看来创建合法的内核缓存终究是唯一途径。我原本正想象着编写软件解析并应用LINKEDIT等指令的种种噩梦,但突然灵光乍现!Mac OS X(苹果硅时代之前)不也是通过某种方式生成这类内核缓存的吗?如果我们借鉴这种逻辑来构建iOS内核缓存呢?

kcgen 
    -c output.bin 
    $(cat n18.10A403.kextlist | sed ‘s/^/--bundle-id /’) 
    -kernel kernels_kexts_10A63970m/mach.development.s5l8922x 
    -arch armv7 
    -all-personalities 
    -strip-symbols 
    -uncompressed 
    -- 
    kernels_kexts_10A63970m/Extensions

我使用了来自内部Sierra构建的/usr/local/bin/kcgen(可在线搜索“Phoenix A1708.dmg”获取),但似乎最新的macOS kextcache也能实现(默认已包含)

以下是选项说明:

  • -c output.bin – 输出文件,用于写入生成的kernelcache
  • $(cat n18.10A403.kextlist | sed ‘s/^/--bundle-id /’) – 此特殊表达式会在n18.10A403.kextlist文件的每行末尾追加--bundle-id。用于指定需包含的扩展模块。列表生成方法详见下文
  • -arch armv7 – 仅构建 armv7 架构的内核片段
  • -all-personalities – 至关重要的选项,防止移除 无关 的 IOKit 个性化设置。“无关”指“与当前设备无关”,意味着所有与 iPod touch 3 相关的 内容都将被移除
  • -strip-symbols – 移除冗余符号。理论上可省略此参数,但建议保留以缩小最终内核缓存体积
  • -uncompressed – 禁用压缩。因后续需微调参数,压缩操作终将重新执行
  • -- 表示后续参数将指向用于获取扩展程序的目录路径
  • kernels_kexts_10A63970m/Extensions 是包含扩展程序的文件夹路径

需要处理的小细节是移除胖头文件。由于某些原因,它会生成单切片的胖 Mach-O 格式,iBoot 不支持此格式,因此需进行剥离:

lipo -thin armv7 output.bin -o output.thin.bin

内核缓存现已准备就绪!只需压缩并封装至Image3容器即可

关于扩展列表

再次对比iPhone 3GS的iOS 5.1.1与6.0版本——部分扩展被新增,部分被移除,部分更改了包标识符,部分对iPod touch 3无关紧要

切记同时包含伪扩展!

示例可查阅 SundanceInH2A 代码库

关于IOKit特性

此案例中需修改Wi-Fi扩展的Info.plist文件。示例文件如常存放于仓库

恢复ramdisk文件系统

此处操作相当规范。我按惯例修改了asr,同时将options.n88.plist重命名为options.n18.plist以确保分区布局正确

但还需安装iBoot漏洞利用程序。为此我重写了rc.boot二进制文件:

  1. 重新挂载ramdisk并设置umask值,完全复刻原始行为
  2. 调用restored_external时添加-server参数,避免恢复完成后重启
  3. 若恢复成功,则创建第三个分区,写入漏洞利用程序并将boot-partition设为2
  4. 重启设备

我的实现方案在哪里?没错,就在代码库

根文件系统

此部分需大量修改:

  1. 添加匹配SpringBoard硬件特性的plist文件(本例为/System/Library/CoreServices/SpringBoard.app/N18AP.plist)
    • 以iOS 5.1.1版本为基础,补充iOS 6特有功能
    • 通过合并iPod touch 3 iOS 5.1.1与iPod touch 4 6.x版布局,尽可能保留原始主屏幕图标排序
  2. 添加多点触控及Wi-Fi固件
    • 采用5.1.1版本固件
  3. 添加蓝牙固件及脚本
    • 此部分较为复杂,因所有配置均硬编码在/usr/sbin/BlueTool
    • 幸而可通过/etc/bluetool目录下的文件覆盖配置——请参考我的代码示例
    • 我从5.1.1版BlueTool中提取了固件与脚本
  4. FairPlay 守护进程仅限于N88AP(iPhone 3GS)
    • 其LaunchDaemon plist文件中存在LimitLoadToHardware键值
    • 但若直接移除此键值,即可在iPod touch 3上运行
    • 此项至关重要,否则无法通过苹果服务器激活设备
    • 在iOS 6.1+系统中此技巧更难实现,因其从签名缓存加载LaunchDaemons。但仍可通过多种方式绕过——例如修改launchd或使用launchctl强制加载其他plist文件
  5. DYLD共享缓存补丁
    1. 产品ID映射补丁
      • iOS 6引入了以长字节序列形式存在的“产品ID”概念
      • 该ID由iBoot填入DeviceTree的product节点(该节点此前甚至不存在)
      • 我将 iPhone 3GS 的值直接硬编码到 DeviceTree 中(8784AE8D7066B0F0136BE91DCFE632A436FFD6FB)
      • 此标识符还存在简短形式——16 位整数——该形式在 iOS 6 之前就已存在
      • iPhone 3GS对应0x2714,iPod对应0x2715
      • MobileGestalt 框架内含长短标识映射表——我在该处将0x2714替换为0x2715
      • 相信这对iTunes等应用更友好
    2. getDeviceVariant() 修复方案
      • MobileGestalt 再次干扰了我们的工作
      • 设备变体 由字母表示(通常为“A”或“B”)
      • 该值似乎取决于具体设备使用的 Wi-Fi 收发器厂商(?)
      • iOS 6 在判定 iPod touch 3 的该值时彻底失败
      • 这会导致激活流程崩溃
      • 为修复此问题,我修改该函数使其始终返回 “A”(以 CFString 形式)
    3. 修复代码签名
      • 这比多数人想象的简单得多
      • 共享缓存文件采用与常规Mach-OS相同的签名格式
      • 由于仅涉及ad-hoc传输,只需重新计算修改页面的SHA-1哈希值并更新签名即可
      • 操作极其简单,仅需十六进制编辑器即可完成

iBoot漏洞利用

iOS 5的iBoot存在 HFS+ 文件系统驱动漏洞。我多年前曾开发过漏洞利用程序,但质量极差——简直糟糕透顶。为此项目我从零重构了该程序,使其具备确定性(希望如此…)

这个话题值得另写一篇文章详述

总结与未来计划

实现过程虽不轻松,却比最初预想的更容易

工具发布后许多人询问越狱方案。旧工具已失效,但只需修补内核并将Cydia压缩包放入文件系统即可实现。我打算稍后尝试

同年苹果还终止了另一款设备的支持——初代iPad。我很快也会着手尝试

希望本文提供的信息能助你实现更多疯狂组合,比如在iPhone 4S上运行iOS 4,或在初代iPad mini上运行iOS 5

本文文字及图片出自 Running unsupported iOS on deprecated devices

共有 117 条评论

  1. 是的,我们确实需要为苹果设备开发类似工具——像iPad Air(第一代)这样性能尚可的旧设备,仅仅因为苹果决定停止支持且禁止安装其他操作系统,就不得不沦为电子垃圾,这实在荒谬至极。Mac早已拥有 OpenCore Legacy Patcher ——https://github.com/dortania/OpenCore-Legacy-Patcher——它能让旧款甚至已停产的Mac运行新版macOS系统。

    • 有点相关…我整理了一份可在旧版iOS设备上运行的可筛选应用列表。https://cjstewart88.github.io/vintage/

    • 这恐怕收效甚微,新iOS系统在这些设备上运行会极其缓慢。

      不如允许在旧设备上安装Linux系统。但即便如此也无济于事——毕竟这是个小众需求。

      或许部分设备会流向极度贫困国家,但即便在那里,人们也能负担得起30-50美元购买全新电脑,而苹果更希望这些旧设备得到妥善回收。

    • 我刚在Mercari以25美元购入一台品相如新的iPad Air 1。处理EPUB和PDF文件表现出色。开启Wi-Fi时电池消耗明显。WebKit版本严重过时,但内核显示竟是2021年版本?我记得WebKit在2018年就停止更新了。

      • 这很合理。该iPad在2013至2018年间获得了五年重大系统更新(含浏览器升级),但苹果会在重大更新结束后至少提供两年安全补丁和关键漏洞修复。该机型最终停留在2018年发布的iOS 12系统,其安全更新周期异常长,持续至2023年。

        在那个时代,Safari通过重大更新及约半年后的.1版本更新持续新增功能,包括支持网络标准。Safari 12.1于2019年3月发布。

    • 若第三方应用开发商不再停止支持旧版操作系统,问题本不会如此严重。这才是真正扼杀设备生命力的元凶。

      用iPhone 7打开App Store,所有应用都会拒绝安装——它们要求最新系统版本,尽管这些应用在旧系统上原本运行良好。开发者们甚至在非必要时也刻意终止支持,简直是卑劣行径。

      只因你们这些开发者懒得保留旧代码实现向后兼容,我就得扔掉手机?

      • 据我所知,这其实不能全怪应用开发者。一段时间后,苹果会强制要求开发者切换到更高版本的“目标”构建才能发布更新。目前提交应用到App Store的最低目标iOS版本是iOS 18。

        此外,即便曾经存在兼容版本,苹果也只允许用户在之前购买/下载过该应用时才能下载更新。

        我认为这几乎完全是苹果的责任

        • 你混淆了目标版本与最低支持版本的概念。

          最低支持版本并无强制更新要求,两者相互独立。不过若API在弃用期后被移除,Xcode可能限制其可用性。

          你可以使用最新SDK,只要不调用新API,应用仍可部署到你设定的最低版本。

          若需使用新API,可通过可用性检查来控制调用。

          关键在于开发者总会面临抉择:既要停止在旧设备上测试,又要避免为活跃用户占比极小的系统版本维护代码分支。投资回报率变化很快。

          • Xcode偶尔会自动提升最低兼容版本,且不会报错。

            • 没错,即使使用当前最新版SDK和Xcode,仍可将iOS 15设为最低支持版本。

              • iOS 15都快四年了?支持周期简直短得离谱。(我知道设备在升级前就支持iOS 15,但周期依然太短)

              • 我们支持的版本比这更老,开发体验糟透了。

              • 关键在于这意味着你能支持回溯至iPhone 6S的设备——那可是十年前的老古董了。

          • 我认为本帖很多人混淆了SDK版本和最低支持版本的概念。

            App Store要求你关联最低SDK版本,但最低支持版本是由开发者在Xcode中独立设置的。最新Xcode版本搭配最新SDK仍可支持iOS 15设备。开发者是刻意放弃支持,或者像本帖所示那样根本不知如何操作。

        • 我在iOS 15系统上仍有部分应用定期更新。他们是怎么做到的?

          • 您的应用必须能在iOS 18上运行,但您可以通过移除功能来支持任意旧版本的iOS系统。

            • 这说法不正确,观看此视频了解原因:https://youtu.be/WXqVV8_GORE

              简而言之:

              1. 提交至App Store必须使用最新Xcode

              2. 当前Xcode仅支持少数最新版iOS SDK作为构建目标

              3. 因此无法用旧版Xcode构建提交版本,也无法用当前Xcode构建支持iOS 15等旧系统的版本。

              视频展示了一个完整的破解方案,目前可用于构建针对旧版SDK的目标,但苹果随时可能修改系统使其失效。事实上,最新iOS版本并未采用视频中展示的设备支持文件(该文件是破解的关键)。因此虽然现阶段可针对旧版iOS操作,但当iOS 26过于陈旧导致苹果禁止支持时,此破解方案将无法复活该版本。

          • 这段视频详细揭示了苹果如何刻意限制开发者更新应用而不移除旧版iOS支持,以及制作者发现的一个未公开的临时绕行方案:

            https://youtu.be/WXqVV8_GORE

      • 机制并非如此。概括来说,你需针对特定SDK版本编译应用。若想使用新功能?必须采用新版SDK。SDK本身仅支持特定范围的操作系统版本,不会追溯到最初版本。

        若你开发的应用需要调用最新硬件功能——比如开发利用最新更新的相机应用——它就无法在iOS 5上运行。这不能怪应用开发者,甚至不能怪苹果公司。投入数千小时开发资源去支持几乎无人使用的旧机型,回报率极低——这类设备用户往往更倾向于免费使用应用或服务。

        • 值得注意的是,应用商店通常会设定接受新上传应用的SDK版本范围。(以苹果应用商店为例,当前iOS应用最低要求为iOS 18[0] SDK版本,2026年4月起将升级至iOS 26[1] SDK版本)。

          某些平台(如Google Play)甚至会下架使用旧版SDK开发的应用。

          换言之,若需更新应用,必须严格遵守应用商店规定的SDK版本规则。

          [0] https://developer.apple.com/news/upcoming-requirements/?id=0

          [1] https://developer.apple.com/app-store/submitting/

          • 我讨论的不是SDK版本,而是开发者在Xcode中选择的最低支持操作系统版本。虽然App Store要求最低SDK版本,但使用该SDK版本的应用可自由支持Xcode设定的历史iOS版本,当前上限为15。

            • 我理解你的意思。我是在延续你的观点——不同SDK版本仅支持有限范围的设备,并补充说明:通过更新SDK,应用至少能支持该SDK对应的最低设备要求。

              抱歉表达不够清晰。

      • 这更多是苹果的限制而非开发者问题。即使应用存在旧版支持版本,也无法直接安装在旧款iDevice上。必须先通过旧版iTunes或同一账户的新款iDevice“购买”该应用(即使是免费应用),只有当你“拥有”该应用后,旧款iDevice才会提示安装旧版(若该版本受支持)。

      • 实际上这是App Store Connect平台的要求——上传二进制文件必须使用现代SDK,而新版SDK通常会提高最低支持的iOS版本,因此这并非总是开发者的责任。详见https://developer.apple.com/news/upcoming-requirements/?id=0

      • > 你,开发者先生

        没错,正是我这位开发者先生决定每年都要提高XCode版本/SDK版本的最低要求

    • 关于“……不允许其他操作系统在其上运行……”

      苹果如何实现这一点?

      • 通过强制要求签名固件并掌控签名密钥。

        • 即使克服了这一障碍(如checkra1n破解),或提供了引导加载程序解锁以运行未签名固件,仍需对所有驱动程序进行逆向工程。这正是为何你不会看到初代iPhone SE运行其他操作系统的原因。

          • 虽然难度极高,但至少存在可能性。参考Asahi Linux这类项目,他们就成功逆向工程了基于ARM架构的Mac驱动程序。

            • Asahi的开发始于首批M芯片MacBook发布数月后——这些后来大受欢迎的机型至今仍被大量用户使用。

              相比之下,初代iPad或更早iPhone的存量规模,恐怕难以支撑持续投入逆向工程的投入回报。

              根本解决方案在于:当设备官方停止支持后,厂商必须开放其底层架构。

              • 或者,法律上要求通用计算设备厂商提供通用软件层及配套文档,允许用户利用底层硬件(不必局限于预装操作系统,也可作为独立维护的平台,使设备脱离原有生态系统)。

                此举既能减少电子垃圾,又能让旧硬件发挥更大价值。基于该通用软件层,社区可构建跨设备维护的操作系统。

                例如我非常渴望出现“万物皆浏览器”的操作系统——仅为过时硬件提供浏览器系统。但要实现大规模应用,唯一途径是强制设备厂商提供并公开底层架构文档…

                同时必须有人论证此类法规的经济价值,即证明立法后对社会效益的提升及电子垃圾的减少。但实现可能性微乎其微,尤其在当今社会政治环境下。

              • 关键差异在于:iOS设备一旦退出商店支持,便彻底变成砖头。我们曾有第一代和第二代iPad,原本仅用于Kindle阅读和网页浏览,但苹果撤下Safari浏览器和应用商店后,它们就成了纸镇。

                • 你必须安装最新的小版本更新。

                  若App Store仍无法使用,可越狱后自行安装应用

              • 老款iPhone/iPad虽不具备MacBook的耐用性,但现售机型在硬件层面完全可能实现长久使用。

                • 十年老iPad虽无法处理任何现代任务,但若能获取电子书资源,阅读功能依然完好。若我在内部服务器搭建简易主页(天气、提醒等功能),通过未加密HTTP传输,它也能胜任。

            • 而且我相信其中很多工作成果都能复用到A系列SoC上。

              • asahi/m1n1引导程序中已有支持手机/平板的代码(需配合已破解的引导ROM使用)。

          • 实际上已存在将Android移植到iPhone硬件的方案(针对iPhone 7):https://projectsandcastle.org/

            虽然并非所有功能都正常工作,但确实有人尝试过。

    • 遗憾的是,苹果硅和Tahoe可能已对OCLP的未来造成致命打击。Dortania团队表示当前支持苹果硅几乎不可能实现。随着Tahoe更新使首批搭载T2芯片的过时英特尔机器淘汰,Dortania能否推出支持Tahoe的解决方案尚不确定。这真是令人沮丧的日子,或许很快我们就要像讨论旧款iPhone/iPad那样讨论老款Mac了。

      • 确实如此。但也有积极面——英特尔Mac支持多系统运行,这曾是极具吸引力的核心优势。ARM架构Mac彻底丧失了这项魅力(即便苹果粉丝吹捧其运行阉割版Linux的能力)。因此许多人将彻底放弃购买ARM架构Mac。这将是苹果的损失。等我旧款iPad的电池彻底报废,我打算购买解锁引导加载程序的安卓平板——我绝不会再购买侵犯用户权利的锁定设备。

        • 没错,这正是当今苹果硬件的核心问题。其品质无可挑剔(至少在内存存储需求不高时如此),但高昂售价意味着用户完全受制于苹果的长期支持政策。而苹果近期的行为表明,他们会毫不犹豫地终止支持——无论设备实际性能如何。我认为他们在这方面变得更激进,实则是为了刺激销量——毕竟对多数用户而言,技术进步其实无关紧要。若没有强制淘汰机制,很多人会无限期使用现有设备。

          购买一台昂贵设备却注定在七年内彻底淘汰(且极可能在五年时遭遇重大故障),这绝非明智之选。

          若选择同等价位的安卓设备(或Windows电脑),由于型号不同,实际体验会好得多。现实情况是,在相同配置/性能下,安卓/PC版本通常价格低廉得多。

          苹果拥趸们总在吹捧其工艺品质和生态系统,但我认为这些毫无意义(生态优势大多存在于其他平台),其设备质感远超实际品质(事实上在许多方面都相当脆弱)。

          他们正借苹果硅芯片的东风,但随着性能优势缩减,这种优势终将失去意义/影响力。

    • 我不理解这种观点。超过15年的设备中,98%要么因老化报废,要么完全过时。虽然解锁淘汰设备有其意义,但实际使用者仅占极小比例。苹果设备本就以耐用著称——作为高端品牌理应如此。

      • iPad Pro也采用过同样策略。我女儿用的就是我母亲传下来的设备(祖孙两代传承)。我给它装了保护壳防磕碰,贴了屏幕膜(虽有几处烧屏痕迹但仍可正常使用),并在摄像头处贴了胶带(麦克风应该还能用)。我还把它接入了物联网虚拟局域网。孩子主要用它看YouTube儿童频道和Disney+,平日学习日限用15分钟,周末(周五周六)限用1小时。超时需申请延长,通常我们不批准,但假期会放宽限制。设备运行依然流畅,只是电池(仍是2017年购入时的原装电池)略显疲态。关键在于:这台设备对我提到的用途是否过于强大?我认为确实如此。这个年纪的孩子(快8岁了)其实不太挑设备,480p分辨率也完全没问题,只要系统安全可靠就行(别跟我扯什么“别给孩子平板”的陈词滥调——这台设备是锁屏状态,我第一次用共享电脑还是1989年,那时和我女儿差不多大)。遗憾的是,苹果已停止为该设备提供软件更新。顺带一提,微软同样如此——他们已弃用Windows 10,而Windows 11要求TPMv2(尽管Windows主要面向台式机和笔记本,不确定是否影响Surface硬件)。我认为企业完全可以做得更好,但若他们不愿改进,就该解锁引导程序让用户自由掌控设备。既然终止支持,就该开放硬件控制权,否则就是在违反当地法律。这才是我的理想方案。

        • 我支持这样的法律。

          • 完全赞同,我也支持。关键在于苹果销售的是一个 平台 ,它被用于多种用途,通常包括运行第三方开发者的软件。若大规模销售平台设备,法律就应规定厂商必须选择:要么继续提供一定程度的软件支持,要么发布解锁工具包。厂商不应有权限将其设备实质废弃变砖,若必须采取此举,购买者应有权在该时间点获得全额退款。

      • 这才是核心问题。一台搭载64位SoC、高清以上显示屏、电池、数GB内存和存储的设备被直接送往垃圾填埋场,简直荒谬至极。

        • >关键在于:一台搭载64位SoC、高清以上显示屏、大容量电池、数GB内存和存储的设备竟被丢进垃圾填埋场,简直荒谬至极。

          这门槛并不高。现实中谁还会用搭载酷睿2双核(2006年款)的笔记本/台式机呢?

          • 我的答案可能让你觉得奇怪,但这类低性能设备其实很适合办公室工作或非IT行业。他们需要的电脑功能和15、20年前一样:写文档、做表格、盘点库存、收发邮件。

            • 不,你的想法完全合理。我认识的某人曾向我咨询,为他们新开的小公司该买什么电脑,这些电脑仅用于浏览网页、收发邮件和文字处理。我帮他们在一家店里找到了二手戴尔和惠普工作站。他们以每台75美元的价格购入三台戴尔设备(CPU+显示器+键盘+鼠标),均搭载英特尔酷睿i5处理器、16GB内存、1TB硬盘及Windows 7专业版。我们额外花费25美元购入廉价128GB固态硬盘,并在其上安装了Linux(LMDE)、火狐浏览器、LibreOffice和GNU Cash软件。(保留Windows双系统启动选项,以防他们需要Windows系统)。这已是两年前的事,当时老板非常高兴,因为我帮他节省了四分之一的IT硬件预算。最近我在Craigslist上以60美元购得一台二手惠普25英寸显示器,状态极佳且仍有一年保修期,该机型上市时的零售价约为500美元。如今电子垃圾的产生量实在惊人…

              • 这和汽车消费逻辑相同——企业偏爱全新设备,因为能享受完整保修且理论上无需维护。所以省下的400美元,最终会花在老旧硬件故障的IT支持上。

                但关键在于……旧电脑其实并不可靠。若它们能撑过过去5-10年,现在很可能仍在稳定运行,对小企业而言使用它们完全没问题。

            • > 撰写文档、制作电子表格、管理库存、收发邮件。

              嗯…Outlook早已是网页应用,其他Office套件迟早也会转向网页化。至于库存管理——要么用网页应用要么用SAP,这两者都是内存杀手。

              • 但并非所有企业都需要使用最新版微软Office。他们甚至可能完全不需要微软Office。iPad自带邮件应用、文字处理和电子表格等功能。若使用旧款PC,可继续使用旧版Office,或采用写字板加邮件客户端的组合——这些工具都相当轻量。

              • 你考虑的是大型企业,而我讨论的是印度的微型和小型企业。如今这些企业甚至不用Outlook。对他们而言,邮件就是Gmail,但使用率也在下降——印度多数商务沟通都通过WhatsApp完成!

          • 采用轻量化、高效、无冗余的软件完全可行?关键要从高效的操作系统开始

          • >>现实中谁还会用搭载酷睿2双核(2006年)的笔记本/台式机?

            直到去年我还在厨房用一台酷睿2双核Macbook Pro当笔记本,专门查食谱和看YouTube视频。运行完全没问题,直到Chrome决定不再自动更新,而我用的旧版Chrome无法使用Google同步功能。这才是它的致命伤——硬件本身完全还能用。

          • 我至今仍用运行Linux的酷睿2双核笔记本处理某些任务。

          • 几周前我还用酷睿2双核Macbook刻录CD呢(运行Linux系统)

          • Thinpkad用户/改装者应该还在用吧。

      • 因为你捏造的数据是错误的——你把真实问题(自然老化报废)和虚假问题(完全过时淘汰)混为一谈了

      • 解锁淘汰设备的举动或许有其意义,但实际使用者终究是极少数。苹果设备本就以耐用著称,作为高端品牌理应如此。

        使用率极低恰恰源于苹果极尽所能阻碍用户升级——这种做法尤其恶劣, 正因为 其设备本就经久耐用。

        (本评论由运行最新iOS系统的完美iPhone 8为您呈现。)

      • > 我不理解这点。超过15年的设备中,98%要么因老化报废,要么完全过时。虽然解锁淘汰设备有其意义,但实际使用者终究寥寥无几。尤其苹果设备本就以耐用著称,这本就是高端品牌的应有表现。

        这条评论让我脑子发晕

      • 我正用2009年的Win7电脑打字,这台机器专门用来玩老版Windows游戏…

        咦?

        • 回复“….我正用2009年的Win7电脑打字….”

          嘘…… 微软可不想让大家知道这事……

        • HN用户群体偏向于保留2009年电脑玩游戏,还想让12年前的iPad Air多用几年的人。这固然很好,但对大多数人来说根本不现实,所以我看不出这能显著减少电子垃圾。

          • 若移动设备能常规使用二十年——这完全有可能实现——将大幅减少电子垃圾。软件需求日益增长,也正是硬件更新换代的必然结果。

            • 硬件寿命超过软件实在令人遗憾。按理说应该相反才对。

            • > 若移动设备能常规使用二十年——这完全可行——将大幅减少电子垃圾。

              可惜电池技术尚未突破。即便拥有长效电池,我们仍需抗摔屏幕。更何况,即使设备采用螺丝固定便于维修,而非胶水和卡扣结构… 屏幕成本依然高昂,这使得直接升级整机往往比维修屏幕更划算。

              • 电池更换很简单。液晶屏寿命很长,我主用的台式机显示器至今已用18年。OLED屏幕确实没那么耐用,这点我承认。

                • 它这次大选投了谁?

                • > 电池更换很方便。

                  大多数手机并非如此。拆卸时总要处理胶水残留,除非极其谨慎地清除所有胶痕,否则会导致防水性能下降,更别提屏幕碎裂或暴露在空气中(损坏OLED面板)的风险。

                  > 我的主力台式机显示器

                  我们讨论的是手机。手机会摔落、被钥匙刮伤……导致手机LCD/OLED损坏的原因多如牛毛。

          • 显然你没接触过普通PC或手机用户。多数人根本不在乎是否拥有最新最好的设备。只要设备还能用,他们就会一直用到彻底报废,不管用了多久。我当技术员时见过各种老古董电脑,你根本想象不到。除非迫不得已,人们根本不关心新技术——他们主要关注文档处理、看视频、听音乐和管理照片。至于操作设备的年份,他们根本不在意。

            更重要的是,他们不愿为此掏钱。他们宁愿把钱花在真正关心的事情上:节日庆典、夜店狂欢、度假旅行、新电视、新车、高档餐厅等等。对普通非科技爱好者而言,十年不用花一分钱买电子设备就是幸福。

            • 我妈还开心地用着某款八年前的iPhone(连型号都记不清了),结果因为银行APP停止更新无法登录,被迫升级时气得不行。这简直是纯粹彻底的电子垃圾。

          • 美国平均年薪才6.6万美元。若以为人们不愿延长家人iOS设备的使用寿命,那你活在泡沫里。

            • iOS生态已成许多人的身份象征,当社会只顾着通过运营商以旧换新来提升地位时,6.6万美元的平均薪资根本无关紧要。

              • 没错,多数人看到的不是“这部手机要1099美元”,而是“我每月只需付60美元”。
                虽然我从不同意这种消费方式——我向来趁促销买解锁机——但持这种观点的人实在太少了。

            • >若以为人们不愿延长家庭iOS设备的使用寿命,那你活在泡沫里了。

              不,至少苹果设备绝大多数在达到生命周期终止前就被淘汰了。根据https://telemetrydeck.com/survey/apple/iPhone/models/数据,仅约25%用户仍在使用发布超过三年的iPhone。

              • 所以只有约3500万人?

                更多人放弃旧设备或许并非出于意愿,而是操作难度过高。核心理念在于:只要设备仍能充电且用户能接受功能限制,就应允许其持续使用至用户自愿更换。

                • >所以只有约3500万人?

                  用庞大绝对数值制造修辞效果是不诚实的,因为任何百分比乘以巨额数字都会产生惊人结果。原文主张是“那些保留2009年电脑把玩、渴望让12年iPad Air发挥更大价值的人[…]对多数人而言根本不存在”——即便绝对数量达数百万,这个结论依然成立。

        • 啊,那美好的旧时光。

        • PC生态系统是特例。二十年使用寿命很常见,但在智能手机领域十年寿命被视为天方夜谭。这完全是设计使然的一次性产品。

          • 我不确定当今的行业标准如何,但过去汽车内部每个部件都至少要达到十年使用寿命。丰田陆地巡洋舰就以每个部件最低25年寿命而闻名。我曾在日本与几位资深丰田工程师密切合作过。虽然可能实现,但这并非行业常规。

          • 我的OnePlus 5已服役八年,目前运行最新版LineageOS系统,计划继续使用相当长一段时间。

            https://en.wikipedia.org/wiki/OnePlus_5

    • 我认为这类评论多少存在对电子垃圾问题的回避心态。

      你称其为“老而有力”,但本质上更接近“老旧”。

      我们确实希望科技产品减少一次性消耗,但问题在于技术仍在快速迭代。

      过去几十年间,汽车的基本概念、整体性能和道路适应性几乎未曾改变,因此路上随处可见20-30年的老车。

      但试想:若购买2000款大众捷达意味着获得一台20马力、油耗20英里/加仑的车。这正是旧科技设备的常态。当然,你 可以 把它当作豪华版油老虎高尔夫球车使用,但真正需要这种车的人寥寥无几——他们宁可直接买辆高尔夫球车。

      即便安装精简软件,2013款iPad Air也难以实现其最初设计的使用体验。

      这台双核设备仅配备1GB内存,如今连流畅浏览网页都勉强。我们可以抱怨网页应用效率低下,但若连奶奶都因页面加载耗时半个世纪而无法从亚马逊买到拖鞋,这设备便失去了实用价值。

      当然,将其改造成服务器或智能显示屏之类设备或许可行。但让我们回到高尔夫球车比喻:当初售出的数百万台设备不可能全都转型为网络服务器或智能家居屏幕。当初为主流用途购买这些设备的人群早已转向更新产品,他们不会去寻找这类小众的次要用途。若执意将方枘强塞圆凿,恐怕非特定人群难以胜任。

      我曾使用OpenCore Legacy补丁程序。购入2012款Mac mini时,满心期待能用它运行最新版系统搭建Mac服务器。即便加装全新SSD并扩充至最大内存,运行体验仍极其迟缓。更糟的是随机出现的内核崩溃问题始终无法解决。最终我放弃Mac服务器方案转投Linux阵营,但单核性能仍无法满足应用需求。即便找到更大容量内存条,该架构也无法支持——技术已达极限。最终我转手这台设备,用更新(但仍属主流)的部件组装了新服务器。

      若考虑每瓦性能与能效,旧硬件复用的经济性更显劣势。某些设备(尤其台式机)使用15年后,确实能形成“节省电费成本”的合理主张。

      例如:假设我拥有功耗达220W的AMD FX 9590(2013年款),若换成功耗仅15W的英特尔N355嵌入式芯片,在相同线程数下性能将提升两位数百分比。虽然这是极端案例,却鲜明展示了技术变革的幅度。

      这好比我2013年的丰田车油耗突然暴涨至每加仑2英里。

      我们需要更务实地看待这些设备:它们本质上是短期持有品,近乎租赁性质。这与购买快餐的区别仅在于时间尺度——快餐用一次性包装盛装,吃完即废弃。或许最终能回收10%的材料。我们必须正视这个现实,而非幻想能彻底改变现状。

      请别误会,我并非反对维修权。设备理应配备可更换部件,并随着使用年限增加而逐步开放。它们的设计应确保在老化后仍能保持最大可用性。但同时我们也需务实:即便在最理想情境下,像2013款iPad Air这类设备最终仍只有5-10%的用户会选择重复使用,而非直接丢弃。当然这个比例已远优于1-5%的极低水平——毕竟许多iPad在电池鼓包后就被直接丢弃了。

    • 我赞同此观点。

  2. 有点跑题了,但我手头有四部iPhone 5/5s/SE(SE堪称设计巅峰和形态典范,有意见尽管来辩)闲置着,纯粹当作离线设备使用——比如保存心率监测器数据、操控运动相机、通过3.5mm接口进行语音/现场录音,这些功能我宁愿永远留在设备上 (或者那些本应开放用户控制却需要侵入性应用才能实现的功能——我的主力设备上几乎没装什么应用)。

    这些设备体积小巧,响应迅捷,在2025年依然足够强大。

    • 我也越题了。我拆掉三星Galaxy IV†的无线电模块后设备仍能正常工作。不确定iPhone是否可行,只是提出来讨论。

      †不过我没能力复原这个过程 🙂

  3. 我职业生涯起步时加入苹果,当时iOS 6和雪豹系统正处于开发阶段。这些知识我都是从头学起的。虽然如今已忘却大半,但这篇帖子让我重温了专属操作系统的术语与冷知识,令人怀念。

  4. 这些都挺酷,但能让升级到26的设备重新支持iOS 18吗?那可就太神奇了。

    • 26(Tahoe)在所有平台都存在大量初期问题,缺乏苹果版本惯有的品质与打磨。初次在Macbook和iPhone上使用时,那些显而易见的漏洞简直令人难以置信。

      • 纯粹为数据支持附议。从iPhone 4S用户至今,iOS 26是我遇过最糟糕的版本。该死的明显漏洞和缺陷多得离谱。虽然.1版本修复了部分问题,但每次打开键盘时它仍会随机向左偏移几个像素。

        真想回到那个以用户体验而非营利为导向的时代啊。

    • 恐怕得等欧盟打完官司才会允许降级系统。真想让旧手机回到iOS 16以便越狱。

    • 我本想降级又想要新机,于是买了iPhone 16而非预装iOS 18的17。iCloud数据同步顺利,况且17本就是微升级,某些方面甚至算降级。

    • 可惜不行,据我所知这些设备没有漏洞可利用

      • 好奇液态玻璃技术会不会推动用户越狱18和26系统。

        • 只盼苹果能加速用户体验更新…但他们大概率不会这么做,毕竟存在沉没成本谬误,市场和设计潮流终将追随他们。

          每次设计革新都会引发用户抵触,iOS扁平化设计问世时亦是如此。我翻了翻历史档案——幸亏HN运营多年,这种操作才可行,太棒了!

          https://news.ycombinator.com/item?id=5869121

          (随意挑选/编辑评论,毕竟我有权这么做)

          > 我读过无数历史悠久的亲苹果博主/作者的文章,他们坚称扁平化设计本质上是个错误:最强大的隐喻是将手机视为工具——我们需要拟物化设计,需要交互提示,需要精致打磨。

          > 我认为iOS 7整体比iOS 6更糟糕。系统图标简直丑得离谱;接听电话界面和计算器等设计粗糙,所有元素都透着“还差一两轮审核”的生涩感。

          > 看看他对比的iMessage界面[1]:旧版界面虽略显土气,但文字清晰可读;新版界面几乎无法辨认。iMessage的核心目标是让用户阅读文字,而非追求炫酷外观。

          > [1] https://www.flickr.com/photos/mattgemmell/9023510971/

          > 希望不止我一个人认为这会严重损害可用性。老年人能轻松操作iOS6及更早版本的原因在于:所有可点击区域都呈现为按钮样式。苹果向来不擅长吸引更“成熟”的用户群体。

          > 我在一家教老年人计算机技能的中心做志愿者。其中一门课程就是教他们如何使用iPhone。想到iOS7发布的那一刻就让我心惊:所有学员都得从头开始重新学习。

          https://news.ycombinator.com/item?id=5856398

          我确信当时读过这个讨论串,因为所有论点至今仍记忆犹新。

  5. 我认为软件和硬件都应制定“弃置软件”相关法规。比如,若你编写了代码或制造了硬件(或两者兼有),并将产品售予消费者,而后停止支持该产品但公司仍存续,则法律应强制要求你向可验证购买记录的用户提供代码和电路图。

    代码或原理图甚至不必采用自由许可证,分发仍可受限,专利依然有效等等,但程序员可以在专有代码基础上开发自己的“补丁集”——这些补丁仅限已持有代码者使用,从而延长代码寿命并增加功能。

    显然这并非完美方案,但我认为这是企业在知识产权利益、消费者权益与电子垃圾治理之间相当合理的折中方案——因为现行机制在我看来相当荒谬。没有任何自然法则能强迫我们接受计划报废。

  6. 我有一台心爱的2014款iPad Air,最新iOS版本仅支持12.5。虽然渴望更现代的浏览器,但其余软件运行良好,我每天使用6-7小时。

    我真正需要的只是浏览器。

    • 这正是计划报废的典型案例:苹果禁止任何搭载独立渲染引擎的浏览器登陆iOS——所有iOS浏览器都被 强制 使用苹果提供的浏览器引擎。因此当苹果停止更新该引擎时,所有浏览器(包括非苹果浏览器)都会随之“过时”。所有使用WebView的应用同样会陷入“过时”状态。(需注意Safari作为iOS系统捆绑组件,其更新周期完全取决于iOS系统更新周期)

      • 奇怪的是他们竟将内核更新到了2021年的版本。

        • 此类意外更新往往出于自身利益,通常是为了修补漏洞并阻止越狱行为。

  7. 有趣的文章。小修正:

        $(cat n18.10A403.kextlist | sed ‘s/^/--bundle-id /’) - 这段奇怪的表达式会在n18.10A403.kextlist文件的每行末尾追加--bundle-id。
    

    它实际上是 在行首添加 “–bundle-id ”。

  8. 可惜苹果移动设备没有类似Lineage OS的系统。

    • 责任在苹果身上,我讨厌他们锁死引导程序的做法,和其他公司一样。

  9. 真有意思。这种方法能否用于在16GB闪存的iPhone 2G上启动iPhone OS 1.0(或至少1.1.1)?

    我这台设备原生支持的最早iPhone系统是1.1.4,而1.1.1(通过紧急拨号器可轻松跳过开箱体验的最高版本)无法初始化FTL(闪存转换层),可能是因为芯片与旧款手机差异过大。

    若能重温紧急拨号激活破解将令我欣喜若狂,可惜那台特定型号的iPhone 2G已遗失,如今仅存这台16GB版本。

  10. 剥离“胖头文件”的命令其实叫“lipo”…

  11. 若强制厂商开放已停保设备的破解通道就太酷了。

  12. 此刻正用iPhone 8(已无安全更新)写这段文字,心里实在没底…

  13. 我有一台旧款iPad Air 1,能从iOS 12升级到更新系统吗?

  14. 干得漂亮。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


京ICP备12002735号