Snow Leopard について


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

■ Snow Leopardを64bitカーネルで動作させる

 Snow Leopardの機能強化の目玉の一つとしてはカーネルの64bit化が挙げられる。概要は、「やっぱりスゴい! Snow Leopardの「64bit対応」で纏められている。

 しかしながら売りであるカーネルの64bit化だが、下記記事の通り、従来のデバイスやアプリケーションの互換性を重視して、現状では多くの機種においてデフォルトで32bitカーネルがロードされる。


64bitカーネルが動作する為の必要条件は、
  1. CPUが64bitに対応している
  2. EFIが64bitに対応している(参考情報)
の2点である。
  • Mac mini(Early 2009)のハードウエア情報

bash-3.2# system_profiler SPHardwareDataType -detailLevel mini
Hardware:

Hardware Overview:

Model Name: Mac mini
Model Identifier: Macmini3,1
Processor Name: Intel Core 2 Duo
Processor Speed: 2 GHz
Number Of Processors: 1
Total Number Of Cores: 2
L2 Cache: 3 MB
Memory: 4 GB
Bus Speed: 1.07 GHz
Boot ROM Version: MM31.0081.B06
SMC Version (system): 1.35f0

bash-3.2# uname -a
Darwin mac-mini.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386

bash-3.2# ioreg -l -p IODeviceTree | grep firmware-abi
| | "firmware-abi" = <"EFI64">

 カーネルは起動時に32bit/64bitが選択できるのだが、Mac mini, Mac Book, Mac Book Airにおいては、Appleは上位機種との差別化の為、EFIが64bitに対応していても64bitカーネルがロードできないよう意図的に制限をかけている。32bitカーネルでも32GBまでのメモリを扱える為、実用的には問題ないのだが、これはユーザをがっかりさせる結果を招いた。

 64bitカーネルのロードを制限する条件として、SMBIOSの機種情報を疑ってみたが、SMBIOSをMac miniと同等のものに書き換えても64bitカーネルがロードできることが確認でき、SMBIOSの内容は制限の条件ではなかった。


bash-3.2# uname -a
Darwin Mac-Pro.local 10.0.0 Darwin Kernel Version 10.0.0: Fri Jul 31 22:46:25 PDT 2009; root:xnu-1456.1.25~1/RELEASE_X86_64 x86_64

bash-3.2# system_profiler SPHardwareDataType -detailLevel mini
Hardware:

Hardware Overview:

Model Name: Mac mini
Model Identifier: Macmini3,1
Processor Speed: 3 GHz
Number Of Processors: 1
Total Number Of Cores: 2
L2 Cache: 6 MB
Memory: 8 GB
Bus Speed: 1.33 GHz
Boot ROM Version: MM31.00C1.B00
SMC Version (system): 1.30f3

 ところが、海外のサイトをみていた所、Mac Bookで64bitカーネルをロードすることに成功した事例がみつかり、64bitカーネルのロードを制限している条件が判明した。

 詳細はこちらに記載されているが、EFI boot loader(boot.efi)でカーネルロード時に機種を判別して制限しており、下記の通り該当アドレスの値をバイナリエディタで書き換えれば、64bitカーネルがロードできるようになる(boot.efiは誤って削除されないようにuchgフラグが立っているのでchflagsコマンドで解除する必要あり)。
Model (with 64-bit EFI) Byte Position in boot.efi Old Value New Value
Mac mini 0x266D8 0x266DB 0x00 0x04 0x80
MacBook 0x266E8 0x00 0x04
MacBook Air 0x266F8 0x266FB 0x00 0x04 0x80
iMac 0x26718 0x2671B 0x00 0x0c 0x80
 注. 引用元の情報は誤っており動作確認できなかった。実機で確認した所、macmini3,1では0x266DBの値を0x00から0x080に修正が必要。 2009/09/09修正

 上記の修正は、もちろんAppleの保障外であるが、この修正により64bitEFIを搭載する全てのIntel Macで Snow Leopardが64bitカーネルで起動 するようになる。 ただし、グラフィックスアダプタとしてIntelチップセットのGMA950を採用している前モデルのMac miniなどは、GMA950用のKEXTが32bitのままの為、QE/CI/OpenGLのアクセラレーションは働かず、ソフトウエアによるエミュレーション動作になる。 前モデルMac mini (Mid 2007)は、CPUは64bit対応しているが、EFIが32bitのままの為、グラフィックスアダプタのソフトウエアエミュレーション動作以前に、64bitカーネルはロードできない。

