Rock64でaarch64版Arch Linuxを起動するには

このような感じで、シングルボードコンピュータのRock64で64ビット版Arch Linuxを起動できるようです。

HDMIが未サポートのため、SSHでログインした状態ですが。

起動用のmicroSDカードイメージの作成方法を記録しておこうと思います。


Rock64用aarch64版Arch Linux起動メディア作成手順

基本的にこちらの記事の内容に従って作成する流れです。

Arch Linuxを使って起動用メディアを作成しますが、いつものVagrantを使って、Windows 10 PCで作成しようと思います。

Vagrantのインストール

  1. Windows 10 PCに vagrantをインストールします。こちらの記事になります。

Arch Linux環境作成

  1. Arch Linux用のフォルダを作成、vagrant box addでboxに追加します。選択肢は2)virtualboxを選びました。
    mkdir arch
    cd arch
    vagrant box add archlinux/archlinux

  2. vagrant initでVagrantfileを作成します。vbguestプラグインもインストールします。
    vagrant init archlinux/archlinux
    vagrant plugin install vagrant-vbguest
  3. Vagrantfileを編集して、フォルダ同期設定を入れたのですが・・・実はうまく動きませんでした。
    config.vm.synced_folder "./", "/vagrant_data"

  4. vagrant upで仮想環境を起動、vagrant sshでログインします。
    vagrant up
    vagrant ssh


Rock64ブート用イメージ作成

vagrant環境からUSB接続でmicroSDカードにアクセスするのは難易度が高い感じがしますので、代わりにイメージファイルを作成しようと思います。

  1. ddで空のイメージを作成します。ファイル名はArchLinuxRock64boot.img、サイズは3.5GBにしてみましたが・・・もっと小さくても大丈夫です?
    dd if=/dev/zero of=ArchLinuxRock64boot.img bs=1M count=3600

  2. fdiskでパーティションを作成します。
    fdisk ArchLinuxRock64boot.img

    oで初期化、n、p、1でプライマリパーティション作成、First sector欄に32768入力、Last sectorはエンターですべて、wで書き込みました。

  3. 作成したパーティションをマウントしようと思います。fdiskでセクタサイズを確認します
    fdisk -l ArchLinuxRock64boot.img

  4. Startセクタの32768、セクタサイズ6520832を指定して、losetupでloopデバイスにマップします。
    sudo losetup -oofset $((512*32768)) --sizelimit $((512*6520832)) --show --find ArchLinuxRock64boot.img /dev/loop0

  5. ファイルシステムを作成します。
    sudo mkfs -t ext4 /dev/loop0

  6. マウントしてアクセスできるようにします。
    mkdir root
    sudo mount /dev/loop0 root

  7. Rock64 – Arch Linux ARMの内容に従ってファイルをコピーする流れですが、wgetが入っていませんでした。
    sudo pacman -Sy wget

    pacmanでインストールします。

  8. ルートファイルシステムをダウンロードしてコピーします。
    wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz
    sudo bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C root
  9. boot.scrをコピーします。
    sudo wget http://os.archlinuxarm.org/os/rockchip/boot/rock64/boot.scr -O root/boot/boot.scr
  10. イメージをアンマウントします。
    sudo umount root
    sudo losetup -D
  11. ブートローダーをダウンロードしてイメージに埋め込みます。
    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でログインする必要があるようです。

  1. ログイン後、U-Bootパッケージをインストールします。
    su
    rm /boot/boot.scr
    pacman -Sy uboot-rock64

Rock64は64ビット対応ハードウェアということで、OSも64ビット対応を希望していますが・・・対応OSがなかなか無い印象です。

armbianさん等、Rock64対応で「テスト中」というLinuxディストリビューションがいくつかあるようですが、aarch64対応のArch Linuxさんも、今後の発展に期待させて頂きたいと思います。

スポンサーリンク

フォローする

スポンサーリンク