こちらの画面は、Raspberry Pi 3 Model Bでブートローダー(GRUB2)を起動した画面です。arm64版Ubuntu 18.04 Bionic Beaverのインストーラーを起動する入り口になります。
Raspberry Pi 3用の64ビット(arm64)版Ubuntu 18.04インストールメディア(microSDカードまたはUSBフラッシュメモリー)を作る手順を記録しておきたいと思います。
※インストーラーの起動は確認しましたが、実際にインストールを行えていません。あくまで「起動した」レベルですのでご注意下さい。
※18.8.14追記:新しいUbuntu 18.04.1にて64ビットカーネルを起動する新しい記事が御座います。
以下、上記の記事よりも古い内容となります。
目次
Raspberry Pi 3用arm64版Ubuntu 18.04インストールメディア作成手順
最終的に、下図のような感じのmicroSDカードを作るかたちになります。フォーマットはFAT32になりますので、Windows PCで読み書き可能です。
最初、Raspberry Piでインストールメディアを作成しようと思いましたが、arm64のクロスコンパイルができませんでした。
他の理由もあり、最終的にWindows 10 Pro x64のPCを使用しました。VagrantとVirtualBoxを使用しますので、CPUが仮想化機能(Intel VT-x、AMD-V)に対応していれば、Windows 10無印(Home相当)でも作成できると思います。
基本的にこちらの内容に従ってインストールメディアを作成する流れになります。
Vagrantのインストール
- PCにVagrantをインストールします。こちらの記事になります。
VagrantでDebian Stretch64実行
U-bootのクロスコンパイルを行いますが、Ubuntu Xenialではgccのバージョンが低く、コンパイルできませんでした。Debian Stretchで試したところ問題ありませんでしたので、こちらの実行環境を作ろうと思います。
- stretch実行環境用のフォルダを作成します。
mkdir stretch cd stretch
- vagrantのboxにdebian/stretch64を追加します。選択肢は2)virtualboxを選びました。
vagrant box add debian/stretch64
- vagrant initでVagrantfileを作成します。それとフォルダ同期のためvagrant-vbguestプラグインを入れておきます。
vagrant init debian/stretch64 vagrant plugin install vagrant-vbguest
- Vagrantfileを編集、config.vm.synced_folder行を追加します。
config.vm.synced_folder "./", "/vagrant_data"
- stretchを起動してsshでログインします。
vagrant up vagrant ssh
/vagrant_dataディレクトリに、2番で作成したstretch動作環境フォルダがマウントされていると思います。こちらのフォルダに、microSDカード用のファイルをコピーしてゆこうと思います。
U-bootのコンパイル
- クロスコンパイラーをインストールして、u-bootのソースをクローン、コンパイルする流れです。
sudo apt install git make gcc gcc-aarch64-linux-gnu git clone --depth 1 git://git.denx.de/u-boot.git cd u-boot make rpi_3_defconfig make CROSS_COMPILE=aarch64-linux-gnu-
- system-bootフォルダを作成、インストールメディア用のファイルをコピーしようと思います。
mkdir /vagrant_data/system-boot sudo cp u-boot.bin /vagrant_data/system-boot/kernel8.img
dtb(Device Tree Blob)のコピー
- dtbファイルをダウンロードしてコピーします。
cd wget http://ports.ubuntu.com/dists/bionic/main/installer-arm64/current/images/device-tree/bcm2837-rpi-3-b.dtb mkdir -p /vagrant_data/system-boot/dtb/broadcom/ sudo cp bcm2837-rpi-3-b.dtb /vagrant_data/system-boot/dtb/broadcom/
ISOコンテンツのコピー
- arm64版Ubuntuインストールisoイメージをダウンロードしてコピーします。
wget http://ports.ubuntu.com/dists/bionic/main/installer-arm64/current/images/netboot/mini.iso mkdir /tmp/mini-iso sudo mount -o loop -o ro mini.iso /tmp/mini-iso sudo cp -rT /tmp/mini-iso /vagrant_data/system-boot/
ネットワークインストール用のmini.isoで試しましたが、オフラインインストール用メディアでも作れそうな感じです(未確認)。
- efiイメージを展開してコピーします。
mkdir /tmp/efi-img sudo mount -o loop -o ro /tmp/mini-iso/boot/grub/efi.img /tmp/efi-img/ sudo cp -rT /tmp/efi-img /vagrant_data/system-boot/
- イメージをアンマウントします。
sudo umount /tmp/efi-img sudo umount /tmp/mini-iso
カーネルとGRUBファイルのダウンロード
いろいろと試したところ、isoイメージのinitrdではうまく起動しませんでした。最新版をダウンロード・コピーします。
- 最新版のカーネルとGRUBファイルをダウンロードしてコピーします。
wget http://ports.ubuntu.com/dists/bionic/main/installer-arm64/current/images/cdrom/initrd.gz wget http://ports.ubuntu.com/dists/bionic/main/installer-arm64/current/images/cdrom/vmlinuz sudo cp initrd.gz vmlinuz /vagrant_data/system-boot/
GPUファームウェアとブートローダーのコピー
最後にこちらの内容に従って、GPUファームウェアとブートローダーをコピーしました。
- ファームウェアをダウンロード、展開してコピーします。
wget http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-bootloader_1.20180417-1_armhf.deb dpkg-deb -x raspberrypi-bootloader_1.20180417-1_armhf.deb /tmp/pi-bootloader sudo apt remove linux-firmware-raspi2 sudo cp /tmp/pi-bootloader/boot/* /vagrant_data/system-boot/
FAT32でフォーマットしたmicroSDカードにこれらをコピーして、Raspberry Piを起動してみて下さい。
GRUB2の画面からInstallを選択してしばらく待つとこのような感じでインストールメニューが起動するかと思います。
GRUB2の画面から先に進まない場合は、RAMディスクイメージ(initrd.gz)やカーネル(vmlinuz, linux)の最新版をご確認下さい。
さて。
インストーラーは起動しましたが。
CD-ROMドライブが見つかりません、というエラーで先に進まない感じです。
うーん。
※18.8.14追記:新しいUbuntu 18.04.1にて64ビットカーネルを起動する新しい記事が御座います。