おは代々木ダイアリー

いろいろ試したメモを書きます。このブログはアフィリエイトを使用したプロモーションを含みます

WSL --updateしてからSSH経由でWSLが起動しなくなって困った

久々に触ったパソコンでWSLでもしてみるかなーーーと思ったら wsl --list --online で表示されるディストリビューションが古く、あれ?!アップデートが必要??となって迂闊にも wsl --update したらSSH経由でログインしてwslコマンドを叩くことができなくなりました。

コンポーネント版とプリインストール版

WSLには、Windowsのオプション機能として導入できるWSLと、Microsoft Storeからダウンロードできるストア版のWSLが存在するらしいです。

参考: ASCII.jp:WSL(Windows Subsystem for Linux)がMicrosoftストア版に一本化される

今回触っているパソコンは、Windows 10 Homeで、低スペックにもかかわらず戯れで導入した「オプション機能として導入できるWSL」が入っていました。

それを上にも書きましたが、「久々に触るからアップデートするぞ~~~」wsl --update を叩いてしまったからあら大変。問題が起こってしまいました。

起こった問題: SSH経由でWSLコマンドが叩けなくなった

以前も書きましたが、ぼくはWSL2にSSHで乗り込んでWindows 10 Homeなパソコンを開発サーバーにするということをしています。

ohayoyogi.hatenablog.com

上記のような芸当をするためには、SSHで乗り込んで nc コマンドを叩くということが必要になるので、乗り込んだ先でWSLコマンドが叩けないといけません。

が、以下の画面。

wsl.exeで「ファイルにアクセスできません。」

「ファイルにアクセスできません」・・・ってなんじゃそりゃ~~~~

ちゃんとモニタ繋いでローカルにWSLコマンド叩くことはできるのにな~~~~~

解決策: ストア版をアンインストールする

どうやら、これって C:\ProgramData\Packages のアクセス権が特殊になっていて、SSHでログインしたユーザーからは触れなくなっていることが問題っぽい??

  • アクセス権限を修正すれば使えるようになる
  • Windows Update (KBいくつだったか忘れた)をアンインストールすれば解決

調べてみると、上記のような解決策がでてきましたが、アクセス権を修正したこと絶対後になって忘れるし、当該番号のWindows Updateは適用されていなかったしで最後の手段で update したものを元に戻してみることにしました。つまり、ストア版のアンインストールです。

Windows 10の設定の「アプリと機能」から、「LinuxWindows サブシステム」をアンインストールします。

ストア版をアンインストールしてみる

で、アンインストールが完了したら(ここで念のために再起動しました。)気を取り直して… ディストリビューション再インストール!!

wsl --install -d Ubuntu

Ubuntu再インストール

とまぁ、再インストールしてみましたが再インストールが必要かはわかりません。自分の場合、なぜかフォルダが圧縮されていたりしてちゃんと起動しなかったので気持ち悪くて再インストールしてみましたが、 wsl --update で単に起動しなくなったケースでは再インストールは不要かもしれません。

終わりに

というわけで、誤ってストア版に上げてしまったwsl.exeを戻して事なきを得ましたという記事でした。どなたかの参考になれば幸いです。

しかし、これからストア版に統一されるっていうのにこんな不具合抱えていて大丈夫なのか?と心配になりますね。このマシンも結構古くから使っているので最近のWindows10をクリーンインストールしたりすると良くなったりするんだろうか。

おまけ

なんでそもそも前回までで開発サーバー用意できたのにまたWSLいじってるの?と思われた方もいらっしゃると思いますが、ゲーミングPC付けっぱなしにしているのに罪悪感を覚え、低消費電力な録画サーバーに開発サーバーを兼務させられないか?と試してみているところでした。

もしよければ、Twitterもフォローお願いしいます~