Rock5B用のArmbianイメージを Linux の Kernel Configration などをカスタマイズしつつビルドする

ARM64 8コアCPU で、メモリ16Gまで積める、Rock5B で遊んでいます。

開発元 Radxa の公式イメージが Ubuntu 20.04 ベースであり、ちょっと古いため、Ubuntu 22.04 を使うべく、ARM SBC用Linuxイメージをビルドできる Armbian を試しています。Armbian において現在 Rock5B は 公式サポートがされる状態になっています。

www.armbian.com

しかし、このビルドを試してデスクトップを使おうとしたところ、Apple MagicTrackpad 2 のドライバが含まれていない Linux Kernel となっていて、マウスとしか反応せず右クリックやスクロールが行えない状態になっていました。

そこで、Armbian で、このドライバを有効にするようにカーネルをビルドしようと思いました。

Armbian は docker でビルドできる

Armbian のイメージの作成自体は、amd64 マシンで実施できます。かつ、すべてのツールを収めたDockerコンテナ内でもビルドできるようになっています。

それには、ビルドするスクリプトの第一引数に docker とつけるだけでできました。

./compile.sh docker

userpatches ディレクトリが便利

armbian はリリースされるものと、ユーザ自身でカスタマイズできるものを、ディレクトリで分けており、ユーザ自身でカスタマイズするものは userpatches ディレクトリに集められます。最初にビルドを行うと、userpatches ディレクトリの作成が行われます。以後、userpatches ディレクトリを別途 git 管理して作業をしていました。

kernel configuration をいじる

armbian では、TUI を使って、Kernel の Configuration を設定することもできますが、毎回 TUI で操作するのは面倒です。

デフォルトというか、メンテナンスされている kernel configuration は以下のファイルで管理されています。

https://github.com/armbian/build/blob/test/config/kernel/linux-rockchip-rk3588-legacy.config

このファイルをコピーして、 userpatches/linux-rockchip-rk3588-legacy.config に配置すると、ビルド時に利用してくれることがわかりました。

これを使って、Apple Magic Trackpad 2 関連のドライバを有効化させました。

Rock5B のイメージしか作らないので、ビルドすると Rock5B がビルドされるようにする

TUI でターゲットとするSBCと、OSと、追加で入れるアプリを設定するは繰り返しするのは疲れます。 これをスクリプトで自動的に選択するには、userpatches/config-default.conf で以下のように追記すると行うことができました。

これで、Rock5Bで、Kernel 5.10(Legacy)を使って、Ubuntu 22.04、Gnome Desktop 付きでビルドされるようになります。

# userpatches/config-default.conf

BOARD="rock-5b"
BRANCH="legacy"
RELEASE="jammy"
BUILD_DESKTOP="yes"
DESKTOP_ENVIRONMENT="gnome"
DESKTOP_ENVIRONMENT_CONFIG_NAME="config_base"
DESKTOP_APPGROUPS_SELECTED=""

最初からいくつものパッケージをインストールしておく

fan control や、Mali Driverの有効化など、毎回パッケージをインストールするのは骨が折れます。 あとは、ホームディレクトリを rsync するだけくらいに持っていきたいと思いました。

userpatches/customize-image.sh がそれをするためのシェルスクリプトであり、ここに様々なインストールを追加しました。 これで、これらがインストールされた状態のイメージができ上がります。

install -D -o root -g root -m 644 /tmp/overlay/etc_apt_keyrings/* /etc/apt/keyrings/
install -D -o root -g root -m 644 /tmp/overlay/etc_apt_source.list.d/* /etc/apt/sources.list.d/
apt-get update
apt dist-upgrade -y
apt install -y \
    mali-g610-firmware \
    rockchip-multimedia-config

cd /root/
curl -OL https://github.com/pymumu/fan-control-rock5b/releases/download/1.1.0/fan-control-rock5b.1.1.0.arm64.deb
apt install ./fan-control-rock5b.1.1.0.arm64.deb
systemctl enable fan-control

apt install -y \
    fcitx5-frontend-qt5 \
    tabby-terminal \
    code \
    chromium-browser \
    fcitx5 \
    fcitx5-mozc \
    fcitx5-config-qt \
    curl \
    unar \
    neovim \
    gh \
    python3 \
    python3-pip \
    pipx \
    gnome-tweaks \
    libinput-tools \
    fonts-noto-core \
    fonts-noto-cjk \
    fonts-noto-extra \
    fonts-noto-ui-core \
    fonts-noto-ui-extra \
    fonts-noto-color-emoji \
    fonts-noto-mono \
    gimp \
    inkscape \
    language-pack-ja \
    language-pack-ja-base \
    language-pack-gnome-ja \
    language-pack-gnome-ja-base \
    eog \
    fcitx5-frontend-gtk2 \
    fcitx5-frontend-gtk3 \
    fcitx5-frontend-gtk4 \
    fcitx5-frontend-qt5 \
    language-pack-gnome-ja \
    language-pack-ja \
    shutter \
    vim

しかし Linux Desktop 力が足りなくて挫折

Rock5B のGUI体験は非常に良いのですが、私自身のLinux Desktop力が足りなくて、結局サーバでしか使わなくなってしまい、それなら公式イメージでいいじゃんとなってしまいました。

普段は Ryzen2700(8コア16スレッド)、メモリ16G、GTX1080 の強めのマシンを Ubuntu 22.10、GnomeX11 で使っているのですが、これの体験が良すぎて、これと同等の Ubuntu Desktop のカスタマイズ(22.04、Gnome、xwayland)ができず、挫折しました(最後の挫折ポイントは、Ubuntu の Dark モードがGnomeにちゃんと当たらなくて辛い、でした)。

しかし、ビルドするところまでは Armbian の体験は非常に良かったので、これからも暇を見つけてトライしていこうと思います。

なお、自分のカスタマイズした userpatches ディレクトリは以下に上げてあります。

github.com