2010年8月14日土曜日

tony mac

Macintoshを自作してみた.

※ここに記載した内容は技術的に可能であると記載しているだけで,使用を勧める物ではありません.
Appleのライセンス条項をよく読んだ上で自己責任に基づいてお読みください.
またこれは夢ですので現実とは一切関係が御座いません.


使用したパーツ
P55A-UD3R
Core-i7-860CPU
Radeon4850GPU



★必要な物
ここに載っているマザーボードだと簡単にインストール出来る.
Gigabyteのマザーがお薦め.
http://tonymacx86.blogspot.com/2009/12/dsdt-database-for-p55-motherboards.html
・tonymacx86-P55BootCD.iso
・MacOSX10.6のISOイメージか製品版DVD
・CD-R一枚
・P55に刺さるCPU(i5かi7が良いけど別にP55じゃないといけないって訳じゃない.P45でCore2でもOKだしPenDualCoreでも動くらしい.)
・SATA接続のHDD
・SATA接続のDVDドライブ

以下のファイルはUSBメモリに保存しておくと後の作業が楽.
・MultiBeast  http://dl.dropbox.com/u/3315703/MultiBeast.zip
・DSDT.aml  http://tonymacx86.blogspot.com/2009/12/dsdt-database-for-p55-motherboards.html
・iaslMe  Googleで探して欲しい
・kextUtilty Googleで探して欲しい

★Step1,OSXのインストール!

1.tonymacx86-P55BootCD.isoをCD-Rに書き込む.
ブータブルで書きこむこと.
2.OSXのISOイメージしか持っていない人はこれもDVDに書き込む.
8GB近くあると思うので2層ディスクが必須.
3.再起動してBIOSに入る.
以下の設定を変更する.
・SATAコントローラをIDEからAHCIモードに変更.
・高精度イベントタイマ(HPET)を有効にする.
・高精度イベントタイマを64bitモードにする.
・DriveAを無しにする.
この4つを変更したらセーブする.
4.1で書き込んだCDから立ち上げる.
5.Chameleonブートローダが起動する.OS選択画面が出たら
2で作成したOSXインストールDVDまたは製品版のOSXディスクとスワップする.
6.ドライブが安定したらF5キーを押してリロードする.
7.MacOSXInstallDVDを選択して起動する.
(ここでATI系のビデオカードを使っている場合は-xオプションを付けて起動する.-xオプションが無いとカーネルパニックになる.Geforceでもカーネルパニックになる時は-xをしてみると良いかもしれない.ちなみに-xは”セーフモード起動”)
8.OSXインストーラが立ち上がる.ここで言語選択で日本語または英語を選択する.
9.インストーラが起動したらユーティリティメニューからディスクユーティリティを起動して,OSXをインストールするドライブを”MacOS拡張(ジャーナリング)”でフォーマットする.
10.フォーマットが完了したらディスクユーティリティーを閉じる.
11.10でフォーマットしたドライブにOSXをインストールする.(20分前後)
12.途中でエラーになるはず.具体的には”OSXを起動出来ませんでした”という内容の画面が出る.ここで強制的にPCの電源を落とす.再度電源を入れて,1で書き込んだCDと入れ替える.
13.OS選択画面になったらここでOSXをインストールしたドライブを選択してEnterキーを押す.(ただしATI系カードの場合はここでも-xオプションを使う.)

Step2 インストール終了後のカスタマイズ!
1.OSXセットアップ画面が出たらセットアップを完了する.
・ユーザーアカウント作成,Appleユーザー登録など
(ちなみにユーザー登録画面ではcommandキーとQキーを押すとスキップ出来る)
2.OSXが立ち上がったら,ここからセットアップ作業に入る.
3.とりあえずここからは予備知識が必要.
ちょっと下までスクロールして*欄を読んで欲しい.

4.MultiBeastを起動する.
インストーラ画面が立ち上がったら,”続ける”をクリックする.
簡単な説明画面が出る.”続ける”をクリックする.
OSXにカスタムインストールのメニューで以下のファイルを選択.
・Chameleonツリー内のPC-EFI
・Audioツリーの中のALC889(ボードによって異なる)
・Networkツリーの中のR1000SL(マザーによって異なる.)
・DSDTツリーのDSDTファイル(マザーによって異なる)
・Extrasツリーの
64bit com.apple.boot.plist
MacPro4,1smbios.plist
・Standard Snow Leopard Kextsツリーの中の
facesmc.kext
EvOreboot.kext

5.インストール完了後再起動する.
再起動時に必ずCDからブートする事,HDDのChameleonはこの段階ではまだ無効.
Radeon系カードの場合は-xオプションを忘れずに.
6.R1000SL.kextを適用したのでネットワークインターフェイスが有効になる.
ここでシステムアップデートを行い,10.6.2にバージョンを上げる.

