1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSL2でSSH出来なくなった時の備忘録

Last updated at Posted at 2022-02-12

久しぶりにwsl2環境で作業しようとしたところ、SSHなどあらゆるサービスが使えなくなっていた。原因はPID1で起動すべきsystemdがinitに代わっていたためだった。以下環境におけるssh接続までの手順を記載する。

環境情報

  • wsl2
  • Ubuntu18.04
  • (後日Ubuntu20.04のwsl2環境で同様の手順を行い確認済)

wsl2でsystemdを使えるようにする過去記事の情報が古かった

こちらの記事などでgenieというのがsystemdの起動に必要と分かった。しかし、記載されている情報が古かったせいか手順通り行ってもうまくいかなかった。

wsl2でsystemdを使用する手順 (2022.2)

ほぼ文末記載の参考サイトを参考に設定してsshd起動までを確認した。以下はその際の手順メモ。

$ 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

下記をwsl-transdebian.listに追記して保存する

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

genieをインストール

$ sudo apt update ; sudo apt upgrade
$ sudo apt install systemd-genie

genieを起動するとタイムアウトした。

$ genie -s
Waiting for systemd....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Timed out waiting for systemd to enter running state.
This may indicate a systemd configuration error.
Attempting to continue.
Failed units will now be displayed (systemctl list-units --failed):
  UNIT                         LOAD   ACTIVE SUB    DESCRIPTION
● ptp4l.service                loaded failed failed Precision Time Protocol (PTP) service
● systemd-modules-load.service loaded failed failed Load Kernel Modules
● systemd-remount-fs.service   loaded failed failed Remount Root and Kernel File Systems

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

3 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

私の環境の場合、ptp4lがタイムアウトしていたのでサービスを無効化した。

$ sudo systemctl stop ptp4l ; sudo systemctl disable ptp4l

再度genieを起動してみたところすでに起動(ボトル?)していた。

$ genie -s
genie: already inside the bottle; cannot start shell!

wsl2を再起動。

PS> wsl2.exe shutdown

systemdがPID1で実行されていることを確認。

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 225252  8592 ?        Ss   11:05   0:01 systemd

wsl2でsshdのサービスがアクティブになっていることを確認でき、ホストからのSSH接続を確認出来た。ここではすでにWindowsホストからのSSH接続設定済だったのでSSH周りの設定は割愛する。

参考

1
1
2

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?