bash-3.2# file/System/Library/Extensions/AppleIntelGMA950.kext/Contents/MacOS/AppleIntelGMA950
/System/Library/Extensions/AppleIntelGMA950.kext/Contents/MacOS/AppleIntelGMA950: Mach-O object i386

 なお、boot.efiを直接修正した場合は、OSのアップデートパッチで上書きされ、ファイルの内容が元に戻る可能性がある。その為、実際は直接boot.efiを修正するのではなく、修正したものをboot64.efiなどと別の名前で保存し、元のboot.efiの代わりにboot64.efiを使うようにblessし直すと良い。


bash-3.2# shasum boot64.efi
0f615922c4dde555e38f203caa28ce56f76212d6 boot64.efi
bash-3.2# hexdump boot.efi > boot_efi.txt
bash-3.2# hexdump boot64.efi > boot64_efi.txt
bash-3.2# diff boot_efi.txt boot64_efi.txt
9235c9235
< 00266d0 30 47 01 00 00 00 00 00 00 00 00 00 00 00 00 00
---
> 00266d0 30 47 01 00 00 00 00 00 00 00 00 80 00 00 00 00

・boot.efiの置き換え手順

  • Step 1. ダウンロードしたboot64.efiを/System/Library/CoreServicesに置く

bash-3.2# cp boot64.efi /System/Library/CoreServices

  • Step 2. boot64.efiのパーミッションを変更

bash-3.2# chown 0:0 boot64.efi
bach-3.2# chflags uchg boot64.efi

  • Step 3. boot64.efiをオリジナルのboot.efiの代わりに使うようにblessする

bash-3.2# bless --info /
finderinfo[0]: 133 => Blessed System Folder is /System/Library/CoreServices
finderinfo[1]: 203585 => Blessed System File is /System/Library/CoreServices/boot.efi
finderinfo[2]: 0 => Open-folder linked list empty
finderinfo[3]: 0 => No OS 9 + X blessed 9 folder
finderinfo[4]: 0 => Unused field unset
finderinfo[5]: 133 => OS X blessed folder is /System/Library/CoreServices
64-bit VSDB volume id: 0xA4E143A7BD6DA256
bash-3.2# bless --folder /System/Library/CoreServices --file /System/Library/CoreServices/boot64.efi
bash-3.2# bless --info /
finderinfo[0]: 133 => Blessed System Folder is /System/Library/CoreServices
finderinfo[1]: 218968 => Blessed System File is /System/Library/CoreServices/boot64.efi
finderinfo[2]: 0 => Open-folder linked list empty
finderinfo[3]: 0 => No OS 9 + X blessed 9 folder
finderinfo[4]: 0 => Unused field unset
finderinfo[5]: 133 => OS X blessed folder is /System/Library/CoreServices
64-bit VSDB volume id: 0xA4E143A7BD6DA256

  • Step 4. 64bitモードで起動するように変更し、再起動

bash-3.2# nvram boot-args="arch=x86_64"
bash-3.2# nvram boot-args
boot-args arch=x86_64
bash-3.2# reboot

  • Mac miniで64bitカーネルのロードに成功

  • 64bit起動時のメッセージ(Kernel is LP64)

bash-3.2# dmesg
npvhash=4095
Darwin Kernel Version 10.0.0: Fri Jul 31 22:46:25 PDT 2009; root:xnu-1456.1.25~1/RELEASE_X86_64
vm_page_bootstrap: 899025 free pages and 84015 wired pages
kext submap [0xffffff7f80600000 - 0xffffff8000000000], kernel text [0xffffff8000200000 - 0xffffff8000600000]
standard timeslicing quantum is 10000 us
mig_table_max_displ = 73
AppleACPICPU: ProcessorId=0 LocalApicId=0 Enabled
AppleACPICPU: ProcessorId=1 LocalApicId=1 Enabled
calling mpo_policy_init for Quarantine
Security policy loaded: Quarantine policy (Quarantine)
calling mpo_policy_init for Sandbox
Security policy loaded: Seatbelt sandbox policy (Sandbox)
calling mpo_policy_init for TMSafetyNet
Security policy loaded: Safety net for Time Machine (TMSafetyNet)
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.

