このような感じで、シングルボードコンピュータのRock64で64ビット版Arch Linuxを起動できるようです。
HDMIが未サポートのため、SSHでログインした状態ですが。
起動用のmicroSDカードイメージの作成方法を記録しておこうと思います。
目次
Rock64用aarch64版Arch Linux起動メディア作成手順
基本的にこちらの記事の内容に従って作成する流れです。
Arch Linuxを使って起動用メディアを作成しますが、いつものVagrantを使って、Windows 10 PCで作成しようと思います。
Vagrantのインストール
- Windows 10 PCに vagrantをインストールします。こちらの記事になります。
Arch Linux環境作成
- Arch Linux用のフォルダを作成、vagrant box addでboxに追加します。選択肢は2)virtualboxを選びました。
mkdir arch cd arch vagrant box add archlinux/archlinux
- vagrant initでVagrantfileを作成します。vbguestプラグインもインストールします。
vagrant init archlinux/archlinux vagrant plugin install vagrant-vbguest
- Vagrantfileを編集して、フォルダ同期設定を入れたのですが・・・実はうまく動きませんでした。
config.vm.synced_folder "./", "/vagrant_data"
- vagrant upで仮想環境を起動、vagrant sshでログインします。
vagrant up vagrant ssh
Rock64ブート用イメージ作成
vagrant環境からUSB接続でmicroSDカードにアクセスするのは難易度が高い感じがしますので、代わりにイメージファイルを作成しようと思います。
- ddで空のイメージを作成します。ファイル名はArchLinuxRock64boot.img、サイズは3.5GBにしてみましたが・・・もっと小さくても大丈夫です?
dd if=/dev/zero of=ArchLinuxRock64boot.img bs=1M count=3600
- fdiskでパーティションを作成します。
fdisk ArchLinuxRock64boot.img
oで初期化、n、p、1でプライマリパーティション作成、First sector欄に32768入力、Last sectorはエンターですべて、wで書き込みました。
- 作成したパーティションをマウントしようと思います。fdiskでセクタサイズを確認します
fdisk -l ArchLinuxRock64boot.img
- Startセクタの32768、セクタサイズ6520832を指定して、losetupでloopデバイスにマップします。
sudo losetup -oofset $((512*32768)) --sizelimit $((512*6520832)) --show --find ArchLinuxRock64boot.img /dev/loop0
- ファイルシステムを作成します。
sudo mkfs -t ext4 /dev/loop0
- マウントしてアクセスできるようにします。
mkdir root sudo mount /dev/loop0 root
- Rock64 – Arch Linux ARMの内容に従ってファイルをコピーする流れですが、wgetが入っていませんでした。
sudo pacman -Sy wget
pacmanでインストールします。
- ルートファイルシステムをダウンロードしてコピーします。
wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz sudo bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C root
- boot.scrをコピーします。
sudo wget http://os.archlinuxarm.org/os/rockchip/boot/rock64/boot.scr -O root/boot/boot.scr
- イメージをアンマウントします。
sudo umount root sudo losetup -D
- ブートローダーをダウンロードしてイメージに埋め込みます。
wget http://os.archlinuxarm.org/os/rockchip/boot/rock64/idbloader.img wget http://os.archlinuxarm.org/os/rockchip/boot/rock64/uboot.img wget http://os.archlinuxarm.org/os/rockchip/boot/rock64/trust.img dd if=idbloader.img of=ArchLinuxRock64boot.img seek=64 conv=notrunc dd if=uboot.img of=ArchLinuxRock64boot.img seek=16384 conv=notrunc dd if=trust.img of=ArchLinuxRock64boot.img seek=24576 conv=notrunc
microSDカードイメージのコピー・書き込み
以上でブートイメージが完成しました。あとはmicroSDカードに書き込めば良いのですが・・・vagrantからWindowsフォルダへうまくアクセスできません。むむむ。
回避策として、sshが動いている別のPC(Mac)へscpでファイルをコピーしました。orz
scp ArchLinuxRock64boot.img <ユーザ名>@<sshが動いてるホストのIPアドレス>:~
作成したArchLinuxRock64boot.imgは、Etcher等でmicroSDカードへ書き込みます。
Rock64起動とU-Bootパッケージインストール
microSDカードをRock64にセット、必ずLANケーブルを接続して電源を入れます。
HDMIに画面は出ませんでした・・・・Rock64 – Arch Linux ARMを拝見すると「ルータから配布されたIPアドレスへSSHでアクセスしてね」のような記述があります。
それっぽいIPアドレスにSSH接続します。
ユーザ/パスワードはalarm/alarmのようです。
rootパスワードはrootのようですが、直接ログインはできず、alarmでログインする必要があるようです。
- ログイン後、U-Bootパッケージをインストールします。
su rm /boot/boot.scr pacman -Sy uboot-rock64
Rock64は64ビット対応ハードウェアということで、OSも64ビット対応を希望していますが・・・対応OSがなかなか無い印象です。
armbianさん等、Rock64対応で「テスト中」というLinuxディストリビューションがいくつかあるようですが、aarch64対応のArch Linuxさんも、今後の発展に期待させて頂きたいと思います。