U-Boot
2025/3/9時点のu-bootの翻訳
訳注: - このページの内容は失敗するとM1 Macが起動しなくなったりリカバリーできなくなる可能性があります。 - Arch Linuxのwikiへのリンクは対応する日本語訳へのリンクに変更。
U-Bootはm1n1の第2ステージのデフォルトペイロードで、Arch64開発者におなじみの標準的なプリブート環境を提供するために使われます。 Apple Siliconのブートツールでは外部ブートはサポートされていないため、U-BootはPCライクなブート環境を提供するために必須です。 このページでは、U-Bootの使い方と、手動でビルドしてインストールする方法について説明します。 Apple Silicon機器でよくサポートされているディストリビューション、つまりAsahi 自身か SW:代替ディストリビューション にリストされているものを 使用していることを前提としています。
ここに記載されている U-Boot のビルドとインストールの手順は、文書化と開発目的のためのものであることに注意してください。
もしあなたが Asahi ユーザーで、U-Boot や m1n1 をハックすることに興味がなければ、pacman
を使って自動的に管理されます。
代替ディストリビューションにリストされている(ほとんど)全てのディストリビューションについても同じことが言えるはずです。
標準的なブートフロー¶
U-Boot の UEFI 実装を利用して ペアになった EFI システム上で/EFI/BOOT/BOOTAA64.EFI
にある UEFI バイナリをロードして実行します。
Asahi インストールのデフォルトのペイロードは GRUB です。U-BootはGRUBにFDTへのポインタを自動的に渡します。
代替案¶
デフォルトの U-Boot スクリプトは、実行時に中断してブートフローを手動で変更することができます。これによって、ユーザーは 外部メディアからのブート、任意の UEFI コードの実行、カーネルを直接ロードしてジャンプ、などなどが可能になります。
既知の問題¶
- USB-A ポートがあるマシンでは、コントローラが再配布できないファームウェアを必要とするため非動作
- iMac の電源ケーブルから最も遠い USB Type-C ポート 2 つ、および M1 Max Mac Studio の前面ポート 2 つも同様
- 複数の機能を公開する特定のUSBデバイス(NIC付きハブ、高級ゲーミングキーボードなど)は非動作
- SDカードリーダーを内蔵したUSBハブは、スロットが空の場合、機器がハードリセット。この問題は修正される予定
前提条件¶
- Asahi または 代替ディストリビューション にリストされたディストリビューションが動作する Apple Silicon 機器
- m1n1 のクリーンなビルド、m1n1 ユーザガイド を参照
AsahiLinux/linux
にある Apple DTB。これらをコンパイルすることは、この文書の範囲外- Asahi EFIシステムパーティションは、
/boot/efi/
にマウント
ビルド¶
AsahiLinux/u-boot
リポジトリをクローンmake apple_m1_defconfig
を実行make -j$(nproc)
を実行
defconfigの名前に惑わされないでください。これはM1だけでなく、すべてのApple Silicon機器への対応をビルドします。 設定に手を加えるのは構いませんがというのも、ほとんどの(すべての)設定は、きれいに起動するために絶対に必要だからです。
Clang/LLVM を使ってビルドすることもできます。
インストール¶
U-Boot のビルドをインストールするには m1n1 の新しい第2ステージ を作成する必要があり、そのため m1n1 と DTB のクリーンビルドが必要です。
/boot/efi/m1n1/boot.bin
のバックアップを作成し、m1n1、DTB、U-Boot を連結します。これはrootで実行する必要があります。
cat build/m1n1.bin /path/to/dtbs/*.dtb <(gzip -c /path/to/uboot/u-boot-nodtb.bin) > /boot/efi/m1n1/boot.bin
パッケージメンテナ用の重要な注意事項¶
m1n1/U-Boot イメージと DTB はrootファイルシステム上の特定の場所にインストールし、既存のイメージをバックアップして新しいイメージを
作成するスクリプトを配布することをお勧めします。これにより、後退による文鎮化を防ぐことができます。
ユーザーは、macOS で ESP をマウントし新しい boot.bin
を削除してバックアップの名前を変更するだけで機器を
既知の良好な状態にリカバリすることができます。
Asahi内でこれを行う例として、AsahiLinux/PKGBUILDs
リポジトリ内のuboot-asahi
と asahi-scripts/update-m1n1
を参照してください。
役立つU-Bootトリック¶
USB から起動¶
- 接続されているUSBストレージが、起動したいものだけであることを確認
- プロンプト表示後にデフォルトのU-Bootスクリプトを中断
run bootcmd_usb0
USBの読み込みに失敗した場合、次のようにすることでUSBを再起動する必要があるかもしれません:
usb start
usb reset
USBを使ってリカバリ/『ライブCD』をロードする場合は、/etc/mkinitcpio.conf
のMODULESに usbhid xhci_hcd
があることを確認してください。
また、ヒントやテクニックはリムーバブルメディアに Arch Linux をインストールを読んでください。
その他の便利なU-Bootコマンド¶
bootd # デフォルトのU-Bootスクリプトを継続
reset # 機器を再起動
poweroff # 機器を完全にシャットダウン
nvme scan # NVMeディスクを探す(次のコマンドを成功させるのに必要)
ls nvme 0:4 / # ペアのEFIシステムパーティションの内容を一覧化