概要
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つの処理が必要です
-
/etc/wsl.conf
の消去、或いは内容の適正化 - マウント済み drvfs のアンマウント或いは、適切なマウントオプションでの再マウント
2.については、最悪PCの再起動で良いのですが、問題は1.です。なぜなら wsl-terminal が上がりませんから。
そこでどうするかと言うと、Windowsのコマンドプロンプト(cmd.exe
)を起動し、そこからwsl
コマンドでWSLを起動し、そのままシェルを使いました。
※次の図を参照のこと
後はsudo rm -f /etc/wsl.conf
で削除するなり、sudo mv /etc/wsl.conf{,.bak}
で別ファイルに退避するなりご自由に。
※2.についてもumountコマンドを実行すれば、PC再起動までせず対処できます。
終わりに
いきなり起動しなくなるためビビりますが、慌てず騒がず対処を探しましょう、的な。
…とは言え、何もエラーメッセージを残さず画面が消えるってのは、ちょっと頂けないかなと思います。
※wsl-terminalの設定項目を1通り見たのですが、異常終了時でも(エラー等保全のために)画面を残すようなオプションは無さそう…。SSHクライアントソフトであるputtyなんかはそういうのちゃんとあるんですけどね。