🏠

Ubuntu on WSL2 で self-hosted runner を動かす

2022/01/01に公開

はじめに

UnityプロジェクトのリポジトリでGameCIやMetaCheckを回したいけどGitHubホストランナーだとパワー不足(?)で正常に回らなかったので、Jenkinsを動かしているマシンでself-hosted runnersを動かしてみることに。その際に躓いた点なども含めてやったことまとめ。

WSL2 & Ubuntuのインストール

WSL2のインストール

コントロールパネルにて、「プログラム>プログラムと機能>Windowsの機能の有効化または無効化」にて、Linux 用 Windows サブシステム仮想マシンプラットフォームを有効にする。そしてWindowsを再起動。

Ubuntuのインストール

Microsoft Storeを開き、Ubuntuを選択してインストール。

0x80370102 エラーが出てUbuntuが起動しない

どうやらBISOでSVMが有効になってないのが原因らしい。なので、BIOSを開いてCPUの詳細設定あたりでSVMを有効にする。
参考:【WSL2】wsl2のインストールで0x80370102 エラーが出たときの対処方法【HP】

0x800701bc エラーが出てUbuntuが起動しない

kernel componentを更新する必要があるらしい。管理者として開いたPowerShellで wsl --update することで解決した。
参考:WSL2でLinuxをインストール後に起動しようとしたら0x800701bcというエラーが出た

systemdの有効化

この後にインストールするdockerやself-hosted runnerを自動起動させるためにsystemdを有効化する必要がある。しかし、WSL2のUbuntuではデフォルトの状態だとsystemdが正常に動作しないようなので、これを正常に動作させる。そのためのスクリプトがGitHub上に公開されているのでこちらを利用させてもらう。

gitをインストール

sudo apt install git

systemd有効化スクリプトをclone&実行

git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh

PowerShellにて、wslをシャットダウン

wsl --shutdown

Ubuntuを再度起動して

systemctl

サービス一覧がずらっと表示されたら成功

別の手段

genieをインストールするのでもいいという説もあります(自分も最初はその方向でやっていた)。ただgenieをインストールするよりubuntu-wsl2-systemd-scriptを使う方が楽だったので、今回はこちらを紹介しました。
しかし、ubuntu-wsl2-systemd-scriptはReadmeでメンテされていないと書かれているのでいずれ使えなくなるかもしれません。なので、genieをインストールする方法について書かれた記事も残しておきます。

dockerのインストール

この記事のdockerインストール節を参考

Docker 公式 GPG 鍵を追加

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Docker 安定版のレポジトリを追加

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

レポジトリをアップデートし、dockerをインストール

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose -y

ユーザーを Docker グループに追加

sudo gpasswd -a ユーザー名 docke

Dockerがちゃんと入ってるか確認

sudo service docker start
sudo docker ps

# CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

self-hosted runnerのインストールと起動

self-hosted runnerのインストール

公式のガイドを参考にインストール

self-hosted runnerをサービスとして起動

公式のガイドを参考に

sudo ./svc.sh install
sudo ./svc.sh start
未解決事項

Ubuntuを起動したいときにself-hosted runnerも自動起動するようにしたいけどうまく起動してくれない…🤔自動起動する方法をご存じの方は是非ご教授いただきたいです。

完成🙌

あとはGameCIなりMeta Checkなり色々動かせるはず

Discussion