Rosetta 1 挂在内核上 —— 兼容层考古
Rosetta 1 不是用户态翻译,而是挂在内核里的兼容层;一条 sysctl 就能切换它的开关。
「原来 Rosetta 1 是这样被调用的」:内核在 exec 的时候,把 PowerPC 二进制交给 /usr/libexec/oah/translate,路径写死在 kern.exec.archhandler.powerpc 里。
关掉它也简单。先「然后可以通过 sysctl -n kern.exec.archhandler.powerpc 这个命令检查系统中是否安装了 Rosetta 1」,再「通过 sudo /usr/sbin/sysctl -w kern.exec.archhandler.powerpc=/usr/libexec/oah/RosettaNonGrata 这个命令来禁用 Rosetta」。
一条命令就能开或关。non grata 的意思是 unwelcome,不受欢迎。Rosetta 2 把这层东西挪到了用户态;Rosetta 1 在 2006 年随 Intel Mac 推出,Snow Leopard 里是可选安装,Lion 在 2011 年把它移除,Rosetta 1 在 Lion 之后没有再回来,它只活了六年;Rosetta 2 在 2020 年 WWDC 随 Apple silicon 发布,到 2024 年还在系统里。