7.10.6.2適用後再起動がかかるが,ここでCDを取り出す.
HDD上のChameleonを使ってOSXがブートするはずである.
しかしRadeon系カードの場合まだ-xオプションが必須.
8.Radeon系カードを利用している場合はここを参照して欲しい.
ただしこれはRadeon4850の有効化についてである.
その他のカードの場合OSX86wikiを参照して欲しい.
http://www.insanelymac.com/forum/index.php?showtopic=206466&pid=1380825&mode=threaded&start=#entry1380825

9.スリープ機能の有効化
DSDTパッチも適用してほぼすべての機能が正常に作動するはずである.
しかし一つだけおかしな機能があるのではないか?
スリープ機能が何故か正常に機能しない.
筆者はここで5時間以上時間を費やした.
原因はappleintelcpupowermanagement.kextである.
これはたぶんCPUの電力管理を行っているドライバだと思うが,これがあると
スリープから復帰しなかったりPOSTスクリーンにもどってしまう.
筆者はこれを削除する事で対応したが,もっと賢いやり方があるのかも知れない.
このkextの場所はHDDルート¥システム¥ライブラリ¥Extensionsの中にある.
場合によっては削除してしまっても良いかも知れない.
削除した後にもう一つ必要なkextがある.
Googleで検索すれば落ちていると思うがSleepEnabler.kextを探してこよう.
10.6.2専用のものが必要なので注意して頂きたい.
SleepEnabler.kext:http://netkas.org/?p=315

重要!


「kextのインストール後はキャッシュファイルの再構築が必要になる.
これを簡単に行うにはkext Utiltyというツールが便利である.
単純に実行するとシステム全体のキャッシュファイルを再構築する.
Extensionsフォルダをドラッグすると,そのフォルダに関するキャッシュだけを再構築してくれる.」

※ Kextを置く場所について.
「kextは基本的にExtensionsディレクトリの中に配置する.
Extensionsの場所は,
・HDDルート¥システム¥ライブラリ¥Extensions
・HDDルート¥Extra¥Extensions
この二つが存在する.
基本的にはどちらに配置しても同じであるが,
HDDルート¥Extra¥ExtensionsフォルダはOSX標準の場所ではなく,
Chameleonのコンセプトとして
「OSXのカーネルをほとんど改変せずに通常のPCで動かす」事を目的としている側面がある為で,
HDDルート¥システム¥ライブラリ¥Extensionsに配置すると,システムアップデートなどで
追加したkextが消えてしまう恐れがある事も考えられる.
特別な理由が無い限りはHDDルート¥Extra¥Extensionsの方が良いかも知れない.

上記作業が完了したら環境設定の省エネルギーですべてのチェックボックを有効にしよう.
その後再起動すると,スリープ機能が有効になるはずである.




10.DSDTパッチの編集をして電源ボタンによるスリープを有効にする.
DSDTパッチを適用しても電源ボタンによるスリープだけは適切に機能しないはずである.
しかし幸いにもこれは簡単に修正が可能だ.
DSDT.amlはそのままでは編集出来ない.
.dsl形式に変更した上でテキストエディタ上から書き換えを行う.
DSDTの書き換えを行うには,iaslMeというツールを使う.
Googleで探せばヒットすると思う.
iaslmeをダウンロードしたらデスクトップなどの適当な場所にコピーしよう.
HDDルート¥Extraディレクトリ内のDSDT.amlをデスクトップにコピーする.
cpコマンドを使ってもFinderからでも構わない.
コピーしたDSDTをiaslmeの上にドラッグする.するとデスクトップ上にDSDT.dslが
完成しているはずである.これをテキストエディタで開き,
Device (PWRB)
{
Name (_HID, EisaId ("PNP0C0C"))
Name (_UID, 0xAA)
Name (_STA, 0x0B)
}
この項目を見つける.
Name (_HID, EisaId ("PNP0C0C"))
の部分を
Name (_CID, EisaId ("PNP0C0C"))
に変更する.

変更が終わったら保存して再度iaslmeにドラッグすると.aml形式にコンパイルされるはずだ.
これを再度HDDルート¥Extraディレクトリに書き戻す.
再起動して電源ボタンを押してみよう.スリープするはずである.

以上でOSXのインストールは完了である.
これ以外にも必要なkextがあるかも知れない.
以下で筆者のインストールしているkextを紹介する.

★オプショナルインストール
筆者の環境ではその他に再起動に不具合が見られた為kextを追加している.
筆者が追加しているkextを一覧にしておく.
なおkext追加後は必ずキャッシュの再構築を忘れないようにして欲しい.

