SnowLeopardカーネル入れ替え

Mac OS X 10.6.2 のカーネルを自分でビルドしたxnuに入れ替えてみた。

環境

  • 機種名: MacBook Pro
  • 機種 ID: MacBookPro5,5
  • プロセッサ名: Intel Core 2 Duo
  • プロセッサ速度: 2.53 GHz
  • プロセッサ数: 1
  • 合計コア数: 2
  • 二次キャッシュ: 3 MB
  • メモリ: 4 GB
  • バス速度: 1.07 GHz
  • ブート ROM のバージョン: MBP55.00AC.B03
  • SMC バージョン(システム): 1.47f2

(過去バージョンのMacでは通用しないかもしれないので注意)

カーネルをビルドする

↓ツールの準備&カーネルビルドはこの方法でOK
http://www39.atwiki.jp/macmini/pages/36.html

起動カーネル変更方法いろいろ

(a)オリジナルをバックアップした上で/mach_kernlを上書き。起動に失敗すれば厄介なことに。
(b)/Library/Preferences/SystemConfiguration/com.apple.Boot.plistを書き換え。起動に失敗すれば厄介なことに。
(c)NVRAMの内容を変更。起動に失敗しても 電源投入時にopt+cmd+p+rでNVRAMをリセットしてしまえば元通り。

というわけで(c)が良さそう。

(a)や(b)でもMacがもう一台有るならばターゲットディスクモードで起動してファイルを変更すれば復活させられるらしいが・・。

とりあえず現在のNVRAMの内容を保存。しなくても多分問題ない。

$ nvram -xp > ~/nvram.bak
(戻す時は $ sudo nvram -xf ~/nvram.bak)

NVRAMリセットが可能であることを確認

  • コマンドラインから以下を実行。これで起動時にlinux等でおなじみの詳細なレポートが画面に出る。
$ nvram boot-args="-v"
  • 一旦電源を落とし、cmd+opt+p+r を押しながら電源投入。キーは押し続ける。
  • そのうち再起動がかかって詳細起動画面ではなくいつものリンゴ画面が出ればNVRAMリセットができたと言うことでOK.

カーネルをコピー

$ sudo cp BUILD/obj/mach_kernel /mac_kernel.custom
$ sudo chmod 644 /mach_kernel.custom
$ sudo chown root.wheel /mach_kernel.custom

起動カーネル変更

$ sudo nvram boot-args="-v Kernel=mach_kernel.custom"

起動時にカーネルのビルド日付が出るので、
カーネルの日付になっていることを確認する。
(日本語環境でビルドすると文字化けする。その場合は化けていることを確認。)

結果

手元の環境では起動が非常に遅く、ログイン画面でキーボードが反応しないと言う状態に。。
トラックパッドは反応していた。
NVRAMリセットで元のカーネルに戻して正常に戻った。


うまく動きはしなかったけど、気軽に起動カーネル
変更できる手段が見つかったことは非常に嬉しい。
カーネルをいじって遊ぶことができる。