LoginSignup
1
1

WSL2が起動できなくなった。なんとか直した

Last updated at Posted at 2024-03-01

まえがき:

素人のセリフだが、「いつもは使えていたのに」「ある日突然」「何もしていないのに」WSLが起動しなくなったが「いろいろやっていたら」直った。
将来同じことで悩むであろう自分のためにメモを残す。
ちゃんとログを取っていないので記憶に頼って書く。
ひどくてスミマセン。

現象:

Windows 10 Proで、WSL2を使用し、Ubuntu 22.04を使っていた。
ふだんはショートカットをダブルクリックしたらbashのコンソールが起動していた。
しかしある日あるとき、ショートカットをダブルクリックしたら、コンソールが一瞬起動してすぐ消える。
何らかのエラーが出ているが動体視力がなくて見えないようだ。

検索:

wsl 起動しない」で検索すると

  • wslをコマンドラインで起動して修復する
  • wslconfigをコマンドラインで起動して修復する
    などという記事に当たる。
    が、普通にWindowsコマンドプロンプト(cmd.exe)を起動してwslwslconfigと入力しても「指定されたパスが見つかりません」と表示される。

調査:

物理ファイル「wsl.exe」「wslconfig.exe」がどこにあるか調査する。
いくつか方法はあるだろうが、Everything.exeというフリーウェアで検索すると、それぞれ何箇所かで見つかった。
主要なところとしては

  • C:\Program Files\WindowsApps\WSL\wsl.exe
  • C:\Windows\System32\wslconfig.exe
    などが見つかった。

アクセスできない:

C:\Program Files\WindowsApps」というフォルダーは、一般ユーザーからもAdministratorからも絶対に見つからないパスである。
一般ユーザーとしてcmd.exeからcd \Program Files\WindowsAppsしても「指定されたパスが見つかりません」と言われる。

管理者権限でcmd.exeを起動:

cmd.exeを管理者権限で起動してみる。
いろいろやり方はあるが、以下のようにしている。

  1. スタートメニューでcmdを検索する
  2. コマンドプロンプトのアイコンをデスクトップに右クリックドラッグし、ここにショートカットを作成するを選ぶ
  3. ショートカットを右クリック=>プロパティを選択
  4. ショートカットタブの詳細設定をクリック
  5. 管理者として実行をチェックオン
  6. OKを2回クリック
    これでこのショートカットをダブルクリックしたら、cmd.exeが管理者として起動する。

アクセスはできた:

Administratorとしてcmd.exeからcd \Program Files\WindowsAppsすると、cdできる。
さらにcd WSLとすると、wsl.exeのあるフォルダーにcdできる。
ここで.\wsl.exeと入力しても「指定されたパスが見つかりません」と言われる。
cd \Windows\System32として.\wslconfig.exeと入力してもやはり「指定されたパスが見つかりません」と言われる。
どういうこと?
wsl.exeおよびwslconfig.,exeを起動すると、何らかの設定(レジストリ?)によってインストールされたUbuntuを参照しようとして、そのパスが見つからないのだろうか。
(いまだに分からない)

効果がなかったこと:

以下はいろいろやったけど関係ないと思う。

  • コントロールパネル=>プログラムと機能=>Linux用Windowsサブシステムを無効化、再起動、最有効化、再起動
  • プログラムの追加と削除でUbuntuを削除=>Windows StoreからUbuntuをインストール
  • C:\Program Files\WindowsApps\WSLをシステム環境変数に追加
  • C:\Windows\System32をシステム環境変数に追加(もともと入ってた)
    どうしても「指定されたパスが見つかりません」が消えない。

たぶんこれが決め手:

  • 管理者としてcmd.exeを起動
  • cd \Program Files\WindowsApps\WSL
  • .\wsl.exe --update(なんかごちょごちょ言っていた)

これでなぜか一般ユーザーとしても、管理者としても、どこのパスにいてもwslと入力するとWSLが起動した。

一般ユーザーが作れない:

最初の1回、一般ユーザーのユーザー名と初期パスワードを求められる。
これは普通の現象。
だが、ここで何を入れても「指定されたパスが見つかりません」と言われる。
Ctrl+Cで中断。
(これもいまだになぜか分からない)

rootとして起動してしまう:

もう1度wslで起動すると、プロンプトが「#」。
さっき一般ユーザーを作成できなかったので?rootとして起動してしまう。
以下で解決した。

  • # adduser ユーザー名で一般ユーザーを追加する
  • # gpasswd -a ユーザー名 sudoでsudo権限を追加する
  • /etc/wsl.confをnano(かなんか)で編集して、以下のエントリーを追加する
   [user]
   default=ユーザー名

以上。
原理はまだよくわからないが、とりあえず使えている。

(この項終わり)

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