トラブルシューティング
2017年1月4日、「Bash on Ubuntu on Windows」の公式サイトにトラブルシューティングのページが新設されました。ここではトラブルシューティングの内容を紹介します。
1.bashが出すエラーコードを報告するには
ある特定の操作時に「bash」がエラーコードを出力する時は、以下の方法でエラーの内容を報告します。問題を再現するため、現象が発生する操作内容を記憶しておいてください。
1-1.事前準備
以下のスクリプトファイルをダウンロードします。ファイルをダウンロードしたら、ファイルの拡張子「.txt」を「.cmd」に変更してください。
1-2.トレース開始
管理者権限で起動したコマンドプロンプトから「start_lxcore_trace.cmd」を実行します。1-3.bashの起動
「bash.exe」を起動し、問題を再現します。1-4.トレースの停止
管理者権限で起動したコマンドプロンプトから「stop_lxcore_trace.cmd」を実行します。1-5..etlファイルの確認
スクリプトを実行したフォルダー内に3種類の「.etl」ファイルが生成されます。これらのファイルが存在しているか確認します。
1-6.不具合報告
「Microsoft/BashOnWindows」の「issues」ページに、不具合の再現手順や「5.」の「.etl」ファイルを投稿します。2.Bash on Ubuntu on Windowsをアップデートするには
「Bash on Ubuntu on Windows」をアップデートする方法です。「Bash on Ubuntu on Windows」は2種類のコンポーネントで構成されています。
- WSL(Windows Subsystem for Linux)
- Ubuntu(ユーザースペース)
上記それぞれのコンポーネントでアップデートを行う必要があります。
2-1.WSLのアップデート
「WSL」は「Windows」の1機能として提供されています。そのため「Windows Update」から「WSL」をアップデートできます。
最新の「WSL」を入手するには、Insider Programに参加し、最新のビルドへアップグレードする必要があります。
2-2.Ubuntuのアップデート
「Ubuntu」のアップデートは、「Ubuntu」の作法に従って行います。「Ubuntu」をアップデートするには、「bash」から以下のコマンドを1行ずつ実行してください。
apt-get update
apt-get upgrade
apt-get upgrade
ちなみに「apt-get」の代わりに「apt」も利用できます。
3.apt-get upgrade実行時にエラーが出るときは
いくつかのパッケージは、アップデート時に「WSL」がまだサポートしていない機能を要求します。例えば「udev」です。
「udev」はまだサポートしておらず、「apt-get upgrade」実行時にエラーの原因となります。
「udev」が原因のエラーが出るときは、以下の方法でこの問題を回避します。
4.インストール時にError: 0x80040306が発生するときは
従来のコンソール(レガシーコンソール)を有効にしているコマンドプロンプトでは、このエラーが発生します。以下の確認を行い、従来のコンソールの使用をオフにしてください。
4-1.コマンドプロンプトを起動する
コマンドプロンプトを起動します。4-2.プロパティー画面の表示
タイトルバーを右クリックして表示されるメニューから「プロパティー」をクリックし、コマンドプロンプトのプロパティー画面を表示します。4-3.従来のコンソールをオフにする
「従来のコンソールを使う」をオフにする「OK」ボタンをクリックし、コマンドプロンプトを再起動してください。
5.Windowsをアップデートした後、Error: 0x80040154が発生するときは
「Windows」をアップデートした後、「Error: 0x80040154」が発生するときは、「WSL」を再度有効にしてください。「WSL」は「Windows」のアップデート中無効になります。
そのため環境によってはこのエラーが発生します。
「WSL」を再度有効にする方法は、「Bash on Ubuntu on Windows」のインストール手順と同じです。
以下を参考にして「WSL」を有効化してください。
6.言語設定を変更するには
「Bash on Ubuntu on Windows」インストール時、「bash」の言語設定は「Windows」の言語設定と同じになります。つまり日本語環境の「Windows」から「Bash on Ubuntu on Windows」をインストールすると、「bash」の言語も日本語になります。
「bash」で使用する言語を後から変更するには、「bash」内で「update-locale」コマンドを実行します。
例えば「bash」を英語環境に変更したいときは、以下のコマンドを実行します。
sudo update-locale LANG=en_US.UTF8
bash.exeの再起動が必要
言語設定を変更した後その変更を反映するには、「bash.exe」の再起動が必要になります。つまり一旦すべての「bash」を閉じ、再度「bash」を起動してください。
7.システムの復元をした後、インストールに問題が発生したときは
「Windows」のシステムの復元を行った後、「Bash on Ubuntu on Windows」のインストールに問題が発生したときは、以下の手順を実行します。7-1.フォルダーの削除
以下のフォルダーを削除します。
%windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux
デフォルトの環境では、以下のフォルダーになります。
C:\Windows\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux
7-2.WSLの有効化
「WSL」が無効になっている場合は、まず「WSL」を有効にしてください。7-3.PCの再起動
PCを再起動します。7-4.Ubuntuの完全なアンインストール
コマンドプロンプトから以下のコマンドを実行し、「Ubuntu」環境を完全にアンインストールします。
lxrun /uninstall /full
7-5.のインストール
以下を参考にして、「Bash on Ubuntu on Windows」をインストールします。8.インターネットにアクセスできないときは
一部のファイアーウォールソフトとの相性が悪く、「WSL」によるインタネットへのアクセスを遮断してしまいます。「WSL」を利用しているユーザーから、以下のファイアーウォールソフトを利用すると、「WSL」がインターネットにアクセスできなくなる現象が報告されています。
- Kaspersky
- AVG
- Avast
ファイアーウォールをオフにするか、別のソフトを利用するなどユーザー側で対応が必要です。
9.ping実行時に権限がないと言われるときは
「ping」実行時にパーミッションエラー(Permission Denied)が出るときは、以下の方法で回避します。9-1.Anniversary Updateを利用している場合
「Anniversary Update」を利用している場合、「WSL」で「ping」を実行するには管理者権限が必要になります。そのため管理者として実行したコマンドプロンプトやPowerShellから「ping」を実行する必要があります。
9-2.ビルド14926以降を利用している場合
この問題は解決されており、管理者として実行していないコマンドプロンプトやPowerShellから「ping」を実行することができます。10.Ubuntu環境を再インストールするには
色々いじり過ぎて「Ubuntu」環境を壊してしまった場合や、「Ubuntu」環境をクリーンな環境にリセットしたい場合は、「Ubuntu」環境を再インストールすると良いでしょう。「Ubuntu」環境の再インストール方法は、以下を参考にしてください。