Windows Subsystem for Linux に関してよく寄せられる質問

全般

Windows Subsystem for Linux (WSL) とは何ですか。

Linux 用 Windows サブシステム (WSL) は Windows オペレーティング システムの機能の 1 つであり、Linux ファイル システムを Linux のコマンド ライン ツールや GUI アプリと一緒に Windows 上で従来の Windows デスクトップやアプリと共に直接実行することを可能にします。

詳しくは、詳細ページをご覧ください。

WSL の対象ユーザーは誰ですか。

これは、主に開発者向けのツールで、特にオープン ソース プロジェクトを扱う、または Linux サーバー環境へのデプロイを行う Web 開発者向けです。 WSL が対象とするのは、Bash、一般的な Linux ツール (sedawk など)、 および Linux ファースト フレームワーク (Ruby、Python など) のユーザーです が、Windows の生産性向上ツールにも親しんでいるユーザーを対象としています。

WSL で何ができますか。

WSL を使用すると、任意のディストリビューション (Ubuntu、Debian、OpenSUSE、Kali、Alpine など) を使用して、Bash シェルで Linux を実行できます。 Bash を使用すると、コマンド ライン Linux ツールおよびアプリを実行できます。 たとえば、「lsb_release -a」と入力して Enter キーを押すと、現在実行中の Linux ディストリビューションの詳細が表示されます。

ディストリビューションの詳細のスクリーンショット

Linux Bash シェル内からローカル コンピューターのファイル システムにアクセスすることもできます。ローカル ドライブは /mnt フォルダーの下にマウントされます。 たとえば、 C: ドライブは /mnt/c の下にマウントされます。

マウントされた C ドライブのスクリーンショット

WSL が組み込まれた一般的な開発ワークフローについて説明してください。

WSL は開発者を対象としており、内部開発ループの一部としての使用を目的としています。 たとえば、Sam が CI/CD パイプライン (継続的インテグレーションおよび継続的デリバリー) を作成しており、クラウドにデプロイする前に、まずローカル コンピューター (ノート PC) でそれをテストしたいと思っているとします。 Sam は WSL (速度とパフォーマンスを向上させるには WSL 2) を有効にして、ローカル (ノート PC) で本物の Linux Ubuntu インスタンスと、任意の Bash コマンドとツールを使用することができます。 開発パイプラインをローカルで検証したら、Sam はその CI/CD パイプラインをクラウド (Azure) にプッシュできます。そうするには、これを Docker コンテナーに格納し、そのコンテナーをクラウド インスタンスにプッシュします。こうして、運用に対応した Ubuntu VM 上でこれを実行できます。

Bash とは何ですか。

Bash は、広く使われているテキスト ベースのシェルおよびコマンド言語です。 これは、Ubuntu およびその他の Linux ディストリビューション内と macOS に含まれる既定のシェルです。 ユーザーは、シェルにコマンドを入力して、スクリプトを実行したり、コマンドやツールを実行したりして多くのタスクを行います。

この処理のしくみ

Windows コマンド ラインのブログの次の記事を参照します: WSL が Windows に Linux ファイルへのアクセスを許可する方法の詳細に関する記事。ここでは、基礎となるテクノロジについて詳しく説明しています。

VM で Linux ではなく WSL を使用するのはなぜですか。

WSL は、必要なリソース (CPU、メモリ、およびストレージ) が完全な仮想マシンよりも少なくて済みます。 また、WSL を使用すると、Linux コマンド ライン ツールおよびアプリを Windows コマンド ライン、デスクトップおよびストア アプリと共に実行したり、Linux 内から Windows ファイルにアクセスしたりすることもできます。 これにより、必要に応じて、同じファイル セットに対して Windows アプリと Linux コマンド ライン ツールを使用できます。

たとえば、Windows ではなく Linux 上で Ruby を使用するのはなぜですか。

一部のクロスプラットフォーム ツールは、それらが実行される環境が Linux のように動作することを前提として構築されました。 たとえば、一部のツールでは、非常に長いファイル パスにアクセスできることや、特定のファイルまたはフォルダーが存在することを前提としています。 これにより、Linux とは動作が異なる事が多い Windows で問題が発生することがよくあります。

Ruby や Node.js のような多くの言語は、たいていの場合、Windows に移植され、非常にうまく動作します。 ただし、すべての Ruby Gem または node/NPM ライブラリ所有者が、Windows をサポートするためにライブラリを移植するわけではなく、多くのものに Linux 固有の依存関係があります。 これにより、このようなツールやライブラリを使用して構築されたシステムはビルドから悪影響を受ける場合が多く、Windows で実行時エラーや望ましくない動作が発生することがあります。