MAC Framework successfully initialized
using 16384 buffer headers and 4096 cluster IO buffer headers
IOAPIC: Version 0x11 Vectors 64:87
ACPI: System State [S0 S3 S4 S5] (S3)
mbinit: done (64 MB memory set for mbuf pool)
rooting via boot-uuid from /chosen: BDF77677-73B7-357E-B72D-7568A902D286
Waiting on <dict ID="0"><key>IOProviderClass</key><string ID="1">IOResources</string><key>IOResourceMatch</key><string ID="2">boot-uuid-media</string></dict>
com.apple.AppleFSCompressionTypeZlib load succeeded
AppleIntelCPUPowerManagementClient: ready
Got boot device = IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/SATA@B/AppleMCP79AHCI/PRT0@0/IOAHCIDevice@0/AppleAHCIDiskDriver/IOAHCIBlockStorageDevice/IOBlockStorageDriver/SAMSUNG MMDOE56G5MXP-0VB Media/IOGUIDPartitionScheme/Untitled@2
BSD root: disk0s2, major 14, minor 2
Kernel is LP64
FireWire (OHCI) Lucent ID 5901 built-in now active, GUID 002500fffed159ce; max speed s800.
systemShutdown false
BootCache: hit rate below threshold (892 hits on 1793 lookups)
AppleIntelCPUPowerManagement: initialization complete
Waiting for DSMOS...
NTFS driver 3.0 [Flags: R/W].
NTFS volume name Windows XP, version 3.1.
NVDANV50HAL loaded and registered.
Previous Shutdown Cause: 0
BTCOEXIST on
wl0: Broadcom BCM4328 802.11 Wireless Controller
5.10.91.19
DSMOS has arrived
NVEthernet: Ethernet address 00:25:00:d1:59:ce
AirPort_Brcm43xx: Ethernet address 00:24:36:f0:52:3f
IO80211Controller::dataLinkLayerAttachComplete(): adding AppleEFINVRAM notification
IO80211Interface::efiNVRAMPublished():
NVEthernet::setLinkStatus - Valid but not Active
NVEthernet::mediaChanged - Link is down
NVEthernet::setLinkStatus - Valid but not Active
AirPort: Link Down on en1. Reason 1 (Unspecified).
Auth result for: 00:0d:02:76:2a:fe MAC AUTH succeeded
AirPort: Link Up on en1
bash-3.2# uname -a
Darwin Mac-mini.local 10.0.0 Darwin Kernel Version 10.0.0: Fri Jul 31 22:46:25 PDT 2009; root:xnu-1456.1.25~1/RELEASE_X86_64 x86_64

 万一、起動しなくなったり、不安定な状態になってしまった場合は、メディアブート後、元のboot.efiでblessし直せば環境の修復が可能である。

 最後に、Mac mini Early 2006, Late 2006は、CPUが32bitのCore Solo/Duoの為、そもそも64bitカーネル自体実行できない。

  • おまけ
 1. 32bitカーネル起動に戻す場合は、起動時の引数指定を無くせばよい。

bash-3.2# nvram -d boot-args
bash-3.2# reboot

 2. Mac mini/MacBook/MacBook Air/iMac対応boot.efi修正スクリプト
 ・オリジナルのboot.efiからパッチを適用したboot64.efiを作成
 ・パッチが適用されたboot64.efiでblessし直す
 ・bless設定が初期化された場合、既存のboot64.efiを用いてblessの再設定のみを行う。 

<パッチ内容>

sudo perl -pi -e 's|\x30\x47\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|\x30\x47\x01\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00|g' /System/Library/CoreServices/boot.efi
sudo perl -pi -e 's|\x38\x47\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|\x38\x47\x01\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00|g' /System/Library/CoreServices/boot.efi
sudo perl -pi -e 's|\x40\x47\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|\x40\x47\x01\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00|g' /System/Library/CoreServices/boot.efi
sudo perl -pi -e 's|\x56\x47\x01\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00|\x56\x47\x01\x00\x00\x00\x00\x00\x08\x00\x00\x80\x00\x00\x00\x00|g' /System/Library/CoreServices/boot.efi


■追記1. (2009/09/11)

 2009/09/11に10.6.1のアップデートが配布されたが、boot.efiは更新対象とはなっていなかった。その為、バイナリエディタで直接上書更新していても問題ない。なお、boot.efiはカーネルをロードする為のブートローダという役割から、頻繁に更新される可能性は低く、アップルが64bitカーネルの使用を再度無効にする意図がない限りは、修正が入る可能性は低いと思われる。

 また、EFIファームウエアアップデートを実行し、ファームウエアのバージョンを1.2に上げた所、10.6においてカーネルが32bit/64bitに関わらずメモリを8GB(4GBx2)搭載しても、安定動作するようになった。


