コンテンツにスキップ

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/にマウント
ビルド
  1. AsahiLinux/u-boot リポジトリをクローン
  2. make apple_m1_defconfig を実行
  3. 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-asahiasahi-scripts/update-m1n1 を参照してください。

役立つU-Bootトリック
USB から起動
  1. 接続されているUSBストレージが、起動したいものだけであることを確認
  2. プロンプト表示後にデフォルトの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システムパーティションの内容を一覧化