Cho*_*er3 10 mac 64-bit osx-snow-leopard kernel macos
我有一台配备 4GB 内存的 MacBook Pro (5,1) 运行 10A432 - 但它运行的是 32 位内核。
任何想法为什么它不会在 64 位模式下运行,以及我如何让它这样做?
Lak*_*ake 12
在 Jon Siracusa 的 Snow Leopard 评论中,他讨论了 64 位转换。

简短版本是:因为没有“混合模式”,64 位内核需要 64 位内核扩展和驱动程序。
由于这些尚未广泛使用,Apple 选择默认为 32 位以避免破坏很多东西。
文章中的说明:
对于所有支持 K64 的 Mac,启动时同时按住“6”和“4”键以选择 64 位内核。要获得更持久的解决方案,请使用 nvram 命令添加
arch=x86_64到您的boot-args字符串,或编辑文件/Library/Preferences/SystemConfiguration/com.apple.Boot.plist并添加arch=x86_64到内核标志字符串:
...
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string>arch=x86_64</string>
...
Run Code Online (Sandbox Code Playgroud)
要切换回 32 位内核,请在引导期间按住“3”和“2”键,或使用上述技术之一,将“x86_64”替换为“i386”。
根据泄露给 MacRumors 的内容(因为官方文档在 NDA 下)(来源)只有以下计算机支持运行 64 位内核:
默认情况下,只有 XServes 使用 64 位内核。
如果您使用6和4键启动计算机,您将启动 64 位内核,或者根据另一个破坏其保密协议的消息来源,您可以编辑/Library/Preferences/SystemConfiguration/com.apple.Boot.plist添加内核标志或在 nvram 中执行此操作。
与大多数其他操作系统不同,在 Snow Leopard 中运行 64 位内核并没有太大好处。在 Windows 和 Linux 中,您需要一个 64 位内核来运行 64 位应用程序。在 OS X 上,您可以使用 32 位内核运行 64 位应用程序。
大多数人似乎担心在 OS X 中运行 32 位内核会限制他们机器的性能或功能,但实际上这不会产生重大的实质性影响。32 位内核支持运行 64 位应用程序,这些应用程序有一个虚拟的 64 位地址空间,由内核映射到 36 位 PAE 地址空间,因此它们的行为与 64 位应用程序相同。位内核,只是具有更多限制的内存使用和内存映射 I/O 到可用范围。Apple 在 32 位内核中处理此地址空间的方式导致物理内存限制为 32 GB,打破了 PAE 的 4 GB 32 位限制。如果使用具有 32 GB 或更少内存的 64 位内核有一个可衡量的好处,那么在性能方面并没有太大的好处。如果你想,6和4启动时的键。我怀疑你会看到性能上的显着差异。
另一个问题是与设备驱动程序、内核扩展和设备固件的兼容性。对于设备驱动程序和内核扩展,它们需要匹配位、重新编译或重写(特别是如果它们有任何程序集,这些部分在这些类型的代码中是常见的)。Apple 的 EFI 最初只有 32 位,最近一些型号有 64 位固件。为了让操作系统与固件通信,内核和 EFI 的位数必须匹配。涉及与 EFI 对话的事情包括选择启动磁盘或某些电源管理控制(例如,如果您安装了多个 OS X,并且需要在电池耗尽后从睡眠中唤醒)。
那么 64 位内核会有好处吗?性能方面并不是真正在实践中,我可以看到 Apple 为大多数运行 Snow Leopard 的机器使用 32 位内核以获得更好的兼容性的智慧。
不幸的是,Jason 的混淆链接隐藏了一条非常有用的信息:
ioreg -l -p IODeviceTree | grep firmware-abi
Run Code Online (Sandbox Code Playgroud)
64 位 EFI Mac 将报告
| | "firmware-abi" = <"EFI64">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11153 次 |
| 最近记录: |