NINA HOUSE

技術ブログ作ってみる

【WSL2】systemctlが動かなかったので試したこと順

環境

WSL2
Ubuntu20.04

問題

xxx@DESKTOP-HBDVB67:/mnt/c/Users/xxx$ sudo timedatectl set-timezone 'Asia/Tokyo'
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to create bus connection: Host is down

確認すると、

xxx@DESKTOP-HBDVB67:/mnt/c/Users/xxx$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0    892   580 ?        Sl   10:06   0:00 /init
root        40  0.0  0.0    892    80 ?        Ss   10:14   0:00 /init
root        41  0.0  0.0    892    80 ?        R    10:14   0:00 /init
h-baba      42  0.0  0.0  10040  5016 pts/0    Ss   10:14   0:00 -bash
h-baba     935  0.0  0.0  10616  3180 pts/0    R+   10:16   0:00 ps aux

原因

手順

これ入れる github.com

.NET をインストールする前に、次のコマンドを実行して、信頼されたキーの一覧に Microsoft パッケージ署名キーを追加し、パッケージ リポジトリを追加します。

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

ランタイムをインストールする
SDKとランタイムがあるが、Asp .NET Coreのアプリを作るわけではないのでランタイムの方をインストール

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-5.0

バージョンが違う場合はこちらを参照 docs.microsoft.com

genieのインストール

curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash

これはエラーになる

sudo apt install apt-transport-https
sudo wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg
sudo nano /etc/apt/sources.list.d/wsl-transdebian.list

これを追加↓

deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ focal main

追加できたら[Ctrl]キーを押しながら[O]キーを押し、「y」と入力して[Enter]キーを押して上書き保存してください。さらに[Ctrl]キーを押しながら[X]キーを押すとエディタを終了できます

sudo apt update
sudo apt install systemd-genie

やっとgenieのインストールに成功!

genie -s

起動しようとしてまたエラー
公式でも言ってるけどwaiting for systemd !!!!!!! とタイムアウトエラーになる
タイムアウトの原因サービスを確認し、そのサービスを無効化

sudo systemctl mask systemd-remount-fs.service
sudo systemctl disable multipathd.socket
sudo systemctl disable getty@tty1.service

一回ログアウトし、再度genie -sで起動

xxx@DESKTOP-HBDVB67-wsl:~$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.1  0.0 109812 12836 ?        Ss   11:17   0:01 systemd
root          50  0.0  0.0  51484 15396 ?        S<s  11:17   0:00 /lib/systemd/systemd-journald
root          70  0.0  0.0  19560  4992 ?        Ss   11:17   0:00 /lib/systemd/systemd-udevd
......

変わった!!