QUOTE(Atsushi @ Nov 11 2006, 10:43 AM)

話は変わりますが、最近、
Mac OS X Developer Transition KitをもとにOSx86 10.4.1 インストールDVD自作に挑戦してみました。が、撃沈です。
hdiutilコマンドでEltoritoブートを指定したにもかかわらず、ブータブルにならないし、
無理矢理、"mach_kernel rd=disk1s2 -v"でブートしてみたら、ルートデバイスを見つけたところで、
マウントまでできてないようで、パニックを起こしました。カーネルデバッグに挑戦かも!?です。

無理矢理、"mach_kernel rd=disk1s2 -v"でブートしてみること自体、誤りでした。
実は、OSx86 10.4.7インストールマシンで自作OSx86 10.4.1インストールDVD作成して、
ブートテストしてました。"mach_kernel rd=disk1s2 -v"でブートしてみること自体、誤りであり、
これじゃあ、OSx86 10.4.7インストールマシンのHDDのカーネルでブートを試みてることでした。
最初から出直し、なんとか、なんとかブータブルDVDを焼けましたが、
結果から先に言うと、インストール画面が表示されずフリーズします。
具体的なエラー内容は
Can't load \System\Library\PrivateFrameworks\NetInfo.framework\Resources\lookupd\Agents\DS.bundle\DS
と、
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Resources/DMProxyで4つエラー発生して
フリーズしました。
"なんだ、じゃあ、長々と書くなよ"とおっしゃる方もおられるでしょうが...。
ここを参考に
以下の手順でDVD作成しました。
1. /Users/atsushiへワーキングディレクトリdevkitdvd作成
mkdir devkitdvd
2. Mac OS X 10.4 Tiger Developer's Transition Kit DVDをワーキングディレクトリへコピー
sudo ditto -rsrc /Volumes/Mac\ OS\ X\ Install\ Disc\ ./devkitdvd
(-rsrcオプションはMac OS X 10.4でデフォルトなので必要なしだと思う)
3. /devkitdvd/System/Library/Extensions.mkext, Extensions.kextcacheを削除、/devkitdvd/System/Library/Extensions フォルダを空にする。
-> Extensions.kextcacheが見当たらなかった。
4. Mac OS X 10.4 Tiger Developer Transition KitのEssentials.pkg/Contents/Archive.pax.gzを
pax解凍して得られるExtensionsをdevkitdvdのExtensionsへコピー
cd /Volumes/Mac\ OS\ X\ Install\ Disc\
cp System/Installation/Packages/Essentials.pkg/Contents/Archive.pax.gz /tmp
sudo pax -rzf Archive.pax.gz
sudo mv /tmp/System/Library/Extensions/* /Users/atsushi/devkitdvd/System/Library/Extensions
5. /devkitdvd/System/Library/Extensions/IOATAFamily.kextを削除
6. darwin 8.0.1インストールCDから(/System/Library/Extensions)
IOATAFamily, AppleAC97Audio, AppleI386GenericPlatform, AppleI386PCI, and ApplePS2Controller kextsをコピー
7. maxxus0.4のパッチ済みファイルをコピー(今回はSSE2パッチのものだけ)
CoreGraphics
"/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/
CoreGraphics.framework/Versions/A"ディレクトリへ上書き
libSystem.B.dylib
"/usr/lib"ディレクトリへ上書き
sudo cp ./libSystem.B.dylib /Users/atsushi/devkitdvd/usr/lib
oah750
"/usr/libexec/oah"ディレクトリへ上書き
sudo cp ./oah750 /Users/atsushi/devkitdvd/usr/lib
mach_kernel
"/"ディレクトリへ上書き
8. テンポラリフォルダへDarwin/x86ブートローダ−関連ファイルを準備し、ブータブルなDVDのためのISOイメージを準備する。
mkdir /tmp/i386
cp /Users/atsushi/devkitdvd/usr/standalone/i386/* /tmp/i386/
sudo /Users/atsushi/mkisofs -V MyOSx86 -no-emul-boot -b cdboot -boot-load-seg 0x07c0 -boot-load-size 4 -o /Users/atsushi/MyOSx86.iso .
(hdiutil mkehybridでもブータブルなDVD作成おためのオプションがあるんですが、私は何度やってもダメでした。
今回、使用したのはDarwin Portsのmkisofsで、PowerPCバイナリです。)
9. 自作OSx86インストールDVDイメージMyOSx86.iso.dmgを準備する。
hdiutil create MyOSx86.iso.dmg -size 3000M -layout NONE
10. MyOSx86.iso.dmgのデバイスファイルをゲット(こんな表現が妥当なのか、非常に不安)
hdid -nomount MyOSx86.iso.dmg
11. pdiskでMyOSx86.iso.dmgのデバイスファイルをイニシャライズ(変な表現で、非常に不安)
pdisk /dev/rdisk2 -initialize
12. できたスライスを確認
pdisk /dev/rdisk2 -dump
13. MyOSx86.iso.dmgのスライスをHFSで作成
pdisk /dev/rdisk2 -createPartition Install_MyOSx86 Apple_HFS 704 6143232
(704は"du empty.iso.dmg"実行して取得、6143232は"pdisk /dev/rdisk2 -dump"で得られるスライス2の大きさ)
14. 8で準備したブータブルなDVDのためのISOイメージをdd書き込み
dd if=MyOSx86.iso of=/dev/rdisk2 skip=64 seek=64 bs=512
15. disk2, slice3をhfsファイルシステム作成
newfs_hfs -v MyOSx86 /dev/rdisk2s3
16. 15で作成したボリュームをマウント
mount -t hfs /dev/disk2s3 /mnt
17. 1-7で準備したインストールDVDの実体を16でマウントしたボリュームにditto
sudo ditto -rsrc /Users/atsushi/devkitdvd /mnt
このコマンド実行により、自作OSx86インストールDVDイメージMyOSx86.iso.dmgへ
インストールDVDの実体が準備されることになると理解してます。
18. blessって意味不明だけどやりました。
bless -folder /mnt/System/Library/CoreServices -bootinfo /mnt/usr/
standalone/ppc/bootx.bootinfo -label MyOSx86
19. マウント解除とイジェクト
umount /mnt
hdiutil eject /dev/disk2
これが終了すると、自作OSx86インストールDVDイメージが完成したことになります。
20. 最後にDVDに焼く
hdiutil burn -fullerase ./MyOSx86.iso.dmg
私はDVD-RWでテストしていました。メディアを入れないで、このコマンドを実行すると
"メディアを入れてくれ"と言われます。そして、消去完了後にイメージ書き込みします。
最後に、Darwin/x86ブートローダ−が自作インストールDVDを認識した写真を添付します。