5.1. 64-bit ARM でのインストーラの起動

5.1.1. コンソール設定

stretch の arm64 debian-installer イメージではグラフィカルインストーラは有効化されていないため、シリアルコンソールを利用します。コンソールデバイスはファームウェアによって自動的検出されるはずですが、検出されなかった場合は GRUB メニューから linux をブートした後Booting Linuxメッセージを見ることになります。そうなるともう何も起こりません。

この問題が起きた場合はカーネルコマンドラインで特定のコンソール設定を行う必要があります。GRUB メニューで e を押して Edit Kernel command-line に進み、

--- quiet

console=<デバイス>,<速度>

、例えば

console=ttyAMA0,115200n8

のように変更します。変更できたら Control+x を押して新しい設定でブートを続けます。

5.1.2. Juno のインストール

Juno には UEFI があるためインストールは明快です。最も実践的なのはUSBメモリからインストールする方法です。USBでのブートを機能させるためには最新のファームウェアが必要です。2015年3月以降にビルドされた http://releases.linaro.org/members/arm/platforms/latest/ でテストが成功しています。ファームウェアの更新については Juno の文書を参照してください。

USBメモリに書き込んだ標準の arm64 CD イメージを用意します。背面のUSBポートに差し込みます。シリアルケーブルを背面の上部にある9ピンのシリアルポートに差し込みます。ネットワーク接続が必要 (netboot イメージ) であればイーサネットケーブルをマシン全面のソケットに差し込んでください。

シリアルコンソールを 115200、8ビットパリティなしで実行し、Juno をブートします。USBメモリからブートして GRUB メニューが表示されるはずです。コンソール設定は Juno で正しく検出されないため、ただ Enter を押してもカーネル出力には何も表示されません。(「コンソール設定」 で説明しているように) コンソールを

console=ttyAMA0,115200n8

と設定します。Control+x でブートすると debian-installer の画面が表示され、標準のインストールを続けられるはずです。

5.1.3. Applied Micro Mustang でのインストール

このマシンでは UEFI が利用できますが、通常は U-Boot を使うようになっているため、UEFI ファームウェアをまずインストールしてから標準のブート/インストールを行う方法か、U-Boot を使ってブートする方法のどちらかが必要です。arm64 アーキテクチャではグラフィカルインストーラは有効化されていないため、インストール処理の制御にはシリアルコンソールを使う必要があります。

推奨するインストール方法はマシンに同梱されている openembedded システムを使って debian-installer カーネルと initrd をハードドライブにコピーし、それをインストーラからブートします。TFTP を使ってカーネル/dtb/initrd をコピーし、ブートする方法 (「U-Boot での TFTP のブート」) もあります。インストールしたイメージからブートするためには、インストール後に手作業での調整が必要です。

シリアルコンソールを 115200、8ビットパリティなしで実行し、マシンをブートします。マシンを再起動してHit any key to stop autoboot:が表示されたら何かキーを押して Mustang# プロンプトに入ります。それから U-Boot のコマンドを使ってカーネル、dtb、initrd を読み込み、ブートします。

5.1.4. TFTP による起動

ネットワークからの起動には、ネットワーク接続と TFTP ネットワークブートサーバが (自動化でのネットワーク設定には恐らく DHCP, RARP, BOOTP も) 必要です。

ネットワーク起動をサポートするためのサーバ側の準備については、「TFTP ネットブート用ファイルの準備」 で説明します。

5.1.4.1. U-Boot での TFTP のブート

U-Boot ファームウェアを採用したシステムでのネットワークブートは3つの段階から構成されます: a) ネットワークの設定、b) イメージ (カーネル/初期RAMディスク/dtb) のメモリへの読み込み、c) 前段階で読み込んだコードを実際に実行。

最初にネットワークを設定する必要があります。DHCP により自動的に設定する場合:

setenv autoload no
dhcp

あるいは手作業により複数の環境変数を設定する場合:

setenv ipaddr <クライアントのIPアドレス>
setenv netmask <netmask>
setenv serverip <tftp サーバのIPアドレス>
setenv dnsip <名前サーバのIPアドレス>
setenv gatewayip <デフォルトゲートウェイのIPアドレス>

希望により、恒久的な設定にすることもできます:

saveenv

その後はイメージ (カーネル/初期RAMディスク/dtb) をメモリに読み込む必要があります。これは tftpboot コマンドで行いますが、イメージが記憶されているメモリのアドレスを指定する必要があります。残念ながらメモリの割り当てはシステムにより異なる可能性があるため、どのアドレスを利用できるというような原則はありません。

システムによっては読み込みに適するアドレスをセットした環境変数群を U-Boot が事前に定義しているものがあります: kernel_addr_r、ramdisk_addr_r、fdt_addr_r。定義されているかどうかは、

printenv kernel_addr_r ramdisk_addr_r fdt_addr_r

を実行することで確認できます。定義されていない場合はシステムの文書で適切な値を確認して手作業によりセットする必要があります。Allwinner SunXi SOC ベースのシステム (例えば Allwinner A10、アーキテクチャ名sun4iや Allwinner A20、アーキテクチャ名sun7i) では、例えば以下の値を利用できます:

setenv kernel_addr_r 0x46000000
setenv fdt_addr_r 0x47000000
setenv ramdisk_addr_r 0x48000000

読み込むアドレスが定義されていれば

tftpboot ${kernel_addr_r} <カーネルイメージのファイル名>
tftpboot ${fdt_addr_r} <dtbのファイル名>
tftpboot ${ramdisk_addr_r} <初期RAMディスクイメージのファイル名>

を実行することにより、前に定義した tftp サーバからイメージをメモリに読み込めます。3つ目の部分はカーネルコマンドラインの設定で、読み込んだコードを実際に実行します。U-Boot は bootargs 環境変数の内容をカーネルにコマンドラインとして渡すので、カーネルやインストーラへの任意のパラメータ - 例えばコンソールデバイス (「ブートコンソール」 参照) や preseed のオプション (「Debian Installer パラメータ」 及び 付録B preseed を利用したインストールの自動化 参照) - を

setenv bootargs console=ttyS0,115200 rootwait panic=10

のようなコマンドでセットできます。前に読み込んだコードを実行する実際のコマンドは利用するイメージのフォーマットに依存します。uImage/uInitrd の場合、コマンドは

bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}

となり、ネイティブの Linux イメージの場合は

bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}

となります。注意: 標準的な linux イメージをブートする場合、カーネルとdtbを読み込んでから初期RAMディスクイメージを読み込むことが重要となります。U-Boot が最後に読み込んだファイルのサイズを filesize 変数にセットするのと bootz コマンドが正常に動作するためにはRAMディスクイメージのサイズが必要となるためです。プラットフォーム特有のカーネル、つまりデバイスツリー無しでカーネルをブートする場合には ${fdt_addr_r} パラメータは省略できます。

5.1.5. UEFI を利用した USB メモリからの起動

USB からブートできるコンピュータの場合はおそらくこれが最も簡単なインストール方法です。 さて、「ブートデバイスの選択」「USB メモリでの起動用ファイルの準備」 の内容すべてを準備しました。それでは USB コネクタに USB メモリを差し込んで、コンピュータを再起動してください。システムが起動し、USB メモリを作成するのに柔軟な方法で有効にしていない、などという事がなければ、グラフィカルなブートメニューが (それをサポートしているハードウェアでは) 表示されるはずです。ここで様々なインストールオプションを選択するか、単に Enter を押してください。