汎用PCでのAppleTV OSのブート — ディスカッション
さて…話はこうです。AppleTVのハードウェアは実質的に超ローエンドなMacであり、EFIを使用しています。AppleTVのソフトウェアは基本的に(記憶が確かなら10.4.7ベースの)Tigerに凝ったGUIを被せたものです。既存のTiger環境に代替Finderをインストールできることは知っていますが…
- 筆頭著者
-
@NebKiwi
公開日: 2009-05-01
- 収録コレクション
- OSx86 10.X コア基盤&ブートアーキテクチャ
- アーカイブ記録規模
- 累計閲覧 229,460 回 · 厳選フィールドノート 45 件(全 48 件の投稿より抽出) · 2009-05-01 – 2009-08-06
- 参加・検証メンバー (8)
- @andyvand (15)@NebKiwi (12)@alexkidd (6)@naquaada (5)@pαuℓzurrr. (4)@cmdshft (3)@milanca (2)@BlackCH
- 対応ハードウェア参照
- USB 3.2 Boot Flash Drives ↗ SATA III & NVMe SSDs ↗ AMD Radeon GPUs (QE/CI) ↗
さて…話はこうです。AppleTVのハードウェアは実質的に超ローエンドなMacであり、EFIを使用しています。AppleTVのソフトウェアは基本的に(記憶が確かなら10.4.7ベースの)Tigerに凝ったGUIを被せたものです。既存のTiger環境に代替Finderすなわち "Backrow.app" をインストールできることは知っていますが、フル機能のAppleTV OSそのものをPCハードウェア上でブートする上で何が障壁になっているのでしょうか?PC_EFIはTigerをブートできませんでしたっけ?手元にAppleTV OSのイメージ(Appleのサーバーから取得したアップデートDMG)があるので、いろいろ実験してみるつもりです…ぜひ皆さんの意見や知見をお聞かせください
コミュニティ検証報告・技術フィールドノート
全 48 件のオリジナル投稿から技術的価値の高い 45 件の検証報告を収録
以前Tiger環境に入れていたことがあるので、まだインストーラが残っていないか探してみますよ。ただ、現在のFrontRow 2.xはAppleTVと同じ見た目になっているので、今となってはわざわざ入れる必要もない気がします。個人的には、大きなアイコンが回転するFrontRow 1.xの見た目の方がずっとクールで好きでした。
本物のフルAppleTV OSをそのままブートできたら、かなりクールだと思います。
ただ、FrontRow 2アプリ自体はなんだか味気ないんですよね。UIは悪くないのですが、単なるフェードアウト・フェードインではなく、AppleTVの電源を入れたときのような直感的なメニューや起動スプラッシュ画面が欲しいところです。もっとも、Tiger用のインストーラはLeopardでは動かないのが残念ですが。
Chameleon 2.1で独立したOSとしてサポートされたら素敵ですね!
@NebKiwiさて…話はこうです。AppleTVのハードウェアは実質的に超ローエンドなMacであり、EFIを使用しています。AppleTVのソフトウェアは基本的に(記憶が確かなら10.4.7ベースの)Tigerに凝ったGUIを被せたものです。既存のTiger環境に代替Finderすなわち "Backrow.app" をインストールできることは知っていますが、フル機能のAppleTV OSそのものをPCハードウェア上でブートする上で何が障壁になっているのでしょうか…
可能ではありますが、フルイメージとカスタムのプリリンク済みカーネル(prelinked kernel)が必要です…
ATV Take 2でも可能です(ちなみにこれは実質的に組み込み向けのxnu 10.5.6カーネルである点に留意してください…)
ハードウェアサポート用の追加kextも必要になります…
さらにBackRowの改変(内部にディスクGUIDを持たせるなど…)や、watchdog kextの削除(さもないと起動後すぐに再起動してしまいます…)も必要です
最後のステップは Finder.app(= BackRow.app)を改変し、マシンを正規の筐体として認識させるようバイナリにパッチを当てることです(特定の箇所の「等しければ分岐(BEQ)」を「等しくなければ分岐(BNE)」に書き換えます…)
AMD環境の場合は、さらにCPUIDにもパッチを当てる必要があります…
注:ATV OSの Finder.app はUSB IrDAトランシーバ+Apple Remoteを必須とするため、そのままではキーボードで操作できません…
ただし、これには回避策があります…
リモコンの6つのボタンをキーボードにマッピングできるリモコンエミュレーションkext+デーモンが存在します…
カーネルについては、私のカーネルソースからビルドしたものを提供できると思います。そうすればAMDとIntelの両方で問題なく動作しますし、カスタムダイナミックリンカも使用できます(標準のVoodooスタイルのdyldとは異なるビルドで、ビルド時に別のファイルを使用します…)
@andyvand可能ではありますが、フルイメージとカスタムのプリリンク済みカーネル(prelinked kernel)が必要です… ATV Take 2でも可能です(ちなみにこれは実質的に組み込み向けのxnu 10.5.6カーネルである点に留意してください…)。ハードウェアサポート用の追加kextも必要になります… さらにBackRowの改変(内部にディスクGUIDを持たせるなど…)や、watchdog kextの削除(さもないと起動後すぐに再起動してしまいます…)も必要です…
うわあ、すごく踏み込んだ解説をありがとう、Andy…これはなかなか歯ごたえのある挑戦になりそうですね。AppleTV OSにそこまで厳重なプロテクトがかかっているとは思いませんでした…
@NebKiwiうわあ、すごく踏み込んだ解説をありがとう、Andy…これはなかなか歯ごたえのある挑戦になりそうですね。AppleTV OSにそこまで厳重なプロテクトがかかっているとは思いませんでした…
書き忘れていたことがありました…BackRow.framework のバイナリも、ディスクのGUIDに加えて、/dev/diskXsY の記述をインストール先パーティションおよびドライブの /dev/diskXsY エントリに書き換える必要があります…
実機のiMac4,1でこれを実践して動作させた人を知っています…
Hackintoshでも間違いなく実現可能です…その点は問題ありません…
ただ、私が気づいた点として、ATV Take 2はLeopardカーネルを使用しているにもかかわらず、その上で動作するアプリやkext類は依然としてTiger向けにビルドされている傾向があります…
そのため、Tigerバージョンのkextが必要になるはずです(10.4.11のものがベストです…)
IR Remote EMUについては私の方で提供できます(改良版を持っています…)
ただしTiger SDK向けに再コンパイルする必要があります…(ATV Take 2 OS専用に最適化したカスタムSDKエントリを作ってもいいかもしれません…)
また、Finderバイナリのパッチ適用は、通常のMac OS X上で実行する場合にのみ必要となる可能性があります…
おそらく SystemVersion.plist のOS名が「AppleTV OS」に設定されているかをチェックしているだけだと思います(正確な名称は少し違うかもしれません… dmg内の /System/Library/CoreServices/SystemVersion.plist を確認してみてください)
仮にパッチが必要だったとしても…参照関係やコードをブラウズするなら ht(HT Editor)が最強の相棒になります…
これを使えば実に簡単にパッチを当てられますよ…
私はeHome互換のIRレシーバ(Windows Media Centerリモコン付属のものなど)と「Mira」というソフトウェアを組み合わせてApple Remoteを使っています。ただ、それはまた別のお話ですね。Andyが言っていたIR Receiver Emulatorのことは知っています。Tiger環境にFrontRowをインストールする際に必須だったものですよね。また、BackRowに「終了(Quit)」オプションを追加して、改変版Finderを起動できるようにするパッチもありました。しかし、それだけの労力をかける価値があるかどうかは微妙なところです。同じ結果を得たいなら、ベアボーンでHackintoshを組んでログイン項目にFrontRowを追加するだけでも済みますし、そうすればMiraを使ってApple Remoteもそのまま使えますからね。
ああ、そういえば /dev/diskXsY の書き換え作業、思い出しました。あれはバイナリエディタ(Hex Editor)で行う必要があったんですよね?それに確か、AppleTVソフトウェアは指定されたドライブのルートディレクトリに大量のフォルダ(00から99くらいまでの連番だったかな?)を自動生成するので、見た目がかなり散らかってしまった記憶があります。
@naquaada私はeHome互換のIRレシーバ(Windows Media Centerリモコン付属のものなど)と「Mira」というソフトウェアを組み合わせてApple Remoteを使っています。ただ、それはまた別のお話ですね。Andyが言っていたIR Receiver Emulatorのことは知っています。Tiger環境にFrontRowをインストールする際に必須だったものですよね。また、BackRowに「終了(Quit)」オプションを追加して…
Miraは本来のApple RemoteのIR信号変換ではなく、リモコンの機能を直接使用先の機能へとマッピングする仕組みだったと思うので、この用途では機能しないのではないでしょうか…
したがって別の選択肢としては、Finder.app を改変して BRFullScreenRenderer を BRWindowRenderer に置き換える方法があります(こうするとCommand+TabキーでOS側へ画面を切り替えられるようになります)。
もっとも、その場合でもインターフェースを操作するにはRemote Emuデーモンを動かしておく必要がありますが…
以前、私は6つの小さなアプリ(各ボタンにつき1つ)を自作し、アプリごとにマウス機能を割り当てられるツールを使ってそれらを AppleTV.app にマッピングしたことがあります(必要な各マウスボタンを適切なボタンにマッピングする方式です…ただし6ボタンマウスが必要になりますが…)。
そのアプリ自体は至ってシンプルで、適切な kern. などの関数に対して適切な sysctl アクションを送信するだけのものです。
この方法なら、アプリ起動中にマウスで操作できるようになります…(しかも通常の操作に干渉しないため、キーボードマッピング用のバックグラウンドデーモンも不要になります…)。
当時、Tiger 10.4.11が動くAMD PC上でテストし、問題なく動作することを確認しました
@NebKiwiPC_EFIはTigerをブートできませんでしたっけ?
EFI対応のブートローダーならどれでもいけるはずです…
Chameleon V2なら何の問題もなくバッチリ動作するでしょう…
もしPC向けのカスタムAppleTV Take 2 OSを作ろうと考えているなら、組み込みのAppleTVスタイル向けにカーネル一式をリビルドしてもいいですよ…
ただ、Mac OS X 10.4.11のインストールDVDはもう手元にないので、必要なドライバをカーネルにプリリンクする(mach_kernel.prelink を作る)のは難しいかもしれません…
もっとも、10.4.11の統合アップデート(Combo Update)を使えば一部のドライバは揃えられるかな…
どうするか教えてください…
プロジェクト
@andyvandもしPC向けのカスタムAppleTV Take 2 OSを作ろうと考えているなら、組み込みのAppleTVスタイル向けにカーネル一式をリビルドしてもいいですよ… ただ、Mac OS X 10.4.11のインストールDVDはもう手元にないので、必要なドライバをカーネルにプリリンクする(mach_kernel.prelinkを作る)のは難しいかもしれません… もっとも、10.4.11の統合アップデート(Combo Update)を使えばなんとかなるかな…
ぜひこういうプロジェクトに取り組んでみたいのですが、具体的にどうやればいいのかという技術力が決定的に足りていません。もちろんMac OS Xの仕組みは理解していますし、UNIXやOSx86全般に関する知識もそこそこあるのですが… なので、もし誰かこれに取り組んでくれる方がいれば、私にできる限りのあらゆる形でお手伝いしたいと思っています。ちょうど夏休みに向けて良いプロジェクトが欲しかったところですし、何もない田舎の村で暮らしていると退屈で仕方がないんです!
@NebKiwiぜひこういうプロジェクトに取り組んでみたいのですが、具体的にどうやればいいのかという技術力が決定的に足りていません。もちろんMac OS Xの仕組みは理解していますし、UNIXやOSx86全般に関する知識もそこそこあるのですが… なので、もし誰かこれに取り組んでくれる方がいれば、私にできる限りのあらゆる形でお手伝いしたいと思っています。ちょうど夏休みに向けて良いプロジェクトが欲しかったところですし…
了解です。ではカスタムダイナミックリンカを使ったAppleTV OS Take 2用の組み込みスタイルカーネルをビルドできるよう、カーネルのビルド手順に少し手を加えてみます…
そうすれば、後から必要なパーツ(kextやドライバ)を mach_kernel にプリリンクして(つまり mach_kernel.prelink を作成して)使えるようになります。
あわせて必要なIR Remote EmulatorもTiger向けに再コンパイルしておきますね…
両方とも完成したらお送りします(まだ仕事が山積みなので、明日取りかかることになりますが…)
@andyvand了解です。ではカスタムダイナミックリンカを使ったAppleTV OS Take 2用の組み込みスタイルカーネルをビルドできるよう、カーネルのビルド手順に少し手を加えてみます… そうすれば、後から必要なパーツ(kextやドライバ)をmach_kernelにプリリンクして(つまりmach_kernel.prelinkを作成して)使えるようになります。あわせて必要なIR Remote EmulatorもTiger向けに再コンパイルしておきますね…
Andy、あなたは本当にすごいです。いやもう、心から感謝します!なんて親切なんでしょう。他に参加してくれる方はいませんか?時間に余裕のある超ギークなOSx86猛者の方はぜひ!
AppleTV
よし、フルシステムイメージ(2.3.1)を用意し、専用パーティションへ復元しました。いつでも試せる状態です
@NebKiwiよし、フルシステムイメージ(2.3.1)を用意し、専用パーティションへ復元しました。いつでも試せる状態です
(笑)M$の愚か者バルマーの名言を借りるなら…
@Steve BallmerDevelopers, developers, developers...(開発者、開発者、開発者だ…)
よし…少し空き時間ができたので、適切なカーネルを作成するためにソースのアップデート作業に取りかかっています…
完成したらまた投稿します…
順調に進んでいますよ…
ただ、dyldをビルドするためにカスタムSDKを作成する必要がありました…
引き続き作業を進めます…
@andyvand順調に進んでいますよ… ただ、dyldをビルドするためにカスタムSDKを作成する必要がありました… 引き続き作業を進めます…
やったー!作業してくれて本当にありがとうございます!
@NebKiwiやったー!作業してくれて本当にありがとうございます!
よし…カスタムAppleTV用dyldがビルドできました(i386専用です…)。
今まさにカーネルをビルドしている最中です…
もうまもなく完成すると思います…
グラフィックス、サウンド、チップセット、無線LAN(WLAN)のドライバや、AMD対応についてはどうなるのでしょうか… 特にAppleTVが依然としてTigerベースで、新しいグラフィックスカードがLeopardでしかサポートされていないとなると、グラフィックス周りが問題になりそうな気がします。
いいえ、問題にはなりませんよ…
これはAppleTV向けにビルドしたLeopardカーネルですから(AppleTV標準の792.XXX.XXX系カーネルとは異なります)。
より新しいkextもサポートしますし、その他の部分も完璧に動作します…
他のkext類も(互換性が保たれているため)機能しますし、残りのコンポーネントも申し分なく動作するはずです…
お待たせしました、ここに発表します:
AppleTV OSカーネルです…
ダウンロードはこちら:
rapid share.com/files/230399705/AppleTV_Kernel.zip
AppleTV
家に帰り次第すぐに試してみます!今はまだ大学にいるもので。ありがとう、Andy。
@andyvandお待たせしました、ここに発表します:AppleTV OSカーネルです… ダウンロードはこちら: rapid share.com/files/230399705/AppleTV_Kernel.zip
これで実機上でAppleTVが動いたら、具体的にどうやって動かしたのかぜひ詳しく教えてください。これが成功したら歴史的快挙ですよ。
改造版として「AndyTV」なんて名前を付けてはどうでしょう。
適切なインストーラがあれば最高ですね。USBメモリやUSBハードディスクからでも動作するでしょうか?
@naquaada改造版として「AndyTV」なんて名前を付けてはどうでしょう。適切なインストーラがあれば最高ですね。USBメモリやUSBハードディスクからでも動作するでしょうか?
計画としては、まず動作が確認できたら、それをpkgにまとめてLeopard DVDに追加し、改変版インストーラを作ろうと考えています…
@NebKiwi計画としては、まず動作が確認できたら、それをpkgにまとめてLeopard DVDに追加し、改変版インストーラを作ろうと考えています…
テストの進み具合はいかがですか?
うまくブートできそうでしょうか?
ブートテスト
@andyvandテストの進み具合はいかがですか?うまくブートできそうでしょうか?
やあAndy、もうクタクタなので今日はもう寝ます!明日またいろいろいじってみるつもりです。この忌々しいプリリンクカーネルさえうまく動かせればいいのですが… とりあえず /S/L/E にkextを入れるだけでどこまで進めるか試してみます。
それではまた、進捗があれば随時報告しますね。
Atv
このプロジェクトを手伝ってくれるボランティアの方がいれば本当に助かります… 数GBほど空き容量を割ける方はいらっしゃいませんか?OS自体は初期段階まで問題なくブートしているのですが、私のハードウェア固有と思われる軽微なエラーがいくつか出ています。興味のある方はPMを送ってください。よろしくお願いします。
私の方でも外付けUSB HDDかUSBメモリからのブートを試せますよ… 2GBで足りないようなら、空き容量がたっぷりあるUSB HDDを使います。
@milanca私の方でも外付けUSB HDDかUSBメモリからのブートを試せますよ… 2GBで足りないようなら、空き容量がたっぷりあるUSB HDDを使います。
(小さい方の領域なら)2GBあれば十分足りるはずです…
おそらくAppleTVと同じGUIDを持つGUIDパーティションテーブル(4パーティション構成。外付けHDDを使用する手順についてはAwkwardTV Wikiを確認してください…あちらのパーティション作成ガイドがそのまま使えるはずです)としてセットアップする必要があります
了解です、Andy、ありがとう… 完全に空にしているUSB HDDが1台あるので、データの心配をせずに好きなようにパーティションを切れます。詳細情報をPMで送ってもらえれば、手持ちのマシンでテストしてみます。
私もぜひテストしてみたいです…
ただ、私の環境はAMDシステムなのですが、このAppleTVカーネルはAMDシステムでも動作しますか?
また、全体の設定手順はどのようになりますか?
AppleTV OSをHDDに展開して、カーネルを差し替え、必要なkextを追加してブートするだけでいいのでしょうか?
よろしくお願いします!
Appleのサーバーから直接イメージをダウンロードします。こちらをクリック: (mesu.apple.com/data/OS/061-5816.20090224.At23V/2Z694-5587-18.dmg)
カーネルをこのスレッドでAndyが投稿してくれたものに差し替え、標準のLeopardのkext類をすべてコピーします(もちろん System.kext と IPFirewall.kext はAndyのパッケージ内のものを使用します)。デフォルトでExtensionsフォルダに入っているwatchdog kextを削除します。あとはアクセス権を修復してブートを試みる…基本的にはこれだけです。楽しんでください!
AMDとIntelの対応状況については…皆目見当がつきません。ただ、カーネルがAndyのカーネルソースをベースにしているため、おそらく動作するのではないかと思います。
ディスクイメージをマウントしてみたのですが、watchdog kextが見当たりません。他に何か必要な情報や手順はありますか?ぜひこれをいじって遊んでみたいのですが。
追記:すみません、見つかりました。ということは、基本的には普段使っているLeopardのkextをコピーするだけで終わりということですよね?かなりシンプルそうですね。
@Hara Taikiディスクイメージをマウントしてみたのですが、watchdog kextが見当たりません。他に何か必要な情報や手順はありますか?ぜひこれをいじって遊んでみたいのですが。追記:すみません、見つかりました。ということは、基本的には普段使っているLeopardのkextをコピーするだけで終わりということですよね?かなりシンプルそうですね。
ええ、基本的にはそれだけです。ぜひ楽しんでください!
@NebKiwiええ、基本的にはそれだけです。ぜひ楽しんでください!
詳しい手順を投稿してもらえませんか?
Appleのサイトからdmgをダウンロードし、USBフラッシュドライブに復元しました。
自分のLeopardのkextをOSBootのkextに上書きコピーし、Andyの mach_kernel、System.kext、IPFirewall.kext をコピーして置き換え、watchdogを削除しました。
そしてChameleon EFIをインストールし、アクセス権を修復しました…
ところがブートしてみると、「error parsing plist fileloading Darwin/x86」と表示され、
続いて「errors encountered while starting up the computer」と表示されてしまいます
@NebKiwiAppleのサーバーから直接イメージをダウンロードします。こちらをクリック: (mesu.apple.com/data/OS/061-5816.20090224.At23V/2Z694-5587-18.dmg) カーネルをこのスレッドでAndyが投稿してくれたものに差し替え、標準のLeopardのkext類をすべてコピーします(もちろん System.kext と IPFirewall.kext はAndyのパッケージ内のものを使用します)。デフォルトでExtensionsフォルダに入っているwatchdog kextを削除します…
ということは、動作に成功したのですか?
もしそうなら、動画か写真をいくつか投稿してもらえませんか?
私もこれから自分で試してみるところです
追記:
どうやら自分のシステムを飛ばしてしまったようです…
今週これで2回目です…
新しいパーティションを作成し、そこにOSBootを復元しました。
次にすべての機能拡張(Extensions)を置き換え、watchdogを削除し、AnV Apple TVカーネルを追加しました。
その後システムをブートしようとしたところ、
「boot0: done」とだけ表示されてPCが再起動してしまいました…
インストールDVDを使ってAppleTVパーティションを削除してみたのですが、今度はOS Xのハードディスクからブートしようとするとメモリアロケーションエラー(memory allocation error)が出るようになってしまいました…
ハードディスクにChameleonを復元(再インストール)することは可能でしょうか?
最新バージョンを使用していました…
よろしくお願いします!
OSBootのExtensionsフォルダに追加したkextのアクセス権(パーミッション)は、どうやって適用すればいいですか?
@pαuℓzurrr.ということは、動作に成功したのですか? もしそうなら、動画か写真をいくつか投稿してもらえませんか? 私もこれから自分で試してみるところです 追記: どうやら自分のシステムを飛ばしてしまったようです… 今週これで2回目です… 新しいパーティションを作成し、そこにOSBootを復元しました。 次にすべての機能拡張(Extensions)を置き換え、watchdogを削除し、AnV Apple TVカーネルを追加しました。 その後システムをブートしようとしたところ…
どなたか助けていただけませんか?
USBパーティションにOS Xをインストールしてハードドライブにはアクセスできるようになったのですが、メインパーティションがマウントできません!First Aidを実行する必要があるというエラーが出るので実行してみたところ、次のエラーが表示されます:
Verifying volumes "disk0s2"
** /dev/disk0s2
Invalid BS_jmpBoot in boot block: fa31c0
Error: File system verify or repair failed.
ハードディスク内のデータを救出することはまだ可能でしょうか?
どなたかパッチ済みのAppleTV 2.3.1用Finderを送っていただけませんか?
さらに 4 件のコミュニティ検証ノートを表示完全なアーカイブ記録
Well my hdd was ----ed up and i needed to write zero's to make it work again...
So warning to all, Don't Install On Same HDD as you're running install...
ok, i've patched the appletv finder and managed to boot to the itunes pairup screen.
but i have no way of controlling it
the keyboard and mouse won't work
@alexkiddok, i've patched the appletv finder and managed to boot to the itunes pairup screen. but i have no way of controlling it the keyboard and mouse won't work
You need to install the remote emu by Brandon Holland:
brandon holland.com/irkeyboardemu.html
This will allow you to control aTV with a USB keyboard
have any one tried appletv os 2.4 ?
it seems that they have added some checks to prevent non atv hardware to sync with itunes.
hopefully someone will come out with a patch.
出典および貢献者来歴(クレジット登録 8 名 · 元スレッド #2738)
| ユーザー名 | 貢献ロール | 投稿数 | 活動期間 |
|---|---|---|---|
| @andyvand | 主要貢献者 | 15 | 2009-05-04 → 2009-05-10 |
| @NebKiwi | 筆頭著者 | 12 | 2009-05-01 → 2009-05-17 |
| @alexkidd | 主要貢献者 | 6 | 2009-05-18 → 2009-08-06 |
| @naquaada | 主要貢献者 | 5 | 2009-05-01 → 2009-05-08 |
| @pαuℓzurrr. | 主要貢献者 | 4 | 2009-05-17 → 2009-05-20 |
| @cmdshft | 主要貢献者 | 3 | 2009-05-01 → 2009-05-17 |
| @milanca | 検証メンバー | 2 | 2009-05-10 |
| @BlackCH | 検証メンバー | 1 | 2009-05-21 |