■追記2. (2009/10/09)

 10.6.2のベータアップデートプログラムには、インテルチップセットの内蔵GPU(GMA950、GMAX3100)用64bitドライバが含まれており、インテルGPU搭載機でもEFIが64bitなら64bitカーネルでCI/QE/OpenGLのアクセラレーションが働くようになる。

 Mac mini(Eary 2009)での64bitカーネル解禁に繋がるとは思えないが、CPU、EFI共に64bitに対応しているが、グラフィックスアダプタのドライバが32bitしか用意されていなかったIntel GPU搭載のMac Book(Late 2007, Early 2008、Late 2008)、Mac Book Air (Early 2008)などには朗報であろう。

 ただし、前モデルのmini (Mid 2007)はEFIが32bitなので、GMA 950用の64bitドライバが提供されても残念ながら使用できない。

■追記3. (2009/10/29)

 Late 2009 iMacのプレインストールSnow Leopardの情報を確認したが、OSは10.6.1であるものの、カーネルは10.1.2とアップデートがされていた(Late 2009 Mac miniのカーネルは10.0.0のまま)。

 更にLate 2009 iMacのkext情報を確認してみると、10.6.2のベータアップデートプログラムで確認できた内容を取り込んでおり、10.6.1.5とも呼べる内容になっていた。


$ uname -a
Darwin localhost 10.1.2 Darwin Kernel Version 10.1.2: Wed Sep 9
$ file /System/Libray/Extensions/AppleIntelGMA950.kext/Contents/MacOS/AppleIntelGMA950
/System/Library/Extensions/AppleIntelGMA950.kext/Contents/MacOS/AppleIntelGMA950: Mach-O universal binary with 2 architectures
/System/Library/Extensions/AppleIntelGMA950.kext/Contents/MacOS/AppleIntelGMA950 (for architecture x86_64): Mach-O 64-bit kext bundle x86_64
/System/Library/Extensions/AppleIntelGMA950.kext/Contents/MacOS/AppleIntelGMA950 (for architecture i386): Mach-O object i386
$ file /System/Library/Extensions/AppleIntelGMAX3100.kext/Contents/MacOS/AppleIntelGMAX3100
/System/Library/Extensions/AppleIntelGMAX3100.kext/Contents/MacOS/AppleIntelGMAX3100: Mach-O universal binary with 2 architectures
/System/Library/Extensions/AppleIntelGMAX3100.kext/Contents/MacOS/AppleIntelGMAX3100 (for architecture x86_64): Mach-O 64-bit kext bundle x86_64
/System/Library/Extensions/AppleIntelGMAX3100.kext/Contents/MacOS/AppleIntelGMAX3100 (for architecture i386): Mach-O object i386
$ ls /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/
AirPortAtheros.kext/ AppleAirPortBrcm4311.kext/ IO80211NetBooter.kext/
AirPortAtheros21.kext/ AppleAirPortBrcm43224.kext/
$ file /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros.kext/Contents/MacOS/AirPortAtheros
/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros.kext/Contents/MacOS/AirPortAtheros: Mach-O object i386
$ file /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros21.kext/Contents/MacOS/AirPortAtheros21
/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros21.kext/Contents/MacOS/AirPortAtheros21: Mach-O universal binary with 2 architectures
/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros21.kext/Contents/MacOS/AirPortAtheros21 (for architecture x86_64): Mach-O 64-bit kext bundle x86_64
/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros21.kext/Contents/MacOS/AirPortAtheros21 (for architecture i386): Mach-O object i386

 最後に一点気になることだが、boot.efiのハッシュ値が従来と異なっており、10.6.2では内容が更新されることが予想される。本項で記載した64bitカーネルロード手法は、10.6.2以降では対応できない可能性が懸念され、正式リリース後に再度確認する必要がある。

■追記4. (2009/11/10)

 2009/11/09の深夜にMac OS X 10.6.2 Updateがリリースされた。一般的には、不具合の修正やアプリケーション互換性の改善を確認するのが重要であるが、本wikiでは以下を確認した。

 なお、10.6.1までに確認されていた、ゲストアカウントでログイン後に再ログインすると該当アカウントのホームディレクトリがクリアされる深刻なバグは本アップデートで修正された為、極力アップデートすることを推奨する。

・確認ポイント

 1. boot.efiの64bitカーネルロードチェック
  MacOSXUpd10.6.2.pkgの中身を覗いたが、boot.efiの更新は無く、既存のローダーには影響を与えない。また、裏を返せば、10.6.2でもアップルはMac miniにおいて64bitカーネルのサポートをしないということである。

bash-3.2# shasum /System/Library/CoreServices/boot.efi
2fb9fc10e5b4bb06f62c38b01bd9836a433897f8 /System/Library/CoreServices/boot.efi

  なお、アップデートデータをダウンロードし、アップデートを実行すると下記の通りbless指定がクリアされる(ソフトウエア・アップデートから実行した場合はクリアされない)。

