Windows
 Computer >> コンピューター >  >> システム >> Windows

【保存版】WSL2(Windows Subsystem for Linux)のエラーメッセージ・エラーコード20選とその解決策

あらゆるソフトウェアと同様に、Windows Subsystem for Linux(WSL2)にもさまざまな不具合やトラブルがつきものです。この記事では、WSLで発生しやすい代表的なエラーメッセージとエラーコードの原因を解説し、それぞれの具体的な対処法をわかりやすくご紹介します。

WSLのエラー・問題・不具合を解消する方法

本記事で取り上げるのは、以下の20種類のエラーメッセージおよびエラーコードです。

  1. WSL 2のオプションが表示されない
  2. エラー: 0x1bc
  3. インストール時のエラー: 0x80040306
  4. WindowsからWSLファイルにアクセスできない
  5. WSL 2ディストリビューションが起動せず「WSL 2」とのみ表示される
  6. コマンドが見つからない(Command Not Found)
  7. エラー: 0x80370102(必要な機能がインストールされていないため仮想マシンを起動できません)
  8. Windowsアップデート後のエラー: 0x80040154
  9. エラー0x80070003でWSLが動作しなくなる
  10. WSLでの表示言語の変更
  11. システム復元後のインストール問題
  12. WSLでインターネットに接続できない
  13. Ping実行時の「Permission Denied」
  14. WSL 2インストール後にPCが起動しない
  15. ディストリビューション内でWindowsコマンドが実行できない
  16. ICSが無効になっている
  17. Bashがハングする
  18. OpenSSHサーバーの接続問題
  19. 参照アセンブリが見つからない
  20. SSH関連の権限エラーを修正する

それでは、各項目を順番に詳しく見ていきましょう。

1. WSL 2のオプションが表示されない

多くのWindowsユーザーから、ビルド1903を使用しているにもかかわらずWSL 2のオプションが表示されないという報告があります。これは、お使いのPCにまだWSL 2用のバックポート更新プログラムが配信されていないことが原因です。

対処法は簡単です。Windows Updateで最新の更新プログラムを確認・適用すれば解決します。

2. エラー: 0x1bc

「表示言語」または「システムロケール」が英語以外に設定されている場合、以下のようなエラーが表示されることがあります。

wsl --set-default-version 2

Error: 0x1bc

For information on key differences with WSL 2 please visit https://aka.ms/wsl2

このエラーを解決するには、カーネルがPCにインストールされているかどうかを確認します。次のコマンドを使用してください。

dir %SystemRoot%\system32\lxss\tools\kernel

カーネルが存在しない場合は、aka.msからダウンロードします。管理者権限でダウンロードし、カーネルをマシンにインストールすることでエラーを解消できます。

3. インストール時のエラー: 0x80040306

インストール時にエラー0x80040306が表示される場合は、レガシコンソール(Legacy Console)を無効化する必要があります。以下の手順に従ってください。

  1. スタートメニューからコマンドプロンプトを管理者として開きます。
  2. cmdアイコンを右クリックし、「プロパティ」を選択します。
  3. 「従来のコンソールを使う」のチェックを外し、「OK」をクリックします。

最後に、問題が解決したかどうかを確認しましょう。

4. WindowsからWSLファイルにアクセスできない

Windows上で\\wsl$経由でWSLにアクセスできない場合、9Pプロトコルのファイルサーバーが起動に失敗している可能性があります。

最も簡単な解決策は、PCを最新の状態に更新し、「Windows Updateで他のMicrosoft製品の更新プログラムを受け取る」設定を有効化することです。手順は以下の通りです。

  1. Win + Iキーで設定を起動します。
  2. 「更新とセキュリティ」>「詳細オプション」をクリックします。
  3. Windows Updateの際に他のMicrosoft製品の更新プログラムを受け取る」のトグルをオンにします。

これで問題が解決するはずです。

5. WSL 2ディストリビューションが起動せず「WSL 2」とのみ表示される

表示言語が英語に設定されていない場合、このエラーは避けられません。WSL 2の起動を試みると、以下のような出力が表示されます。

C:\Users\me>wsl

WSL 2

このエラーを解決するには、カーネルを手動でダウンロードしてインストールする必要があります。aka.ms/wsl2kernelからファイルをダウンロードし、カーネルをインストールすれば簡単に解決できます。

6. コマンドが見つからない(Command Not Found)

これは、Linux環境でWindowsの.exeファイルを実行したときによく発生するエラーの一つです。以下のようなエラーが表示されることがあります。

$ notepad.exe

-bash: notepad.exe: command not found

これは、$PATHが.exeファイルを見つけられないために起こります。最善の解決策は、ターミナルで次のコマンドを実行することです。

export PATH=$PATH:/usr/sbin

実行後、エラーが解消されたかどうかを確認してください。

7. エラー: 0x80370102(必要な機能がインストールされていないため仮想マシンを起動できません)