これらは、多くのユーザーが Windows のコマンド ライン ツールの向上を Microsoft に依頼する原因となった問題の一部に過ぎません。また、こうした要因から、Microsoft が Canonical と提携して、ネイティブ Bash と Linux コマンド ライン ツールを Windows で実行できるようにすることになりました。

PowerShell においてこれは何を意味しますか。

OSS プロジェクトでの作業中、PowerShell プロンプトから Bash を実行すると非常に役立つシナリオが多数あります。 Bash のサポートは補完的なものであり、Windows でのそのコマンド ラインの価値を高め、PowerShell と PowerShell コミュニティでその他の一般的なテクノロジを利用できるようにします。

詳細については、PowerShell チームのブログ「Windows の Bash:それがすばらしい理由と PowerShell における意味」をお読みください

WSL はどのようなプロセッサをサポートしていますか。

WSL は x64 および ARM の CPU をサポートしています。

C: ドライブにアクセスするにはどうすればよいですか。

ローカル コンピューター上のハード ドライブのマウント ポイントが自動的に作成され、Windows ファイル システムに簡単にアクセスできるようになります。

/mnt/ドライブ文字>/

使用例は、c:\ にアクセスする cd /mnt/c です。

Git Credential Manager をセットアップするにはどうすればよいですか。 (WSL で Windows Git アクセス許可を使用するにはどうすればよいですか。)

チュートリアル「Linux 用 Windows サブシステムで Git の使用を開始する」を参照します。ここには、Git Credential Manager を設定し、Windows Credential Manager に認証トークンを保存する方法について説明するセクションが含まれています。

Linux アプリで Windows ファイルをどのように使用しますか。

WSL の利点の 1 つは、Windows と Linux の両方のアプリまたはツールを経由してファイルにアクセスできることです。

WSL では、コンピューターの固定ドライブを Linux ディストリビューションの /mnt/<drive> フォルダーの下にマウントします。 たとえば、 C: ドライブは /mnt/c/ の下にマウントされます。

マウントされたドライブを使用すると、C:\dev\myproj\ またはVS Codeを使用して、たとえば C:\dev\myproj\ 内のコードを編集したり、 を介して同じファイルにアクセスして Linux でそのコードをビルド/テストしたりできます。

詳細については、「Windows および Linux ファイル システム間での作業」の記事を参照します。

Linux ドライブのファイルはマウントされた Windows ドライブのものとは異なりますか。

  1. Linux ルート (つまり /) の下にあるファイルは、Linux の動作と整合する WSL によって制御されます。次のようなものが含まれますが、これらに限定されません。

    • 無効な Windows ファイル名の文字を含むファイル
    • 管理者以外のユーザー用に作成されたシンボリック リンク
    • chmod および chown を使用したファイル属性の変更
    • ファイル/フォルダーの大文字と小文字の区別
  2. マウントされたドライブのファイルは Windows によって制御され、次のように動作します。

    • 大文字と小文字の区別をサポート
    • すべてのアクセス許可は、Windows アクセス許可を最適に反映するように設定

WSL ディストリビューションをアンインストールするにはどうすればよいですか。

WSL からディストリビューションを削除し、その Linux ディストリビューションに関連付けられているすべてのデータを削除するには を実行します。ここで、<distroName> には Linux ディストリビューションの名前を指定します。これは、wsl -l コマンドの一覧から確認できます。

さらに、他のストア アプリケーションと同じように、コンピューター上で Linux ディストリビューション アプリをアンインストールできます。

WSL コマンドの詳細については、WSL の基本的なコマンドに関する記事を参照します。

OpenSSH サーバーを実行するにはどうすればよいですか。

OpenSSH には、オプション機能として Windows が付属しています。 「OpenSSH をインストールする」を参照します。WSL で OpenSSH を実行するには、Windows の管理者特権が必要です。 OpenSSH サーバーを実行するには、WSL ディストリビューション (つまり Ubuntu) を実行するか、管理者として Windows ターミナルを実行します。 WSL を使用した SSH シナリオをカバーするリソースがいくつかあります。 Scott Hanselman のブログ記事から、Linux または Windows またはその他の場所から Windows 10 コンピューターに SSH 接続する方法外部コンピューターから Windows 10 上の WSL2 に SSH 接続する方法外部コンピューターから Windows 10 上の Bash および WSL2 に SSH 接続する簡単な方法Windows 10 の組み込み OpenSSH を使用してリモート Linux コンピューターに自動的に SSH 接続する方法に関する情報を確認します。

