LoginSignup
4
1

More than 5 years have passed since last update.

WSLでターミナルが上がらなくなった事例紹介

Last updated at Posted at 2018-10-08

概要

WSLで自動起動される/mnt/c等のマウントオプションを/etc/wsl.confで調整できることを知り、設定を行ったところ、wsl-terminalが上がらなくなってしまいました。
その時の原因と復旧方法の紹介です。

環境

  • Win10 Home 64bit Ver1803 Build17134.320
  • Ubuntu 16.04.5
ディストリビューション一覧
>wslconfig /l
Windows Subsystem for Linux ディストリビューション:
Legacy (既定)

背景

なぜ調整しようと思ったかは、記事「WSLでもgitでsshを使いたい」へのコメントをご覧ください。

原因

/etc/wsl.confで調整できる、drvfsのマウントオプション ( [automount]セクションのoptionsパラメータ ) に、fmask=177という記述をしてしまったせいでした。

wsl-terminalが上がらないため、なぜマズかったのかは推測になるのですが、fmask=177というオプションをつけると、Cドライブ,Dドライブ,…上のファイルは全て実行権が消えてしまいます。
自分の環境ではホームディレクトリをDドライブに置いていて、おそらくwsl-terminalが参照するファイルの中に実行権を要するものがあることで、起動時の初期化処理に失敗するようになったのではないか、と推測しています。

復旧

復旧のためには次の2つの処理が必要です

  1. /etc/wsl.confの消去、或いは内容の適正化
  2. マウント済み drvfs のアンマウント或いは、適切なマウントオプションでの再マウント

2.については、最悪PCの再起動で良いのですが、問題は1.です。なぜなら wsl-terminal が上がりませんから。
そこでどうするかと言うと、Windowsのコマンドプロンプト(cmd.exe)を起動し、そこからwslコマンドでWSLを起動し、そのままシェルを使いました。
※次の図を参照のこと

image.png

後はsudo rm -f /etc/wsl.confで削除するなり、sudo mv /etc/wsl.conf{,.bak}で別ファイルに退避するなりご自由に。
※2.についてもumountコマンドを実行すれば、PC再起動までせず対処できます。

終わりに

いきなり起動しなくなるためビビりますが、慌てず騒がず対処を探しましょう、的な。
…とは言え、何もエラーメッセージを残さず画面が消えるってのは、ちょっと頂けないかなと思います。
※wsl-terminalの設定項目を1通り見たのですが、異常終了時でも(エラー等保全のために)画面を残すようなオプションは無さそう…。SSHクライアントソフトであるputtyなんかはそういうのちゃんとあるんですけどね。

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