みなさん、こんにちは。
Windows上でLinux環境を手軽に扱えるWSL(Windows Subsystem for Linux)は、開発者にとって非常に便利なツールです。特にWSL2では、実質的に仮想マシン上でLinuxカーネルが動作するため、より本格的なLinux環境が利用できるようになりました。
しかし先日、WSL2を一度アンインストールして再インストールしようとした際、思わぬ落とし穴にハマってしまいました。
この記事では、私が直面したエラーとその原因、そして解決方法についてご紹介します。WSL2を扱う中で同様の症状に悩まされている方の助けになれば幸いです。
WSL2の再インストール時に発生したエラー
私が遭遇した手順は次のような流れでした。
- WSL2をデフォルトでインストール(通常、Ubuntuがインストールされる)
- ある事情でWSL2をアンインストール
- 再度WSL2をインストール(同じくUbuntuを選択)
- 起動しようとすると、次のようなエラーが発生
Wsl/Service/CreateInstance/ERROR_FILE_NOT_FOUND
このエラーメッセージを見て、「ファイルが見つからない?インストールし直したのにどういうこと?」と頭を抱えました。
原因:実はよくある「ゴミ」が残っているだけだった
調べてみたところ、これはWSLでよくあるトラブルの一つで、アンインストール時に以前のディストリビューション(Ubuntuなど)の登録情報が完全に削除されていなかったことが原因でした。
WSL上では、インストールされたLinuxディストリビューションが登録状態で管理されています。たとえOS側のアプリから「アンインストール」しても、WSL内部ではそのディストリビューションの登録情報が残ることがあるのです。
この「残骸」が原因で、新たに同じ名前のディストリビューションをインストールしようとすると、WSLが混乱して起動できなくなるというわけです。
解決方法:wslコマンドでディストリビューションを整理する
では、どうすればこの問題を解決できるのか?
手順はとてもシンプルです。
1. 現在登録されているディストリビューションを確認
まずは、WSLに現在登録されているディストリビューションを確認します。
wsl -l
このコマンドを実行すると、以下のようなリストが表示されます。
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-22.04
ここに、すでにアンインストールしたはずのディストリビューションが残っている場合、それがトラブルの原因です。
2. 不要なディストリビューションを解除
表示された中に不要なものがあれば、以下のコマンドで登録を解除します。
wsl --unregister ディストリビューション名
例えば、Ubuntuを解除したい場合は以下のコマンドを実行します。
wsl --unregister Ubuntu
注意点として、登録されているディストリビューションが一つだけで、それが問題を引き起こしている場合は、そのディストリビューションを一度解除してから、改めてインストールし直す必要があります。
再インストール後、無事起動できた!
上記の手順で不要なディストリビューションを解除した後、再度Ubuntuをインストールしたところ、エラーは出ずに正常に起動するようになりました。
wsl
と入力すれば、無事にUbuntuのシェルが立ち上がり、WSL2環境が復活しました。
まとめ:同じディストリビューションのバージョン違いには要注意
今回のトラブルを通じて、WSLにおけるディストリビューションの管理の仕組みを改めて理解することができました。特に、同じディストリビューション(例えばUbuntu)を複数バージョンインストールしようとしたり、入れ直したりするケースでは、登録の残骸に注意が必要です。
再インストールする前に、wsl -l
で登録状況をチェックし、必要であればwsl --unregister
でクリーンアップしておくと、トラブルを未然に防ぐことができます。
おまけ:wslコマンドは定期的にチェックしよう
WSLを頻繁に使う方であれば、知らず知らずのうちに複数のディストリビューションが登録されたままになっていることもあります。不要なものはwsl --unregister
で整理しておくと、起動トラブルやリソース消費の抑制にもつながります。
WSLは非常に強力なツールですが、内部的には仮想マシンやファイルシステムといった複雑な仕組みが絡んでいます。その分、ちょっとした操作ミスが思わぬトラブルにつながることもあります。今回の記事が、同じように悩んでいる方の参考になれば嬉しいです。
本日も最後までお読みいただきありがとうございました。
それでは、よいWSLライフを!