多くのユーザーが、Linuxディストリビューションのインストール時にこのエラーを経験しています。これまでのエラーとは異なり、このエラーには複数の解決策があるため、順番にすべて試してみましょう。

エラー0x80370102を解決するためにできることは以下の3つです。

  1. Hyper-Vを有効化する
  2. ハードウェア仮想化を有効化する
  3. 入れ子仮想化(Nested Virtualization)を有効化する

それぞれ詳しく見ていきます。

Hyper-Vを有効化する

Hyper-Vがないと仮想環境を作成できません。以下の手順で有効化してください。

  1. スタートメニューからコントロールパネルを開きます。
  2. 「プログラムと機能」>「Windowsの機能の有効化または無効化」をクリックします。
  3. 一覧を下にスクロールして「Hyper-V」を見つけ、チェックを入れて「OK」をクリックします。

Hyper-Vを有効化したら、問題が解決したかどうかを確認しましょう。

ハードウェア仮想化を有効化する

仮想マシンを実行するには、ハードウェア仮想化が必須です。エラー0x80370102が発生している場合は、BIOSからハードウェア仮想化を有効にしてみてください。

入れ子仮想化(Nested Virtualization)を有効化する

入れ子仮想化により、VM内部でハイパーバイザーを実行できるようになります。それでもエラーが解消しない場合は、入れ子仮想化を有効にしてみてください。PowerShellを管理者として起動し、次のコマンドを実行します。

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

コマンドの実行が完了したら、問題が解決したかどうかを確認してください。

8. Windowsアップデート後のエラー: 0x80040154

Windows UpdateによってWSL機能が無効化されると、このエラーが表示されることがあります。解決するには、このオプションを再度有効にする必要があります。以下の手順に従ってください。

  1. スタートメニューからコントロールパネルを起動します。
  2. 「プログラムと機能」>「Windowsの機能の有効化または無効化」をクリックします。
  3. 一覧から「Windows Subsystem for Linux」を見つけ、チェックを入れて「OK」をクリックします。

最後にPCを再起動し、問題が解消されたかどうかを確認しましょう。

9. エラー0x80070003でWSLが動作しなくなる

WSLがエラーコード0x80070003で停止した場合は、専用のトラブルシューティングガイドに従って対処してください。一般的には、WSLの再インストールやディストリビューションの登録解除(wsl --unregister)が有効なケースが多いです。

10. WSLでの表示言語の変更

WSLは、Windows PCの言語設定に合わせてUbuntuのロケールを自動的に変更します。この挙動が気に入らない場合は、次のコマンドで表示言語を任意の言語に設定できます。

※注意:以下のコマンドは言語をen-US(米国英語)に変更します。

sudo update-locale LANG=en_US.UTF8

実行後、問題が解決したかどうかを確認してください。

11. システム復元後のインストール問題

Windowsのシステム復元後にインストールの問題が発生した場合は、Windows Subsystem for Linuxフォルダーを削除してみてください。パスは以下の通りです。

%windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux

PCを再起動し、Bashを再インストールして、問題が解決するかどうかを確認しましょう。

12. WSLでインターネットに接続できない

WSL内でインターネットにアクセスできないという報告は多くありますが、解決策は思ったより簡単かもしれません。この問題は、サードパーティ製アンチウイルスソフトのファイアウォールがインターネット接続をブロックしていることが原因です。アンチウイルスソフトをアンインストールすれば解決します。

13. Ping実行時の「Permission Denied」

WSLでPingが実行できない場合は、管理者権限を持っていないことを意味します。UbuntuやLinuxを管理者権限で実行するか、コマンドラインインタープリター上でBash.exeを管理者権限付きで起動してください。

これで問題は簡単に解決するはずです。

14. WSL 2インストール後にPCが起動しない

WSL 2のインストール後に起動できなくなる原因はまだ完全には解明されていませんが、Microsoftもこの問題を診断するためのアップデートに取り組んでいます。現時点で試せる対策は以下の2つです。

  • システムの復元ポイントを使用してエラーを修復する
  • グラフィックスドライバーを更新して改善するか確認する

15. ディストリビューション内でWindowsコマンドが実行できない

Microsoft Storeの一部のディストリビューションは、すべてのWindowsコマンドの実行に完全には最適化されていません。以下のようなエラーが表示されることがあります。

-bash: powershell.exe: command not found
powershell.exe /c start

このエラーを解決するには、まず次のコマンドを実行します。

echo $PATH

出力に「/mnt/c/Windows/system32」が含まれているかどうかを確認してください。エラーが発生している場合、ほとんどの場合このパスが含まれていません。

次に、以下のコマンドでプロファイル設定を確認します。

cat /etc/profile

パスの割り当てが「#」で始まっている場合は、そのブロックをコメントアウトしてください。また、wsl.confが存在する場合は、appendWindowsPath=falseの記述がないことを確認し、あればコメントアウトします。