bash-3.2# bless --info /
finderinfo[0]: 133 => Blessed System Folder is /System/Library/CoreServices
finderinfo[1]: 203585 => Blessed System File is /System/Library/CoreServices/boot.efi
finderinfo[2]: 0 => Open-folder linked list empty
finderinfo[3]: 0 => No OS 9 + X blessed 9 folder
finderinfo[4]: 0 => Unused field unset
finderinfo[5]: 133 => OS X blessed folder is /System/Library/CoreServices
64-bit VSDB volume id: 0xA4E143A7BD6DA256

  その為、boot64.efiを読み込むよう変更していた場合は、再指定が必要。

bash-3.2# bless --folder /System/Library/CoreServices --file /System/Library/CoreServices/boot64.efi
bash-3.2# bless --info /
finderinfo[0]: 133 => Blessed System Folder is /System/Library/CoreServices
finderinfo[1]: 218968 => Blessed System File is /System/Library/CoreServices/boot64.efi
finderinfo[2]: 0 => Open-folder linked list empty
finderinfo[3]: 0 => No OS 9 + X blessed 9 folder
finderinfo[4]: 0 => Unused field unset
finderinfo[5]: 133 => OS X blessed folder is /System/Library/CoreServices
64-bit VSDB volume id: 0xA4E143A7BD6DA256

以降の内容はMac mini Early 2009には関係ない。

 2. Radeon HD43x0-46x0の追加サポート
  ATI4500Controller.kext、ATI4600Controlller.kext追加を確認。また、Radeon HD4シリーズにおいて、OpenCLの互換性及びパフォーマンスが向上している。

  GeForce 9400MではOpenCLのパフォーマンスについて違いはみられなかった。

 3. Intel Atomの非サポート
  かねてから噂があった通り、Intel Atomが動作しないように対策が取られた(症状としては何も出力されずに再起動)。Atomで動作をさせたい場合は、10.6.2のカーネルソース公開後、ブロックしている部分を修正し、ソースから自力でビルドする必要がある。

  また、10.6.2ではEISTが無い場合は、AppleIntelCPUPowerManagement.kextでKernel Panicが発生する (デスクトップ用のAtomはEIST機能が無い為、その対策も兼ねていると推測する)。エラー内容からはCore i5/i7用の実装の結果とも思われるが、Mac miniへの影響はない。

 (追記 2009/11/11)
 カーネル(march_kernel)バイナリを直接編集すればAtom起動不可チェックを回避できる。

 4. Core i5/i7のサポート
  Late 2009 iMacでCore i5/i7(Lynfield)が採用され、10.6.2で正式にサポートされた(10.6.2以前はカーネル起動時にリブートしてしまい対応していない)。

 5. その他
  ・Atherosチッップの64bitサポート(AirPortAtheros21.kextの追加)
  ・Intel内蔵GPUの64bitサポート(AppleIntelGMA950.kext、AppleIntelGMAX3100.kextの64bitバイナリの追加)

■追記5. (2009/11/14)

 Snow Leopard OSX Serverのカーネルローダboot.efiを確認したが、Snow Loepardと全く同一のものであることが確認できた。


bash-3.2# uname -a
Darwin myserver.private 10.0.0 Darwin Kernel Version 10.0.0: Fri Jul 31 22:47:34 PDT 2009; root:xnu-1456.1.25~1/RELEASE_I386 i386
bash-3.2# shasum /System/Library/CoreServices/boot.efi
2fb9fc10e5b4bb06f62c38b01bd9836a433897f8 /System/Library/CoreServices/boot.efi

 サーバ版は、サーバとして提供するサービスをクライアント版に追加し、各種管理コンソールの機能を追加したものなので、カーネルをはじめとした基盤システムはクライアント版と共通である。

■追記6. (2010/03/30)

 2010/03/29の深夜にMac OS X 10.6.3 Updateがリリースされた。

・確認ポイント

 1. カーネルローダboot.efiでの64bit機種チェックロジックの変更有無
  boot.efiの変更は無く、従来の方法で64bitカーネルが使用できる。bless指定がクリアされた場合は、Step3を参考に指定し直す。

以降の内容はMac mini Early 2009には関係ない。

 2. Apple非対応CPU機種チェックロジックの変更有無(Atom対策)
  10.6.2同様、カーネル(march_kernel)バイナリを直接編集すればAtom起動不可チェックを回避できる。

 3. カーネルのClarkdaleコア(Core i3/i5)対応有無
  10.6.3ではClarkdaleコアにはまだ対応していない為、従来通り修正カーネルを使用する必要がある。

 4. 10.6.2で対応されたIntel 内蔵GPUの64bitサポートの変更有無
  10.6.2で64bitサポートが追加されたIntel 内蔵GPUのGMA950、GMAX3100だが、ベータアップデートで確認されていた通り、64bitサポートが打ち切られた。

