オープン OS プラットフォーム相互運用性
2025/6/30時点のopen-os-interopの翻訳
訳注: プロジェクトページへのリンクは対応する日本語訳のページに置き換え
序文¶
この文書は、Apple Silicon (M1 以降) Mac 上でオープンな OS がどのように相互運用されるべきかについての我々のビジョンを 示すものです。まず、Apple Siliconの紹介 を読み、Apple の観点からこのプラットフォームがどのように設計されているかを 学ぶことをお勧めします。
この文書にある考え方は、厳しい要求や規則を設定することを意図したものではありません。むしろ、エンドユーザーが異なるOSを 共存させ、インストールしやすくするための一連の標準に合意し、可能な限りシンプルでシームレス、かつ将来性のある プロセスを目指したいと考えています。
この文書はドラフトであり、これらのプラットフォーム上でオープンなOSのエコシステムを構築する方法の将来を形作るのを助けるために、 すべてのコメントと議論を歓迎します。一般的な質問やフィードバックがある場合は OFTC の #asahi に、開発者で技術的な議論を したい場合は #asahi-dev にアクセスしてください (さらなる情報)。
OS のレイアウトと起動¶
Apple Silicon機器のOSは、Appleのツールで見ると、APFSコンテナパーティションの一部を意味します。機器はネイティブに マルチブートに対応し、プラットフォームのセキュリティ設計に適合するため(例:SEPは起動したOSを知るべき)、 インストールされたOSとプラットフォームから見たOSを1対1に対応付けることを推奨します。
サードパーティ製 OS については、OS ごとに以下の GPT パーティション構造を提案します:
- APFSコンテナパーティション(『スタブmacOS』)(〜2.5GB)
- iBoot2、ファームウェア、XNU カーネル、RecoveryOS (すべてプラットフォームが要求するもの)
- fuOS カーネルとしてのm1n1、チェーンローディング設定は EFI パーティションを指す
- 空のroot/dataファイルシステムサブボリューム
- EFI システムパーティション (FAT32) (~512MB):
- m1n1ステージ2 + DeviceTree + U-Boot
- GRUBもしくは他のUEFI OSローダーがターゲットカーネルを起動
- root/boot/等のパーティション(OS固有)
根拠(Rationale):この配置は、Appleのツールから見たサードパーティ製OSとAPFS常駐OSを対にし、ユーザーがネイティブブートピッカー (a11y対応付き)を使用できるようにします。これは、複数のOSが共有OSのコンテキストでSEPを管理しようとすることで 発生する可能性のあるトラブルを回避することができます。また、OS のセキュアブートチェーンも独立させることができます (実装されれば)。fuOS イメージは後続のブートステージのための信頼のルートを含み、インストール時にユーザーが機器 所有者の認証情報を使ってマシンの信頼のチェーンに橋渡しされます。
1つのAPFSコンテナを複数のOS(さらにはmacOS)で共有することは可能ですが、OSごとにわずかなディスクスペースを節約する 以外には、あまり意味がないでしょう。インストールした OS ごとに個別のコンテナパーティションを使用することで、 ワイプして最初からやり直すことが容易になります。そうでなければ、特定の APFS サブボリュームを削除したり、 他のディレクトリツリーをワイプするなど、より複雑なクリーンアップ処理が必要になります。
この設計では、従来とは異なり、インストールされたOSごとにEFIシステムパーティション(訳注: EFI System Partition、ESP)を用意します。1つは、各OSは 論理的に『コンテナ』であり、EFIの実装自体も含まれているため、他のOSのESPと分離することが理にかなっているからです。 第二に、EFI可変ランタイム・サービス(後述)がないため、共存する複数のOSがESPを共有し、それぞれのEFIブート・エントリを 設定することが困難であることです。別々のESPを持つことで、デフォルトのブートパス(`EFI BOOT