Boot
title: Apple Silicon ブートフロー summary: Apple Silicon 機器で使われるブートフロー、Soc 統合 ROM からユーザコードまで
2025/10/11時点のbootの翻訳
Apple Siliconデバイスは現在のiOSデバイスと非常によく似たブートフローをたどるようです。
Stage 0 (SecureROM)¶
このステージは、ブートROM内にあります。とりわけ、NORから通常のステージ1を検証、ロード、実行します。 失敗した場合は、DFUにフォールバックし、iBSSローダーが送られてくるのを待ってから、ステージ1のDFUのフローを続行します。
通常の流れ¶
Stage 1 (LLB/iBoot)¶
このステージはオンボードのNORにあるプライマリアーリーローダー(primary early loader)です。このブートステージでは、非常に大まかに以下のような流れになります:
- NVRAMから
boot-volume変数を読み込み: そのフォーマットは<gpt-partition-type-uuid>:<gpt-partition-uuid>:<volume-group-uuid>。その他の関連する変数はupdate-volumeとupgrade-boot-volumeのようで、おそらくboot-info-payload変数内のメタデータによって選択される - ローカルポリシーのハッシュを取得:
- 最初にローカルで提案されているハッシュ(SEP コマンド11)を試みる
- それが利用できない場合は、ローカルのブレスドハッシュ(blessed hash)を取得 (SEP(コマンド14))
- iSCPreboot パーティションの
/<volume-group-uuid>/LocalPolicy/<policy-hash>.img4にあるローカルブートポリシーを読む。 このブートポリシーには次のメタデータキー (4CCs): vuid: UUID: Volume group UUID - 上記と同じkuid: UUID: KEK group UUIDlpnh: SHA384: ローカルポリシーのナンスハッシュ(nonce hash)rpnh: SHA384: リモートポリシーのナンスハッシュronh: SHA384: リカバリ OS ポリシーナンスハッシュnsih: SHA384: 次のステージのIMG4ハッシュcoih: SHA384: fuOS(カスタムkernelcache)IMG4ハッシュauxp: SHA384 ユーザーが許可した補助的なカーネル拡張のハッシュauxi: SHA384: 補助的なカーネルキャッシュ IMG4 のハッシュauxr: SHA384:補助的なカーネル拡張機能のレセプターのハッシュprot: SHA384: Paired Recovery manifestのハッシュhrlp: bool: Secure Enclave が署名するリカバリ OS ローカルポリシーlobo: bool: ローカルブートポリシーlove: bool: ローカル OS バージョンsmb0: bool: Reduced security を有効化smb1: bool: Permissive security を有効化smb2: bool: サードパーティ製カーネル拡張を有効化smb3: bool: 手動でモバイルデバイス管理(MDM)を登録smb4: bool?: MDM デバイス登録プログラムを無効化sip0: u16: カスタマイズされた SIPsip1: bool: 署名付きシステムボリューム(csrutil authenticated-root)を無効化sip2: bool: CTRR (Configurable Text Region Read-only Region) を無効化sip3: bool:boot-argsフィルタリングを無効化
また、オプションとして、以下のリンクされたマニフェストが、それぞれ /<volume-group-uuid>/LocalPolicy/<policy-hash>.<id>.im4m に存在:
- auxk: AuxKC (サードパーティのkext) manifest
- fuos: fuOS (カスタムkernelcache) manifest
-
次のステージを読み込む場合:
-
ブートディレクトリはターゲットパーティションのPreboot subvolumeのパス
/<volume-uuid>/boot/<local-policy.metadata.nsih>に存在 -
/usr/standalone/firmware/iBoot.img4` を同じディレクトリにあるデバイス・ツリーや他のファームウェア・ファイルと一緒に復号、検証、実行。他のメタデータ記述子についてはまだ根拠なし -
カスタムステージ(fuOS)を読み込む場合:
-
...
この段階で失敗すると、エラーになるか、DFUにフォールバックし、iBECローダーの送信を待ってから、DFUの流れでステージ2に進みます。
Stage 2 (iBoot2)¶
このステージはOSレベルのローダーで、OSパーティションの中にありmacOSの一部として出荷されています。システムの残りの部分をロードします。
DFUの流れ¶
Stage 1 (iBSS)¶
このステージは『復元』ホストからデバイスに送られます。このステージでは、2つ目のステージであるiBECのブートストラップ、検証、実行が行われます。
Stage 2 (iBEC)¶
モード¶
起動すると、APはSEPで確認できるようにブートモードのいずれかになります:
| ID | Name |
|---|---|
| 0 | macOS |
| 1 | 1TR ("one true" recoveryOS) |
| 2 | recoveryOS ("ordinary" recoveryOS) |
| 3 | kcOS |
| 4 | restoreOS |
| 255 | unknown |
SEPでは、1TRで特定のコマンド(ブートポリシーの編集など)の実行を許可していないと、エラー11『AP boot mode』で失敗します。