bash-3.2# file /System/Library/Extensions/AppleIntelGMA950.kext/Contents/MacOS/AppleIntelGMA950
/System/Library/Extensions/AppleIntelGMA950.kext/Contents/MacOS/AppleIntelGMA950: Mach-O object i386
bash-3.2# file /System/Library/Extensions/AppleIntelGMAX3100.kext/Contents/MacOS/AppleIntelGMAX3100
/System/Library/Extensions/AppleIntelGMAX3100.kext/Contents/MacOS/AppleIntelGMAX3100: Mach-O object i386

 5. AppleHDA.kextの変更
  Mac Pro オーディオアップデート 1.0を適用(ModelがMacPro4,1の場合に可能)した際に見られたことだが、実機に採用されている音源チップではない派生チップではオーディオが正しく動作しない。例えば、IONプラットフォームで採用例が多いRealtek ALC662や888/888b/889などが該当する。これは、内部でオーディオコーデックIDをチェックするようになったからである。また、2009年末以降に発売された機種に限られるが、HDMI Audioもサポートされる。

・10.6.3(64bit kernel)でのパフォーマンス最適化

 10.6.3アップデートでは、"OpenGL ベースアプリケーションの互換性の問題”が改善され、OpenGLのパフォーマンスが向上した。

 ・XBench 1.3 64bit kernel 10.6.2

Results 149.88
System Info
Xbench Version 1.3
System Version 10.6.2 (10C540)
Physical RAM 8192 MB
Model Macmini3,1
Drive Type SAMSUNG MMDOE56G5MXP-0VB
CPU Test 141.75
GCD Loop 234.12 12.34 Mops/sec
Floating Point Basic 113.89 2.71 Gflop/sec
vecLib FFT 93.43 3.08 Gflop/sec
Floating Point Library 224.04 39.01 Mops/sec
Thread Test 183.57
Computation 386.84 7.84 Mops/sec, 4 threads
Lock Contention 120.34 5.18 Mlocks/sec, 4 threads
Memory Test 188.32
System 228.60
Allocate 479.87 1.76 Malloc/sec
Fill 165.23 8033.62 MB/sec
Copy 200.51 4141.52 MB/sec
Stream 160.12
Copy 153.17 3163.65 MB/sec
Scale 153.02 3161.41 MB/sec
Add 168.99 3599.81 MB/sec
Triad 166.65 3565.07 MB/sec
Quartz Graphics Test 178.26
Line 139.94 9.32 Klines/sec [50% alpha]
Rectangle 174.51 52.10 Krects/sec [50% alpha]
Circle 149.29 12.17 Kcircles/sec [50% alpha]
Bezier 161.59 4.08 Kbeziers/sec [50% alpha]
Text 437.39 27.36 Kchars/sec
OpenGL Graphics Test 67.65
Spinning Squares 67.65 85.82 frames/sec
User Interface Test 238.32
Elements 238.32 1.09 Krefresh/sec
Disk Test 232.23
Sequential 197.02
Uncached Write 279.66 171.71 MB/sec [4K blocks]
Uncached Write 272.28 154.06 MB/sec [256K blocks]
Uncached Read 96.98 28.38 MB/sec [4K blocks]
Uncached Read 364.56 183.22 MB/sec [256K blocks]
Random 282.78
Uncached Write 116.98 12.38 MB/sec [4K blocks]
Uncached Write 323.90 103.69 MB/sec [256K blocks]
Uncached Read 1390.85 9.86 MB/sec [4K blocks]
Uncached Read 558.70 103.67 MB/sec [256K blocks]

 ・XBench 1.3 64bit kernel 10.6.3