WSL の表示言語を変更するにはどうすればよいですか。

WSL インストールでは、Windows インストールのロケールに合わせて Ubuntu ロケールを自動的に変更しようとします。 この動作が不要な場合は、次のコマンドを実行して、インストールの完了後に Ubuntu ロケールを変更できます。 この変更を有効にするには、WSL ディストリビューションを再起動する必要があります。

次の例は、ロケールを en-US に変更します。

sudo update-locale LANG=en_US.UTF8

WSL からインターネットにアクセスできないのはなぜですか。

一部のユーザーにより、WSL でのインターネット アクセスをブロックする特定のファイアウォール アプリケーションに関する問題が報告されています。 報告されているファイアウォールは次のとおりです。

  1. Kaspersky
  2. AVG
  3. Avast
  4. Symantec Endpoint Protection
  5. F-Secure

ファイアウォールをオフにすると、アクセスできる場合があります。 場合によっては、ファイアウォールをインストールするだけでアクセスがブロックされるようです。

Windows の WSL からポートにアクセスするにはどうすればよいですか。

WSL は Windows で実行されているため、Windows の IP アドレスを共有します。 そのため、localhost 上の任意のポートにアクセスできます。たとえば、ポート 1234 に Web コンテンツがあるとすると、 https://localhost:1234 を Windows ブラウザーに入力できます。 詳細については、ネットワーク アプリケーションへのアクセスに関する記事を参照します。

WSL ディストリビューションをバックアップする、または別のドライブに移動するにはどうすればよいですか。

ディストリビューションをバックアップまたは移動する最適な方法は、Windows バージョン 1809 以降で使用できるエクスポート/インポート コマンドを使用することです。 wsl --export コマンドを使用して、ディストリビューション全体を tarball にエクスポートできます。 その後、wsl --import コマンドを使用してこのディストリビューションを WSL にインポートし直すことができます。これにより、インポート用の新しいドライブの場所に名前を付けて、WSL ディストリビューションをバックアップして状態を保存 (または移動) できます。

AppData フォルダーのファイルをバックアップする従来のバックアップ サービス (Windows バックアップなど) によって Linux ファイルが破損することはありません。

WSL 2

WSL 2 に Hyper-V は使用されていますか? Windows 10 Home では使用できるようになりますか?

WSL 2 は、WSL を使用できるすべてのデスクトップ SKU (Windows 10 Home を含む) 上で使用できます。

最新バージョンの WSL では、仮想化を有効にするために、Hyper-V アーキテクチャが使用されます。 このアーキテクチャは、"仮想マシン プラットフォーム" のオプション コンポーネントで使用できます。 このオプションのコンポーネントは、すべての SKU 上で使用できます。 WSL 2 は間もなくリリースされるため、このエクスペリエンスの詳細をすぐにご確認いただけます。

WSL 1 はどうなりますか? 廃止されますか?

現在、WSL 1 を廃止する予定はありません。 WSL 1 と WSL 2 のディストリビューションを並行して実行し、任意のディストリビューションをいつでもアップグレードおよびダウングレードできます。 WSL 2 を新しいアーキテクチャとして追加すると、WSL チームにとって、WSL を利用して Windows で Linux 環境を実行する機能を提供するための優れたプラットフォームになります。

WSL 2 と、VMware や VirtualBox などの他のサード パーティの仮想化ツールを実行できますか?

一部のサード パーティ アプリケーションは、Hyper-V が使用されている場合は機能しません。つまり、VMware や VirtualBox など、WSL 2 が有効な場合は実行できません。 しかし、VirtualBox と VMware の両方から、Hyper-v と WSL2 をサポートするバージョンが最近リリースされました。 VirtualBox の変更点についてはこちらから、VMware の変更点についてはこちらから、詳細を参照してください。 トラブルシューティングの問題については、GitHub の WSL リポジトリにある VirtualBox の問題に関するディスカッションをご覧ください。