これらの作業が完了したら、ディストリビューションを再起動する必要があります。次のコマンドを使用してください。

wsl -t <ディストリビューション名>

または

wsl --shutdown

これで問題が解決するはずです。

16. ICSが無効になっている

WSLはICS(Internet Connection Sharing:インターネット接続の共有)なしでは動作できません。ホストネットワークサービス(HNS)はICSを使用して、NAT、DNS、DHCP、ホスト接続共有のための基本的な仮想ネットワークをWSL 2向けに構築しています。

このエラーを解決するには、ICSを有効化する必要があります。以下の手順に従ってください。

  1. スタートメニューからサービス(services.msc)を起動します。
  2. 「Internet Connection Sharing (ICS)」をダブルクリックし、停止している場合は「開始」をクリックします。
  3. 最後に「適用」>「OK」をクリックします。

さらに、いくつかのポリシーも編集する必要があります。グループポリシーエディター(gpedit.msc)を起動し、以下の場所へ移動します。

コンピューターの構成 > 管理用テンプレート > ネットワーク > ネットワーク接続

そして、以下のポリシーを無効化します。

  • DNSドメインネットワーク上でのネットワークブリッジのインストールと構成を禁止する
  • DNSドメインネットワーク上でのインターネット接続ファイアウォールの使用を禁止する
  • DNSドメインネットワーク上でのインターネット接続の共有の使用を禁止する
  • ネットワークの場所を設定するときにドメインユーザーに昇格を要求する

17. Bashがハングする

Bashがハングしたりデッドロックしたりして入力に応答しなくなった場合は、PCを再起動するか、メモリダンプを報告してください。ただし、後者はシステムクラッシュにつながる可能性があるため、報告前に必ず作業内容を保存しておきましょう。

18. OpenSSHサーバーの接続問題

OpenSSHサーバーの接続問題が発生した場合は、まずOpenSSHサーバーが稼働中かどうかを確認します。次のコマンドを使用してください。

sudo service ssh status

稼働していない場合は、次のコマンドでサービスを開始します。

sudo service ssh start

すでに稼働している場合は、次のコマンドでサービスを再起動し、問題が解決するかどうかを確認してください。

sudo service ssh restart

それでも解決しない場合は、SSHDをデバッグモードで起動してみてください。その前に、次のコマンドでSSHサービスを停止します。

sudo service ssh stop

次に、以下のコマンドでSSHDをデバッグモードで起動します。

sudo /usr/sbin/sshd -d

これでエラーが解決するはずです。

19. 参照アセンブリが見つからない

多くのユーザーが、WSLの追加機能を有効化しようとした際に「参照されたアセンブリが見つかりません(The referenced assembly could not be found)」というエラーに遭遇しています。該当する場合は、コントロールパネルからWindows Subsystem for Linuxを有効化し、PCを最新の状態に更新してください。これでエラーが解決するはずです。

20. SSH関連の権限エラーを修正する

以下のようなエラーが表示された場合は、このセクションの解決策をお試しください。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/artur/.ssh/private-key.pem' are too open.

この問題を解決するには、Microsoftの推奨に従って/etc/wsl.confファイルを開き、以下の内容を追記します。

[automount]
enabled = true
options = metadata,uid=1000,gid=1000,umask=0022

これでエラーが解決します。作業の前に、十分な権限を持っていることを必ず確認してください。

以上が、Windows Subsystem for Linuxでよく発生するエラーメッセージ・エラーコードとそのトラブルシューティング方法でした。この記事が、皆さんのWSL関連のエラーや問題の解決に役立つことを願っています。

  1. WSLでWindows 10・11上にLinux環境を構築する方法|インストールからGUIアプリ起動まで

    はじめに筆者はOS関連の学習でWSL(Windows Subsystem for Linux)を長年利用しています。仮想マシンの構築やデュアルブートといった複雑な準備なしに、Windows上で直接Linuxコマンドを実行できる手軽さが大きな魅力です。この記事を読み終える頃には、WindowsからそのままLinuxコマンドを実行できるようになっているはずです。Windows上でLinuxコマンドを実行している様子前提条件WSLを快適に運用するには、Windows 11へのアップグレードをおすすめします。Windows 10でもWSLは利用できますが、筆者の経験上、Windows 11の方がはるか

  2. Microsoft、WSLのプレビュー版をWindows 11のMicrosoft Storeで提供開始

    WSLがMicrosoft Storeから入手可能にMicrosoftは、Windows Subsystem for Linux(WSL)のプレビュー版をWindows 11のMicrosoft Storeで提供開始しました。この変更により、Windowsの機能更新プログラムを待つことなく、最新のWSLアップデートを簡単に入手できるようになります。既存バージョンとの互換性これはWSLの新バージョンではありません。多くの開発者がすでに知っている同じWSLであり、変更されたのはインストールとアップデートの提供方法だけです。実際、Windows内蔵版のWSLをすでにインストールしている環境でも、St