*11/12 更新* DMG 挂载问题与 Sandbox.kext/Seatbelt.kext 解决方案
DMG 挂载问题与 Sandbox.kext/Seatbelt.kext * 最后更新:2012 年 11 月 25 日 问题原因 在挂载磁盘映像(.DMG)时发生五国死机(内核崩溃 / Kernel Panic),通常是因为系统中的 Sandbox.kext 或 seatbelt.kext 版本与当前使用的内核(Kernel)不匹配…
- 主笔作者
-
@lanceomni
发表于 2009-01-22
- 所属专区
- Leopard 10.5
- 典藏规模与记录
- 334,965 次历史阅读 · 15 则精选技术笔记(萃取自 20 则原始回帖) · 2009-01-22 – 2012-11-26
- 参与贡献成员 (11)
- @lanceomni (7)@eMatoS (3)@oneshot (2)@pαuℓzurrr.@nfoav8or@CamEdwardo@Sokairyk@Taisto@ptesone@Thomasasz@gils
- 相关硬件参考
- SATA III & NVMe SSDs ↗ USB 3.2 Boot Flash Drives ↗ AMD Radeon GPUs (QE/CI) ↗
DMG 挂载问题 & Sandbox.kext/Seatbelt.kext
* 最后编辑于 2012 年 11 月 25 日
问题原因
在挂载磁盘映像(.DMG)期间发生的五国死机(内核崩溃 / Kernel Panic),可能是因为没有安装与当前内核(Kernel)版本相匹配的 Sandbox.kext 或 seatbelt.kext。只需将你的内核与正确编译版本的 seatbelt.kext 进行匹配,即可修正磁盘映像无法挂载的问题。在使用非原生(Non-vanilla)破解内核时,这是一个非常常见的问题。
Sandbox.kext 和 Seatbelt.kext 是做什么用的?
这两个内核扩展都是“沙盒(Sandbox)”安全机制的实现,具体介绍可参考这里:http://en.wikipedia.org/wiki/Sandbox_(computer_security ↗)。Seatbelt 是苹果早期使用的内部代号,在 10.5 Leopard 时期使用,从 10.6 Snow Leopard 开始至今更名为 Sandbox。
12.2.0 内核需要来自 10.8.0 的 Sandbox.kext (drop box.com/s/xp8p79m4rwe4vod/Sandbox.kext1080.zip)
Version N/A Build N/A Source N/A
SHA1=96ab102d51740e26d6fb278765387954b2ff2fa5
12.1.0 内核需要来自 10.8.0 的 Sandbox.kext (drop box.com/s/xp8p79m4rwe4vod/Sandbox.kext1080.zip)
Version N/A Build N/A Source N/A
SHA1=96ab102d51740e26d6fb278765387954b2ff2fa5
12.0.0 内核需要来自 10.8.0 的 Sandbox.kext (drop box.com/s/xp8p79m4rwe4vod/Sandbox.kext1080.zip)
Version N/A Build N/A Source N/A
SHA1=96ab102d51740e26d6fb278765387954b2ff2fa5
11.4.2 内核需要来自 10.7.5 的 Sandbox.kext (drop box.com/s/a87rle8xf2uitvu/Sandbox.kext1075.zip)
Version 177.8 Build 3 Source 177008000000000
SHA1=67097f28b296f3cf6f452dd2de4f86f0353411cf
11.4.0 内核需要来自 10.7.4 的 Sandbox.kext (drop box.com/s/9jcfrljqexzm96y/Sandbox.kext1074.zip)
Version 177.5 Build 11 Source 177005000000000
SHA1=639c01e5dbf243225612412b97af91d14dd085ed)
11.3.0 内核需要来自 10.7.3 的 Sandbox.kext (drop box.com/s/rrusjrh9dtfut4k/Sandbox.kext1073.zip)
Version 177.3 Build 6 Source 177003000000000
SHA1=1cdb7b14492a7448f7e7dfe117bf86661a072196
11.2.0 内核需要来自 10.7.2 的 Sandbox.kext (drop box.com/s/2ao8g03gf2haxdv/Sandbox.kext1072.zip)
Version 165.3 Build 2 Source 165003000000000
SHA1=2892f56c6f0e963bbdb9dd05a840e02cedb3e5e1
11.1.0 内核需要来自 10.7.0 的 Sandbox.kext (drop box.com/s/pnmfbrcoyfwe4mo/Sandbox.kext1070.zip)
Version N/A Build N/A Source N/A
SHA1=67097f28b296f3cf6f452dd2de4f86f0353411cf
10.8.0 内核需要来自 10.6.8 的 Sandbox.kext (drop box.com/s/rw1s1zco5aqmm0l/Sandbox.kext1068.zip)
Version 1 Build 86 Source 340100
SHA1=a4f5c98d747777781b92d12c517cdf18bc8b0692
10.7.0 内核需要来自 10.6.7 的 Sandbox.kext (drop box.com/s/ebaa3scr9ay5ir5/Sandbox.kext1067.zip)
Version 1 Build 54 Source 340100
SHA1=f406659a15d084749b9d9274466a096bc9cf4b89
10.6.0 内核需要来自 10.6.6 的 Sandbox.kext (drop box.com/s/lwbw3vbl32ei7jc/Sandbox.kext1066.zip)
Version 1 Build 13 Source 340100
SHA1=83e7e2f0882c0b0126ba8ddce8630b0a4375565f
10.5.0 内核需要来自 10.6.5 的 Sandbox.kext (drop box.com/s/bd9e91x9923hdxf/Sandbox.kext1065.zip)
Version 1 Build 9 Source 340100
SHA1=ea657bd1b40d16e14d43aa11979b6efa5d3df0dc
10.4.0 内核需要来自 10.6.4 的 Sandbox.kext (drop box.com/s/j5f4bbc0is95ktj/Sandbox.kext1064.zip)
Version 0 Build 300 Source 340000
SHA1=8ab3f051cf49387010e273f3b1eccd6f00935f8e
10.3.0 内核需要来自 10.6.0 的 Sandbox.kext
Version INSERT Build INSERT Source INSERT
SHA1=INSERT
10.2.0 内核需要来自 10.6.0 的 Sandbox.kext
Version INSERT Build INSERT Source INSERT
SHA1=INSERT
10.1.0? 内核需要来自 10.6.0 的 Sandbox.kext
Version INSERT Build INSERT Source INSERT
SHA1=INSERT
9.8.0 内核需要来自 10.5.8 的 Seatbelt.kext (drop box.com/s/5ee21mbhdws4wsf/seatbelt.kext1058.zip)
Version 107.12 Build 78 Source 1071200
SHA1=02283813a609583a6de7c7895fce22a59a09a789
9.7.0 内核需要来自 10.5.7 的 Seatbelt.kext (drop box.com/s/qf3w9v9xbbn4asr/Seatbelt.kext1057.zip)
Version 107.12 Build 63 Source 1071200
SHA1=fa50ed67f12d72c24ee28f61f1b971b0d13a407b
9.6.0 内核需要来自 10.5.6 的 Seatbelt.kext (drop box.com/s/7s9xucltiu2e3hx/seatbelt.kext1056.zip)
Version 107.10 Build 45 Source 1071100
SHA1=2e9774fd74575f438a7d18b8805fff37a189ebaa
9.5.0 内核需要来自 10.5.5 的 Seatbelt.kext (drop box.com/s/toezdlvdb78t2uf/seatbelt.kext1055.zip)
Version 107.10 Build 14 Source 1071100
SHA1=0e07c564d78b78327ee3f4c99fb96147986a04c8
如何确认当前已安装的版本
打开终端(Terminal)并输入以下命令来查看你的内核版本:
uname -a
OSX 10.8 Mountain Lion
Mountain Lion 只有一个版本的 Sandbox.kext
OSX 10.6 Snow Leopard - 10.7 Lion
检查你的 Sandbox.kext 版本:
openssl sha1 /System/Library/Extensions/Sandbox.kext/Contents/MacOS/Sandbox
OSX 10.5 Leopard
检查你的 Seatbelt.kext 版本:
openssl sha1 /System/Library/Extensions/Seatbelt.kext/Contents/MacOS/Seatbelt
将计算出的 sha1 校验值与上方的列表进行比对。此外,每个条目下方也附带了 Source Version 和 SHA1 校验值。
sha1 校验值是通过特定算法生成的哈希值(Hash),每个文件都会生成独一无二的哈希值。一旦文件被修改,其哈希值就会改变。由于内核扩展(Kext)本质上是一个文件夹,我们必须指定其中的具体文件才能计算哈希值。对于 Sandbox.kext,我选择了其中的二进制可执行文件(Binary)。
这些文件是从哪里提取的?
上方提供的文件均使用 Pacifist(可在此处下载:charles soft.com/)从苹果官方支持网站的更新包中提取。
手动安装方法
我个人更倾向于手动安装系统相关文件。这有助于加深你对系统结构的理解,清楚了解每个文件的作用、存放路径以及应当设置的权限和所有者。市面上也有许多第三方工具可以代劳。(是的,你会发现下面有些命令是重复的,多一步冗余操作可以减少很多新手提问。)
简明步骤:
将下载好的 Kext 拖到桌面(Desktop)
(请根据你的系统需要,将命令中的 "Sandbox" 替换为 "Seatbelt"。)
sudo -s
mkdir /backup/Sandbox
cd /System/Library
cp -R Extensions/Sandbox.kext /backup/Sandbox/Sandbox.kext
cp -R ~/Desktop/Sandbox.kext Extensions/Sandbox.kext
chmod -R 755 Extensions/
chown -R root:wheel Extensions/
touch Extensions/
rm -Rf Extensions.mkext
diskutil repairpermissions /
使用启动参数 -v -f 重启系统
步骤详解:
1. 获取 root 管理员权限,以便修改系统文件。
sudo -s
2. 备份现有的 Kext。首先我们在根目录下创建一个名为 "backup" 的文件夹,并在其中创建一个名为 "sandbox" 的子文件夹用来存放备份。打开终端并输入:
mkdir /backup/sandbox
3. 将工作目录切换到 /System/Library,这样可以缩短后续需要输入的命令长度。
cd /System/Library
4. 将现有的 Sandbox.kext 复制到新建的 "backup" 备份文件夹中。
cp -R Extensions/Sandbox.kext /backup/Sandbox/Sandbox.kext
5. 将桌面上的 kext 复制到系统的 Extensions 内核扩展文件夹中。
cp -R ~/Desktop/seatbelt.kext Extensions/seatbelt.kext
6. 为 Extensions 文件夹设置正确的文件所有者。
chown -R root:wheel Extensions
7. 为 Extensions 文件夹设置正确的读写权限。
chmod -R 755 Extensions
8. 使用 touch 命令更新 Extensions 文件夹的时间戳。
touch Extensions/
9. 删除内核扩展缓存,强制 OSX 使用新的 kext 重建缓存。
rm -Rf Extensions.mkext
10. 修复磁盘权限。
diskutil repairpermissions /
11. 使用启动参数 -v -f 重启系统
-v 啰嗦模式(Verbose Mode)会在开机过程中显示详细的加载信息。
-f 强制 OSX 直接从 Extensions 文件夹加载内核扩展,而不使用缓存文件。虽然我们前面已经删除了缓存文件,但加上这个参数可以双保险。
虽然还有更简短的方法,但以上步骤涵盖了所有细节,适合安装 kext 时遇到问题的朋友,同时也能顺带解决其他与权限相关的疑难杂症。
第三方安装工具
以下提供几款第三方 Kext 安装工具的链接,使用风险自负:
KextHelper mac update.com/app/mac/26865/kext-helper
KextWizard http://www.insanelymac.com/forum/topic/253395-kext-wiza… ↗
KextBeast http://tonymacx86.blogspot.com/2010/08/kextbeast-simple… ↗
Kext Drop cin dori.se
请不要就本帖内容给我发 PM(私信)提问。如有问题请直接在本帖回复,我会尽快解答。我的私信收件箱经常爆满,导致我没法正常使用私信本来的功能…
社区实测与技术补充笔记
自 20 则原始讨论回帖中萃取 15 则高价值技术回应
这篇教程太有必要了。看起来很多人根本不知道怎么使用论坛的搜索功能。
感谢 leanceomni。
这篇帖子或许应该放到其他 [How-To] 教程指南专区里。这事就交给你自己决定了(毕竟你也是版主 :))。
我也非常赞同... 写得非常清晰详尽。
我可能会把它移到那边去。我只是同时在这里和 InsanelyMac 发了帖,因为在那边几乎每天都有人就这个问题发上十几个帖子。
[编辑] 我想让它留在这个版块的显眼位置,因为你懂的,很多人遇到问题就只顾着埋头乱撞,而且似乎有“搜索功能恐惧症”,你明白我的意思吧。
InsanelyMac 那边已经把我的帖子置顶了。要是在那边再看到一个问 DMG 挂载死机的帖子,我真要去跳崖了。
那么我是应该先更换内核,然后再安装 seatbelt.kext 吗?
我的系统是 10.5.5,安装了 voodoo 9.6.0 内核
(我遇到了挂载 DMG 死机的问题)
那我是不是应该改装着 voodoo 9.5.0 内核,然后再安装 10.5.5 的 seatbelt.kext?
如果 10.5.6 的内核在你的机器上运行正常,那你直接更新对应的 kext 内核扩展即可。
@oneshot
你的意思是你用的是 Voodoo 9.5.0,还是基于 Voodoo 项目修改的 9.6.0 衍生版内核?我知道市面上有几款基于 Voodoo 的衍生内核。
基本上,如果你对目前的系统很满意,唯一的问题只是 DMG 挂载失败,那么你只需要确保各个组件的版本相互匹配即可。除了 system.kext 和 seatbelt.kext 之外,我也不确定使用高于系统版本的内核还会遇到什么其他问题,我自己只有在新系统上运行旧版内核的经验。
总之,只要确保在运行 9.6.0 内核时,同时搭配 9.6.0 的 system.kext 以及来自 10.5.6 的 Seatbelt.kext 即可。
@lanceomini
我的 OSX 系统版本是 10.5.5
我安装了基于 voodoo 的 9.6.0 版本内核
我在网上找了 voodoo 9.5.0,但它本身就是打包在 .DMG 映像里的,所以我根本没法挂载安装它…
肯定可以装的,只要在能打开 DMG 的机器上挂载它,就能看到里面存放文件的文件夹。如果你有 Windows 系统,也可以试试用 UltraISO 打开 dmg 提取里面的文件。
这里是 10.5.6 Seatbelt.kext 的下载链接,请严格按照一楼顶帖中的步骤,先备份原有文件,然后再安装这个 kext。
rapid share.com/files/214657998/seatbelt_1056.zip.html
MD5: 9E0F7C03B9586AAD8B6A3162D71B8786
我尝试按照教程操作,但当我输入 ''mkdir /backup/Seatbelt'' 时,终端提示:
mkdir: /backup: No such file or directory
请问我哪里做错了?
抱歉,我的英语不太好
因为你正尝试在一个还不存在的 "Backup" 文件夹里创建名为 "Seatbelt" 的子文件夹。请输入:
mkdir backup && mkdir backup/seatbelt
这样就可以了
Rapidshare 的链接目前仍然有效。
Thomasasz,
[编辑]已移除私人链接[编辑]
我不知道是否还有人遇到内核/Sandbox 导致的 DMG 挂载五国死机问题,但我注意到之前的下载链接已经失效,需要更新一下。
欢迎大家反馈。最新链接请看本帖一楼。
@lanceomni我不知道是否还有人遇到内核/Sandbox 导致的 DMG 挂载五国死机问题,但我注意到之前的下载链接已经失效,需要更新一下。欢迎大家反馈。最新链接请看本帖一楼。
你好,
我这边测试链接似乎都能正常下载?
文献来源与贡献者溯源名录(共 11 位具名成员 · 原始讨论串 #1992)
| 成员用户名 | 本卷贡献角色 | 发帖数 | 活跃时间窗 |
|---|---|---|---|
| @lanceomni | 主笔作者 | 7 | 2009-01-22 → 2012-11-26 |
| @eMatoS | 核心贡献者 | 3 | 2009-01-22 → 2009-03-28 |
| @oneshot | 协作成员 | 2 | 2009-03-27 → 2009-03-28 |
| @pαuℓzurrr. | 协作成员 | 1 | 2009-01-22 |
| @nfoav8or | 协作成员 | 1 | 2009-01-22 |
| @CamEdwardo | 协作成员 | 1 | 2009-04-03 |
| @Sokairyk | 协作成员 | 1 | 2009-04-26 |
| @Taisto | 协作成员 | 1 | 2009-04-26 |
| @ptesone | 协作成员 | 1 | 2009-09-19 |
| @Thomasasz | 协作成员 | 1 | 2009-11-10 |
| @gils | 协作成员 | 1 | 2012-11-26 |