OSSTech株式会社

GitlabのARM用CI Runnerの構築方法

2024-05-29 - 鈴木 慶太

GitlabでのARM CI Runner の構築手順

大まかな手順は以下のとおりです。

  • SDカードにOSを書き込む
  • ブートローダーの書き換え
  • SSDにOSの書き込み
  • gitlab runner のインストール

今回利用した機材

今回利用した機材は以下のとおりです。

SDカードへのOSの書き込み

フラッシュツールのインストール

適当なイメージ書き込みツールを利用し、SDカードにOSを書き込みます。 今回は、定番の balena etcher を利用しました。

OSイメージのダウンロード

Rock5Bは標準ではnvmeブートが行えません。 販売代理店の情報を参考にしながら、まずはSSDブートを可能にするため、適当なOSを利用し、nvmeからのブートが可能なブートイメージを書き込みます。

今回は、Rock5Bの開発元から提供されている、debianのOSイメージを利用します。

ウィンドウシステムは何でも構いませんが、今回はXFCEを利用しました。

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