Microsoft は、Hyper-V のサードパーティ統合をサポートするソリューションに一貫して取り組んでいます。 たとえば、Hypervisor Platform という一連の API を公開しています。サードパーティの仮想化プロバイダーはこれを使用してソフトウェアに Hyper-V との互換性を持たせることができます。 これにより、アプリケーションでは、Google Android Emulator や、Hyper-V と互換性のある VirtualBox 6 以降など、のエミュレーションに Hyper-V アーキテクチャを使用できます。

VirtualBox 6.1 に関する WSL 2 の問題の背景とディスカッションについては、WSL の問題のリポジトリを参照します。

*Windows 10 仮想マシンをお探しの場合は、VMWare、Hyper-V、VirtualBox、Parallels VM のダウンロードを Windows デベロッパー センターで利用できます。

WSL 2 の GPU にはアクセスできますか? ハードウェア サポートを強化する予定はありますか?

WSL 2 ディストリビューション内の GPU にアクセスするためのサポートがリリースされました。 これは、ビッグ データ セットが関係している場合に、機械学習、人工知能、データ サイエンスのシナリオで WSL をより簡単に使用できるようになったことを意味します。 GPU サポートの概要に関するチュートリアルをご確認ください。 現時点では、WSL 2 にはシリアル サポートや USB デバイス サポートは含まれていません。 Microsoft では、これらの機能を追加するための最適な方法を調査しています。

WSL 2 ではネットワーク アプリケーションを使用できるようになりますか?

はい。一般的にネットワーク アプリケーションにはシステム コールとの完全な互換性があるため、より高速に、より優れた機能で動作します。 ただし、新しいアーキテクチャには仮想化されたネットワーク コンポーネントが使用されます。 つまり、初期のプレビュー ビルドでは、WSL 2 は仮想マシンと同様に動作します。たとえば、WSL 2 には、ホスト コンピューターとは異なる IP アドレスが割り当てられます。 Microsoft では、WSL 2 のエクスペリエンスが WSL 1 と同じになるように取り組んでいます。これには、ネットワーク ストーリーの改善も含まれます。

仮想マシンで WSL 2 を実行できますか?

はい。 仮想マシンで入れ子になった仮想化が有効なことを確認する必要があります。 これを親 Hyper-V ホストで有効にするには、管理者特権を使用して PowerShell ウィンドウで次のコマンドを実行します。

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

"<VMName>" は、実際の仮想マシンの名前に置き換えてください。

WSL 2 で wsl.conf を使用できますか?

WSL 2 では、WSL 1 に使用されているものと同じ wsl.conf ファイルがサポートされています。 つまり、Windows ドライブの自動マウント、相互運用の有効化または無効化、Windows ドライブのマウント先ディレクトリの変更など、WSL 1 ディストリビューションで設定した構成オプションは、すべて WSL 2 内で機能します。 WSL の構成オプションの詳細については、ディストリビューションの管理に関するページを参照します。 ドライブ、ディスク、デバイス、または仮想ハード ディスク (VHD) のマウントに関するサポートの詳細については、WSL 2 での Linux ディスクのマウントに関する記事を参照します。

フィードバックはどこで提供できますか。

WSL 製品リポジトリのイシューを使用すると、次のことが行えます。

  • 既存のイシューを検索して、自分の問題に関連するものがあるかどうかを確認します。 検索バーで "is:open" を削除すると、既に解決されているイシューを検索に含めることができることに注意してください。 優先して進めて欲しいと思う未解決のイシューには、コメントを付けたり賛成したりすることをご検討ください。
  • 新しいイシューを報告します。 WSL で問題が見つかり、既存のイシューが存在していないようである場合は、緑色の [New issue]\(新しいイシュー\) ボタンを選択した後、 [WSL - Bug Report]\(WSL - バグ レポート\) を選択します。 イシューのタイトル、お使いの Windows のビルド番号 (現在のビルド # を確認するには cmd.exe /c ver を実行します)、WSL 1 と 2 のどちらを実行しているか、現在の Linux カーネル バージョン # (wsl.exe --status または cat /proc/version を実行)、ディストリビューションのバージョン # (lsb_release -r を実行)、関連するその他のソフトウェアのバージョン、再現手順、想定される動作、実際の動作、および診断ログを含める必要があります (使用可能かつ適切な場合)。 詳細については、WSL への投稿に関するページを参照してください。
  • 機能要求を報告します。それには、緑色の [New issue]\(新しいイシュー\) ボタンを選択してから、 [Feature request]\(機能要求\) を選択します。 いくつかの問題に対処して、要求を説明する必要があります。

次のこともできます。

WSL の最新ニュースを入手するには、以下をご利用ください。