Results 178.67
System Info
Xbench Version 1.3
System Version 10.6.3 (10D573)
Physical RAM 8192 MB
Model Macmini3,1
Drive Type SAMSUNG MMDOE56G5MXP-0VB
CPU Test 141.53
GCD Loop 234.48 12.36 Mops/sec
Floating Point Basic 113.88 2.71 Gflop/sec
vecLib FFT 92.96 3.07 Gflop/sec
Floating Point Library 224.26 39.05 Mops/sec
Thread Test 212.09
Computation 307.68 6.23 Mops/sec, 4 threads
Lock Contention 161.81 6.96 Mlocks/sec, 4 threads
Memory Test 182.89
System 219.15
Allocate 469.57 1.72 Malloc/sec
Fill 153.52 7464.54 MB/sec
Copy 198.17 4093.15 MB/sec
Stream 156.93
Copy 150.41 3106.75 MB/sec
Scale 148.46 3067.20 MB/sec
Add 165.70 3529.69 MB/sec
Triad 164.73 3523.95 MB/sec
Quartz Graphics Test 175.69
Line 137.76 9.17 Klines/sec [50% alpha]
Rectangle 168.88 50.42 Krects/sec [50% alpha]
Circle 148.53 12.11 Kcircles/sec [50% alpha]
Bezier 160.22 4.04 Kbeziers/sec [50% alpha]
Text 433.79 27.14 Kchars/sec
OpenGL Graphics Test 127.44
Spinning Squares 127.44 161.67 frames/sec
User Interface Test 242.07
Elements 242.07 1.11 Krefresh/sec
Disk Test 234.75
Sequential 195.48
Uncached Write 284.04 174.39 MB/sec [4K blocks]
Uncached Write 258.15 146.06 MB/sec [256K blocks]
Uncached Read 97.04 28.40 MB/sec [4K blocks]
Uncached Read 361.94 181.91 MB/sec [256K blocks]
Random 293.77
Uncached Write 118.60 12.55 MB/sec [4K blocks]
Uncached Write 351.96 112.67 MB/sec [256K blocks]
Uncached Read 1649.09 11.69 MB/sec [4K blocks]
Uncached Read 575.80 106.84 MB/sec [256K blocks]
  ・OpenGLのパフォーマンスは、10.6(67.75)になり、10.5(125)の半分にまで落ち込んでいたが、10.6.3(127.44)へのアップデートで10.5と同等までにパフォーマンスが改善した。
  ・libdispatchの最適化によりマルチスレッド処理が向上している。

■追記7. OS X 10.6.3 Supplemental Update (2010/04/13)

 Mac miniではソフトウエアアップデートでの自動通知はないが、4/12付けでMac OS X v10.6.3 v1.1 統合アップデートがリリースされた。

 中身をざっと確認してみたが下記の通りであり内容に変更は無く、アップデートプログラムの安定性を向上させるものである。

 ・カーネルローダー(boot.efi)の変更はなし
 ・カーネルの変更はなし(Clarkdale非サポート)
 ・Intel 内蔵GPUのGMA950、GMAX3100のkextは32bitのまま

 Appleの説明では下記の通りで、先にリリースされた10.6.3適用済みでソフトウエアアップデートで通知されなければ再度インストールする必要は無い。
 ・About the Mac OS X v10.6.3 Update

Additional Information
The Mac OS X v10.6.3 combo update also includes improvements provided in the Mac OS X v10.6.1 Update and Mac OS X v10.6.2 Update.

In order to receive all the improvements listed above, some systems require the Mac OS X v10.6.3 Supplemental Update, which is available via Software Update.

Tip: If you don't see the Mac OS X v10.6.3 Supplemental Update in Software Update, you don't need to install it.

Note: The Supplemental Update is for any system that was updated from Mac OS X v10.6 using the Mac OS X Update Combined v10.6.3, build 10D573. It is not needed on systems that were updated from Mac OS X v10.6.1 or 10.6.2, and it is not needed on systems that were updated from Mac OS X v10.6 using the Mac OS X Update Combined v10.6.3, v1.1.

■追記8. Darwin Kernel Version 10.3.1 (2010/04/15)

 4/13に発表された新MacBook Proに対応したソフトウエア・アップデートが公開された。本アップデートは、MacBook Proユーザにはソフトウエア・アップデートで配布されるが、その他のユーザーも手動ダウンロードすることで入手できる。


 アップデートデータの中身を確認すると、GPU内蔵のIntel CPU(Clarkdale/Arrandaleコア)のグラフィックスドライバAppleIntelHDGrapchis.kextが収録されているだけでなく、Clarkdale/Arrandaleに対応したカーネル10.3.1も収録されている。また、内蔵GPUと独立GPUを自動で切り替える機能も提供されている。


 該当機種以外にはインストールできないが、10.6.4に取り込まれると思われる。