evoreboot.kext・・・再起動に関する問題を修正する.
fakesmc.kext・・・温度管理等のデータを取得する.(これは必須?)
LegacyHDA.kext・・・ALC889を認識させる.
LegacyATI4800Controller.kext・・・Radeon4850を有効にする.
SleepEnaber.kext for 10.6.2・・・再起動を有効にする.
PlatformUUID.kext・・・UUIDの相違によるTimeMacineの問題を解決する.(必須?)
R1000SL.kext・・・ReaktekR1000ネットワークインターフェイスを有効にする.


★追記:
smbiosの中身を編集しないとメモリ認識やプロセッサの認識が不完全である.
smbiosについて書いておく.

以下は筆者の環境のSMBIOSである.
このまま使ってもらっても基本的に支障はない.

ここから





SMbiosvendor
Apple Inc.
SMbiosversion
MP41.88Z.0081.B07.0903051113
SMbiosdate
04/01/2009
SMboardmanufacturer
Apple Computer, Inc.
SMboardproduct
Mac-F4208DC8
SMfamily
MacPro
SMmanufacturer
Apple Inc.
SMproductname
MacPro4,1
SMserial
W87xxxxxxxxx
SMsystemversion
1.0
SMUUID
xxxxxxxxx
SMmemtype
24
SMmemspeed
1600
SMmemmanufacter
Apple Computer Inc.
SMmempart_1
xxxxxxxxxx
SMmempart_2
xxxxxxxxx
SMmemserial_1
xxxxxxxxx
SMmemserial_2
xxxxxxxxx
SMexternalclock
133
SMmaximalclock
2800




ここまで

編集が必要なのは,
SMmemtype
24
これはメモリのタイプである.
24だとDDR3と認識する.
SMmemspeed
1600
これはメモリのスピードである.
環境にあわせて入力する.
SMexternalclock
133
これはCPUのFSBスピード.
SMmaximalclock
2800
これはCPUの動作速度.

なおUUIDなどxxxx部分は自分の環境に合わせて欲しい.

★com.apple.boot.plistについて
起動時のオプションである.
これは検索すれば日本語の説明が沢山見つかる為参考までにかいておく.

ここから





Kernel
mach_kernel
Kernel Flags
GraphicsEnabler=Yes  ←GPUを有効に
Timeout
3            ←自動起動までの時間
Legacy Logo
Yes
EthernetBuiltIn
Yes
Graphics Mode
1680x1050x32     ←起動時の解像度



ここまで

____________________________________
*欄


・DSDT.amlについて.
DSDT.amlはBIOSとOSXがIOに関して整合性を取るためのパッチになる.
通常のPCだとBIOSはACPIのテーブル集合体になっている.
WindwsではACPIの規格に沿ったIO管理がなされているので意識する必要は無いが.OSXの場合そもそもAppleの純正ハードウェア以外で動作させる事を想定していない.その為にDSDT.amlを用いてACPIのテーブルをパッチしてOSXと整合性が取れるようにしている.

・Chameleonについて.
Chameleonとはブートローダの一種で,Linuxで言うGLUBと同じ働きをするが,Chameleonの場合DSDTパッチを当てる,EFIをエミュレーションするなど,OSXをPCで使うための機能が充実している.

.kextファイルについて.
これはWindowsで言うドライバパッケージと同じと言えばわかりやすいだろうか.
OSXではExtensionsディレクトリ内に置くことで一元管理されている.

EFIについて.
OSXではWindowsのようなレガシーなBIOSを使わない仕様となっている.
EFIと呼ばれるモジュールでIOの管理を行っている.
OSXをPCで使う場合,何らかの方法でEFIを実装する必要がある訳だ.
そこで登場したのがChameleonと呼ばれるブートローダになる.

com.apple.boot.plistについて.
この中にはOSXがブートする段階で必要になる設定情報が記載されている.
例えばブート時のレゾリューションやカーネルのモードなど.

smbios.plistについて.
この中には本体のシリアル番号,UUID,メモリ規格,バススピード,プロセッサスピード等が記載されている.これを弄ることによって自作機をiMacにしたり,MacProにしたり出来る.

と,ここで夢から覚めました.

参考文献と謝辞
tonymacx86's P55 Hackintosh Blogを参考にさせて頂き,
不明部分を追記,編集した上で日本語化したものとなっている.
素晴らしいツールを作成しているtonyにはこの場を借りて感謝申し上げる.
元の記事:http://tonymacx86.blogspot.com/2009/12/install-os-x-snow-leopard-directly-from.html


*不明確な部分,質問に関してはコメントからどうぞ!
可能な限り回答致しますが,私も不明確な部分が多い為
何卒ご了承いただきたい次第です.

0 件のコメント:

コメントを投稿