GitlabのARM用CI Runnerの構築方法
2024-05-29 - 鈴木 慶太
GitlabでのARM CI Runner の構築手順
大まかな手順は以下のとおりです。
- SDカードにOSを書き込む
- ブートローダーの書き換え
- SSDにOSの書き込み
- gitlab runner のインストール
今回利用した機材
今回利用した機材は以下のとおりです。
Rock5B(16GB)
Rock5B用メタルケース
SSD(1TB)
PD対応AC電源ケーブル
SDカードへのOSの書き込み
フラッシュツールのインストール
適当なイメージ書き込みツールを利用し、SDカードにOSを書き込みます。 今回は、定番の balena etcher を利用しました。
OSイメージのダウンロード
Rock5Bは標準ではnvmeブートが行えません。 販売代理店の情報を参考にしながら、まずはSSDブートを可能にするため、適当なOSを利用し、nvmeからのブートが可能なブートイメージを書き込みます。
今回は、Rock5Bの開発元から提供されている、debianのOSイメージを利用します。
- GitHub radxa-build/rock-5b
ウィンドウシステムは何でも構いませんが、今回はXFCEを利用しました。
- https://github.com/radxa-build/rock-5b/releases/download/b39/rock-5b_debian_bullseye_xfce_b39.img.xz
EtcherでSDカードにOSイメージを書き込みます
上記でダウンロードしたイメージを、SDカードに書き込みます
OSの起動
作成したmicroSDカードをROCK 5Bの裏のスロットに差し込みます。
公式のイメージを使ってインストールした場合、デフォルトのアカウントとパスワードは「radxa/radxa」です。
ブートローダーの書き換え
MTDの消去
MTDを消去するイメージファイルを下記URLよりダウンロードします。
以下のコマンドを実行し、初期化用イメージファイルをダウンロードします。
wget https://dl.radxa.com/rock5/sw/images/others/zero.img.gz
念の為、ダウンロードしたファイルのハッシュ値を確認します
md5sum zero.img.gz
イメージファイルを解凍します。
gzip -d zero.img.gz
イメージファイルのハッシュ値を確認します
md5sum zero.img
MTDのデバイス名を確認します /dev/mtdblock0が返るはずです
ls /dev/mtdblock*
MTDを削除します(書き換え完了までしばらくかかります)
sudo dd if=zero.img of=/dev/mtdblock0
ハッシュ値を確認し、イメージと同じ状態になっていることを確認します
sudo md5sum /dev/mtdblock0 zero.img
ブートローダーを書き込む
以下のURLから、Rock5Bの開発元であるRadxaが提供するブートイメージをダウンロードします。
MTDを書き換えます(書き換え完了までしばらくかかります)
sudo dd if=rock-5b-spi-image-gbf47e81-20230607.img of=/dev/mtdblock0
ハッシュ値を確認し、イメージとMTDの内容が同じである事を確認します。
sudo md5sum /dev/mtdblock0 rock-5b-spi-image-gbf47e81-20230607.img
以上で設定完了です。再起動するとNVMe SSDが認識可能になり、また起動可能となります。
SSDへのOSの書き込み
Ubuntu イメージの取得
以下のURLから、Radxaの提供するUbuntuのイメージをダウンロードします
root権限で、nvmeにダウンロードしたイメージを書き込みます。
# xzcat /home/radxa/rock-5b_ubuntu_jammy_kde_b39.img.xz | dd of=/dev/nvme0n1
しばらく待機すると、書込みが完了します。
シャットダウン
一度、シャットダウンしてSSDから起動します。
# shutdown -h now
シャットダウンが完了したら、microSDカードを取り外します。
gitlab runner のインストール
dockerのインストール
コミュニティ版のDockerをインストールします。
$ curl -fsSL test.docker.com -o get-docker.sh && sh get-docker.sh
hello-worldイメージを実行し、Dockerの動作テストを行います。
$ docker run hello-world
gitlab-runnerのコンテナイメージの設定
以下のコマンドを実行し、gitlab-runnerの設定を保持するボリュームを作成します。
docker volume create gitlab-runner-config
以下のコマンドを実行し、gitlab-runnerのコンテナを稼働させます。 コンテナからOSのDockerのソケットを参照することで、ホストOS上にコンテナを作成できるようにします。
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v gitlab-runner-config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
gitlab-runnerのコンテナで、初期設定を実施します。 初期登録に必要なトークンは、Gitlabの管理者画面から生成可能です。
docker exec -it gitlab-runner register