■追記9. MacBook Pro Early 2010のカーネルついて (2010/04/21)

 GeForce 9400M(MCP7A)の後継のGeForce 320M(MCP89)を採用したMacBook Pro 13inchのModel IdentifierはMacBook Pro 7,1で、カーネルのバージョンも10.3.2とCore i5/i7を搭載したMacBook Pro 17(MacBook Pro6,1)/15(MacBook Pro6,2)よりもバージョンが新しいものが採用されている。

 CPUに統合されるGPU性能の低さ(IntelのCPU内蔵GPUはSandyBridge世代でも現行の性能とあまり変化が無い)から、AppleはAMDを新しいパートナーに考えているという噂もあるが、10.6.4は2010年までにリリースされた全てのIntel CPU(ただし、Intel Atomは意図的に除かれる)をサポートする初めてのバージョンとなると考える。

 (追記:2010/06/01) Mac OS X 10.6.4 Update (delta), Mac OS X Snow Leopard 10.6.4 build 10F564にてClarkdale/Arrandaleの動作サポートを確認。

  • MacBook Pro 17inch [Core i5/Intel HD+GeForce 330M+H55] 3chip (CPU/GPU=MCM 1chip)

$ uname -a
Darwin Kernel Version 10.3.1: Mon Mar 22 15:12:14 PDT 2010; root;xnu-1504.3.52~1/RELEASE_I386 i386

$ md5 mach_kernel
MD5 (mach_kernel) = 60dff518338fe6882e8b4bfbb70c589c


$system_profiler
Hardware:
Hardware Overview:

Model Name: MacBook Pro
Model Identifier: MacBookPro6,1
Processor Name: Intel Core i5
Processor Speed: 2.53 GHz
Number Of Processors: 1
Total Number Of Cores: 2
L2 Cache (per core): 256 KB
L3 Cache: 3 MB
Memory: 4 GB
Processor Interconnect Speed: 4.8 GT/s
Boot ROM Version: MBP61.0057.B00
SMC Version (system): 1.57f16
Serial Number (system):
Hardware UUID:
Sudden Motion Sensor:
State: Enabled
 *Serial Numberは削除

  • MacBook Pro 13inch [Core 2 Duo 2.4GHz + GeForce 320M (MCP89)] 2chip

$ uname -a
Darwin Kernel Version 10.3.2: Wed Mar 17 14:55:00 PDT 2010; root:xnu-1504.5.30~3/RELEASE_I386 i386

$ md5 /mach_kernel
MD5 (/mach_kernel) = 8cd985c7894ce61d35f328194a562216


$system_profiler
Hardware:
Hardware Overview:

Model Name: MacBook Pro
Model Identifier: MacBookPro7,1
Processor Name: Intel Core 2 Duo
Processor Speed: 2.4 GHz
Number Of Processors: 1
Total Number Of Cores: 2
L2 Cache: 3 MB
Memory: 4 GB
Bus Speed: 1.07 GHz
Boot ROM Version: MBP71.0039.B05
SMC Version (system): 1.62f5
Serial Number (system):
Hardware UUID:
Sudden Motion Sensor:
State: Enabled

Graphics/Displays:

NVIDIA GeForce 320M:

Chipset Model: NVIDIA GeForce 320M
Type: GPU
Bus: PCI
VRAM (Total): 256 MB
Vendor: NVIDIA (0x10de)
Device ID: 0x08a0
Revision ID: 0x00a2
ROM Revision: 3533
Displays:
Color LCD:
Resolution: 1280 x 800
Pixel Depth: 32-Bit Color (ARGB8888)
Main Display: Yes
Mirror: Off
Online: Yes
Built-In: Yes
Display Connector:
Status: No Display Connected

Serial-ATA:

NVidia MCP89 AHCI:

Vendor: NVidia
Product: MCP89 AHCI
Link Speed: 3 Gigabit
Negotiated Link Speed: 1.5 Gigabit
Description: AHCI Version 1.30 Supported

Hitachi HTS545025B9SA02:

Capacity: 250.06 GB (250,059,350,016 bytes)
Model: Hitachi HTS545025B9SA02
Revision: PB2AC60W
Serial Number:
Native Command Queuing: Yes
Queue Depth: 32
Removable Media: No
Detachable Drive: No
BSD Name: disk0
Rotational Rate: 5400
Medium Type: Rotational
Partition Map Type: GPT (GUID Partition Table)
S.M.A.R.T. status: Verified
Volumes:
Macintosh HD:
Capacity: 249.72 GB (249,715,376,128 bytes)
Available: 211.01 GB (211,014,455,296 bytes)
Writable: Yes
File System: Journaled HFS+
BSD Name: disk0s2
Mount Point: /

NVidia MCP89 AHCI:

Vendor: NVidia
Product: MCP89 AHCI
Link Speed: 3 Gigabit
Negotiated Link Speed: 1.5 Gigabit
Description: AHCI Version 1.30 Supported

HL-DT-ST DVDRW GS23N:

Model: HL-DT-ST DVDRW GS23N
Revision: SB07
Serial Number:
Native Command Queuing: No
Detachable Drive: No
Power Off: Yes
Async Notification: No
 *Serial Numberは削除