はじめに
ある日
株式会社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を扱えるようになりたいですね(^^)