Ubuntu on WSL2 で self-hosted runner を動かす
はじめに
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