LoginSignup
11
9

More than 3 years have passed since last update.

WSL:systemctlのPIDエラーで悩んだ話

Last updated at Posted at 2021-04-19

はじめに

ある日
株式会社Unreactの社長さん(同級生)と会食(と言ってもジョイフルなんですが...笑)中に「WSLって便利だよ」
という話を聞いたので早速WSLを使ってみようとインストール。
dockerの勉強もしたかったので、インストールしているときに直面したsystemctlに関するエラーのお話です。

解決法

$ systemctl
   System has not been booted with systemd as init system (PID 1). Can't operate.
   Failed to connect to bus: Host is down

systemctlというコマンドを売ったときに上記のようなエラーが出ませんでしたか?
これは、下記の参考サイトでも説明されているのですが、systemdを1番目のプロセスとして起動していないために
起こるエラーなのです。
では、1番目にすれば解決するはずです。

先に参考にしたサイトを紹介します。

それではこのエラーを解決していきましょう!
自分の場合だけかもしれませんが、上記の2つのサイトのコマンドを組み合わせないとうまくいきませんでした。
うまくいかなかった部分も紹介していきます。
それとこの解決方法はWSLのみに使える方法なので注意してください。

genieをインストール

systemctlのエラーを解決する方法にはgenieというものを使うことで解決することができます。
このgenieを使う上では、debian系の場合に必要となるパッケージがあるので先にインストールを行います。
このへんは上記に紹介したサイトを引用させていただきます。
ここでインストールしてるのは

  • daemonize
  • dotnet-sdk-3.1

の2つです。

$ sudo apt install daemonize
$ sudo apt-get install -y gpg
$ wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
$ sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
$ wget https://packages.microsoft.com/config/ubuntu/20.04/prod.list
$ sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
$ sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
$ sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
$ sudo apt-get update; \
   sudo apt-get install -y apt-transport-https && \
   sudo apt-get update && \
   sudo apt-get install -y dotnet-sdk-3.1

つぎに本命のgenieをインストールしていきます。ここで自分は少し悩んだのですが、多くのサイトで紹介されている方法ではうまくいかなかったのです。
そのコマンドは

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

なんですけども

bash: 行 1: 予期しないトークン `newline` 周辺に構文エラーがあります
bash: 行 1: `<!DOCTYPE html>`

みたいなエラーがでます。<!DOCTYPE html>と出ている感じ、どうやらcurlで取ってくるサイトがないみたいです。
なので、systemd-genie.debこちらからダウンロードして/home/<username>にコピーします。
その後に以下のコマンドを実行して、

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

最後にこのコマンドを実行したらインストールは完了です。

sudo dpkg -i systemd-genie.deb 

そして、genieのインストールが完了したら以下のコマンドで起動してみましょう。

genie -s

なにもエラーが出ずに、username@hogehoge-wslとなってれば起動は完了です。
試しにsystemctlを打ってみてエラーがでなければ無事エラーを乗り越えることができました。
お疲れさまでした。

おわりに

WSL...そこにはなにか魅力を感じます。まだまだ自分は触り始めたばっかですが、これからさらに勉強をしてWSLやdockerを扱えるようになりたいですね(^^)

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9