GNU/Linux >> Linux の 問題 >  >> Linux

Linux 用 Windows サブシステムの究極のガイド (Windows WSL)

Linux または Windows WSL 用の Windows サブシステムは、開発者が Windows 10 バージョンのデスクトップ上で Linux 内でネイティブに作業するための優れたソリューションです。

ハード ドライブのパーティション分割に多くの時間を費やして Windows を複数の Linux システムにインストールしたことがある場合は、この記事を読んでよかったと思います。

Microsoft の妖精のコード マザーは、別のオプションを提供することにしました。それは、Windows Subsystem for Linux (WSL) です。 WSL により、Windows と並行して Linux システムを実行することが非常に簡単になり、柔軟性が向上します。

このチュートリアルでは、WSL の使用を開始する方法を学習します。 bash や PowerShell を単独で使用するよりも、WSL をさらに用途の広いものにするいくつかの気の利いたツールを使用する方法を学び始める方法を学びます。

WSL とは

WSL または C:\Windows\System32\wsl.exe は、Windows ストアから Linux ディストリビューションをアプリとしてインストールできる Windows ツールです。

WSL は単純な Windows 実行可能ファイルであるため、コマンド プロンプトまたは PowerShell ターミナルから呼び出すことができます。このトピックについては後で詳しく説明します。今のところ、WSL が内部で何をしているのかをもう少し理解することが重要です。

WSL を有効にする方法

WSL をセットアップして有効にするには、Windows 10 と共に Linux ディストリビューションをインストールする必要があります。ただし、2 つの異なるオペレーティング システムが相互に対話できるようにする必要があります。

前提条件

Active Directory であまりにも多くのパスワード リセット リクエストに悩まされている IT プロフェッショナルの方は、安全な SSPR ソリューションである Specops uReset をチェックしてください。

Windows に WSL をインストールするには、満たすべき要件が 1 つあります。ビルド 18917 以降の Windows 10 64 ビット コンピュータが必要です。

winver ユーティリティを実行すると、Windows 10 ビルドを見つけることができます。

WSL Windows 機能の有効化

WSL を有効にするのは簡単です。ダウンロードは不要です。これは単なる Windows の機能です。

WSL を有効にするには、管理者として PowerShell を開き、次を実行します。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 

関連:PowerShell を管理者として実行する方法

完了したら、コンピューターを再起動すれば完了です!

WSL 用の Linux ディストリビューションのダウンロード

WSL は、独自の Linux ディストリビューションをインストールしません。いずれかをインストールする必要があります。 Windows 10 が再起動したら、選択した Linux ディストリビューションのセットアップを開始します。

まず、Microsoft Store を開き、「WSL」を検索します。すぐに Linux ディストリビューションのリストが表示されるはずです。

次に、選択したディストリビューションを選択してインストールします。このチュートリアルでは、Ubuntu 18.04 を使用します。この記事の執筆時点では、次のような他のいくつかのディストリビューションも利用できます。

  • Ubuntu 16.04 LTS
  • Ubuntu 18.04 LTS
  • OpenSUSE Leap 15
  • OpenSUSE Leap 42
  • SUSE Linux Enterprise Server 12
  • SUSE Linux Enterprise Server 15
  • カリ Linux
  • Debian GNU/Linux
  • WSL の Fedora リミックス
  • ペンウィン
  • アルパイン WSL

WSL バージョンの設定

Linux で WSL バージョン 2 を使用できるようにする必要がある場合があります。その場合は、以下の手順に従ってください。

PowerShell コンソールで:

<オール>
  • wsl -l を実行して、インストールした Linux のバージョンを一覧表示します または wsl --list .
  • リストを取得したら、WSL2 で実行するディストリビューションの名前をコピーして、wsl --set-version 2 を実行します。 を先ほどコピーした名前に置き換えます。
  • wsl -l -v を実行して、コマンドが成功したことを確認します または wsl --list --verbose .このコマンドは、WSL ディストリビューションの完全なリストと、各ディストリビューションが使用しているバージョンを返します。
  • wsl --set-default-version 2 を実行して、今後インストールするディストリビューションのデフォルトの WSL バージョンを WSL2 に設定することもできます

    WSL の起動

    WSL の使用を開始するには、PowerShell ターミナルを開いて wsl と入力します。 . WSL を正しくセットアップしたら、選択した WSL ディストリビューションで実行されている bash ターミナルに入ります。ここから、任意の Linux コマンドを実行できます。

    以下に、wsl.exe のすべてのオプションへの参照があります。

    コマンド 説明
    exec, -e デフォルトのシェルを使わずにコマンドを実行します wsl -e curl google.com
    このパラメータの後にあるものをデフォルト シェルに渡します。演算子を省略しても機能します。 wsl — curl google.com、wsl curl google.com
    ディストリビューション、-d <ディストリビューション> 指定されたディストリビューションのシェルでターミナルを開きます wsl -d Ubuntu-18.04
    ユーザー、-u <ユーザー名> そのディストリビューションにユーザーが存在する限り、指定されたユーザーとして WSL コマンドを実行します wsl -d Ubuntu-18.04 -u tux_user
    エクスポート <ディストリビューション> <ファイル名> 指定されたディストリビューションをローカル システムの tar ファイルにエクスポートします。 wsl –export Ubuntu ./Test-Ubuntu.tar
    インポート <ディストリビューション> <インストール場所> <ファイル名> [–バージョン] tar ファイルを新しい WSL ディストリビューションとしてインポートします。 –version オプションで WSL のバージョンを指定できる wsl –import Test-Ubuntu C:\data\Test-Ubuntu .\Test-Ubuntu.tar
    list, -l [オプション] wsl –list
    すべて インストールされているすべての WSL ディストリビューションを一覧表示する wsl -l –all
    実行中 現在実行中の WSL ディストリビューションのみをリストする wsl -l –実行中
    静か、-q WSL ディストリビューション名のみを表示 wsl -l -q
    冗長、-v すべての WSL ディストリビューションに関する詳細情報を表示 wsl -l -v
    set-default, -s <ディストリビューション> 指定された WSL ディストリビューションを WSL コマンドの既定のディストリビューションとして設定します。 wsl -s Test-Ubuntu
    set-default-version そのシステムにインストールされたすべての新しいディストリビューションのデフォルトの WSL バージョンを変更します wsl –set-default-version 2
    set-version <ディストリビューション> <バージョン> 指定されたディストリビューションの WSL バージョンを変更します wsl –set-version Test-Ubuntu 2
    シャットダウン 実行中のすべての WSL ディストリビューションを直ちに終了します wsl –シャットダウン
    終了、-t <ディストリビューション> 指定された WSL ディストリビューションを終了します wsl -t Test-Ubuntu
    <ディストリビューション> の登録を解除します 指定された WSL ディストリビューションの登録を解除します wsl –Test-Ubuntu の登録を解除
    ヘルプ WSL の使用に関する情報を表示する wsl –help

    これらのスイッチの使用に慣れると、Linux 仮想マシンを自分で管理するよりも、WSL を介してアプリケーションを実行および管理する方がはるかに簡単であることがわかります。

    簡単なヒント:wsl --help を実行して、WSL のすべてのフラグと引数を検出します .

    終了したら、exit と入力します PowerShell ターミナルに戻ります。

    WSL による Windows/Linux リソースの共有

    WSL の優れた点の 1 つは、Windows と Linux のリソースを相互にシームレスに共有できることです。現時点では、ファイル システム、環境変数、ネットワーク リソース、cmd や PowerShell などのコマンドライン ツールを共有できます。

    このセクションで表示されるすべての例は、WSL Ubuntu Linux ディストリビューション経由のものです。別のディストリビューションをダウンロードすることを選択した場合、マイレージは異なる場合があります。

    ファイル システムの共有

    ファイル システムは、WSL と共有すると最も便利なものの 1 つです。 WSL を使用すると、両方のファイル システムを 1 つのファイル システムであるかのように操作できます。

    Windows 10 ファイル システムは Linux のディレクトリとしてマウントされますが、Linux ファイル システムは Windows のフォルダーとしてマウントされます。

    環境変数を使用して Windows から Linux ファイル システムを見つける

    WSL を使用して Linux ディストリビューションをインストールすると、Windows 環境変数が追加されることがあります。 WSL Ubuntu Linux ディストリビューションの場合、UBUNTU_HOME という環境変数が作成されます。 この環境変数は Linux /home/ubuntu を指します Windows と WSL Ubuntu の両方のディレクトリ。

    UBUNTU_HOME で定義されたパス それら全体でリソースを使用するスクリプトを実行したり、Windows ターミナルのデフォルトの場所を設定したりするために使用できます (後で説明します)。

    他のディストリビューションでは、同様の環境変数が定義されている場合があります。 PowerShell コマンド Get-ChildItem -Path $Env:\ を使用して Windows 環境変数を調べます 新しい Linux ディストリビューションをインストールした後、追加されている可能性があるかどうかを確認してください。

    この環境変数のショートカットは、すべてを /home/ubuntu に置きたい場合に便利です ディレクトリ。しかし、どのようにしてそこにたどり着いたのか、そして他にどのように到達できるのかをもう少し掘り下げてみましょう.

    Microsoft Store パッケージ フォルダー経由で Wi​​ndows から Linux ファイル システムを見つける

    すべての WSL ディストリビューションに、簡単に参照できる方法が保証されているわけではありません。別の方法で Linux ファイル システムを見つける方法を学ぶことが重要です。

    ほとんどの WSL Linux ディストリビューションは Microsoft ストアからインストールされるため、他の Windows ストア アプリと同じ場所で Linux ファイル システムを探すことができます。 %USERPROFILE%\AppData\Local\Packages\ に移動します をクリックして、Windows ストア アプリのディレクトリを見つけます。次に、フォルダは通常デフォルトで保護されているため、フォルダの制御を引き受けます。

    Linux ディストリビューション ファイル システムが表示されるパッケージ フォルダーには、多くのサブフォルダーが表示されます。たとえば、WSL Ubuntu ディストリビューションは CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc の下にありました

    パッケージ フォルダーに移動すると、Linux ファイル システムが見つかります。 WSL Ubuntu の場合、LocalState\rootfs にあります。 フォルダ. これは Linux ディストリビューションのルート ディレクトリです。

    Linux から Windows ファイル システムを見つける

    Linux から Windows 10 ファイル システムを見つけるには、Windows で WSL を開きます。その後、WSL は bash ターミナルを起動します。この bash ターミナルは UBUNTU_HOME で起動します

    Windows ストレージ ボリュームのルートも検索できます。各 Windows レター ドライブ (C、D、E など) は、WSL Linux ファイル システムからマウントされたドライブとして扱われます。各ボリュームが /mnt/c としてマウントされていることがわかります , /mnt/d 、ルート権限を持っている限り。

    WSL2 ファイルシステム

    WSL ファイル システムの操作は非常に簡単です。 Linux ファイル システム構造に精通していない人は、Windows エクスプローラーでナビゲートできることを高く評価します。ただし、WSL2 に切り替えたい場合は、もう少し複雑になります。

    WSL2 は、ファイル システムを共有するために内部ですべてが機能する方法を変更します。まず、ファイルシステムが vhdx の仮想ハードディスクになりました ディレクトリの代わりにフォーマットします。

    vhdx を見つけることができます %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState の下のファイル WSL Ubuntu ディストリビューションの場合。

    ディスク マネージャーを使用して、VHDX ファイルを Windows にマウントできることがわかります。 道具。ただし、WSL ディストリビューションが登録されている間は仮想ディスクをマウントできません。

    環境変数の共有

    環境変数は、あらゆるオペレーティング システムの重要な部分であり、アプリケーション内のどこからでもバイナリと実行可能ファイルを簡単に参照できます。

    Windows 10 ビルド 17063 より前では、Windows 10 と WSL Linux の間で共有される唯一の環境変数は PATH でした 変数。それ以来、WSLENV を使用して環境変数を共有できます。 環境変数

    WSLENV の使用 他の環境変数を共有するための環境変数は、少しメタを感じることができます。プラットフォーム間で環境変数を共有するには、実際には別の環境変数内に環境変数を設定する必要があります。

    概要

    環境変数の共有は、以下の 3 ステップのプロセスです。 Windows/Linux 間で共有する場合の唯一の大きな違いは、使用されるスイッチ引数です (以下の完全なリファレンス)。

    <オール>
  • Windows または Linux で環境変数を定義する
  • WSLENV を設定します 以前に定義された環境変数に等しい環境変数と、それに続くスイッチ引数 (パス変換用)。
  • Windows または Linux で環境変数を読み取る
  • 共有オプション

    スイッチを使用して環境変数を表示するプラットフォームに応じて、4 つの異なる方法で変数を使用可能にすることができます (以下の表を参照)。

    • Windows ファイルシステムはそれ自体からのみ利用可能
    • WSLファイルシステムはWSLからのみ利用可能
    • WSL Linux と Windows の両方で利用できる WSL ファイルシステム
    • WSL Linux と Windows の両方で利用できる Windows ファイルシステム
    フラグ 説明
    /p 単一パス。これで設定された変数は、Windows と WSL Linux の間で変換され、両方で使用できるようになります。
    /l パスのリスト。 /p に類似 ただし、複数のパスを受け入れることができます。 Windows では、このリストはセミコロンで区切られますが、WSL Linux ではコロンで区切られます。
    /u Unix パス。このフラグで設定されたパスは、Windows から WSL Linux を呼び出す場合にのみアクセスできます。 /p のいずれかで使用できます または /l フラグ
    /週 Windows パス。このフラグで設定されたパスは、WSL Linux から Windows を呼び出す場合にのみアクセスできます。 /p のいずれかで使用できます または /l フラグ

    パス変換

    環境変数を共有する主な理由は、パスの変換です。ご存じかもしれませんが、Windows にはユーザー プロファイル フォルダーがあり、Linux にはユーザー プロファイル ディレクトリがあります。各ユーザーには、C:\Users\ のような事前定義された「ホーム フォルダー」があります。 Windows および /home/ の場合

    /p の使用 と /l スイッチを使用すると、WSL はこれらのフォルダー パスをプラットフォーム間で変換します。

    Linux との Windows パスの共有と翻訳

    /p を使用して、単一のパスまたは複数のパスを一度に共有できます と /l

    Windows コマンド プロンプトで、DESKTOP という名前の Windows 環境変数が定義されている場合 、値 DESKTOP/p を割り当てます WSLENV に 変数。これにより、WSL Linux からアクセスできるようになります。以下に例を示します。

    /l を使用して、複数のパスに対してまったく同じ手順を一度に実行できます。 切り替えます。

    Windows との Linux パスの共有と翻訳

    Linux パスを Windows と共有して変換するには、Linux 固有のコマンドを使用して環境変数を設定しますが、Windows と同じ手順です。

    環境変数の共有について詳しくは、この Microsoft の記事をご覧ください。

    ネットワーク リソースの共有

    ネットワーク コンポーネントは、Windows と WSL Linux の間で共有できるもう 1 つの便利なリソースです。

    物理ネットワーク インターフェイスと仮想ネットワーク インターフェイス

    WSL2 では、ネットワーク インターフェイスが仮想化されます。仮想化されたネットワーク インターフェイスは、WSL2 ネットワーク インスタンスが Windows 10 の対応するものとは異なる IP 構成を保持できることを意味します。

    この記事の執筆時点では、WSL2 Linux の IP アドレスは Network Address Translation (NAT) を使用して Windows 上のネットワーク リソースにアクセスしますが、Microsoft は、NAT の削除は未解決の問題の修正が多いと述べています。

    クライアントの DNS 解決

    WSL は引き続き /etc/resolv.conf を生成します および /etc/hosts DNS 解決を許可するファイル。 /etc/wsl.conf でその動作を明示的にオーバーライドしない限り 、クライアントの DNS 解決は引き続き期待どおりに機能します。

    wsl.conf について詳しく学びます 投稿の後半でファイルしてください。

    PowerShell と Bash を併用する

    WSL の最も優れた機能の 1 つは、WSL 上の PowerShell および Bash との間でシームレスに情報をやり取りできることです。

    PowerShell –> バッシュ

    WSL 実行可能ファイルはパイプラインからの入力を受け入れるため、wsl.exe を呼び出すことができます。 PowerShell 内でコマンドを実行し、stdin を受け入れます。これにより、WSL を使用して、オブジェクト全体を PowerShell から WSL に渡し、bash ターミナルで処理することができます。以下に例を示します。

    Bash –> PowerShell/Cmd

    また、WSL の bash から PowerShell および cmd に情報を簡単に渡すこともできます。以下に、Linux の ls を実行する例を示します。 コマンドを実行し、出力を PowerShell Select-Object に渡します パイプライン経由のコマンドレット。

    両方のコマンドがシステム パスにある限り、WSL からいくつかの Windows cmd ユーティリティを呼び出して、出力を Linux に戻すこともできます。

    WSL はデフォルトで Windows PATH 変数にアクセスできるため、WSL は両側のシステム パスを認識していることに注意してください

    以下では、ipconfig を実行できることがわかります。 これは Windows コマンドであり、WSL 内からその出力を Linux grep に渡します。 指図。 Linux コマンド which を呼び出すのとは反対のこともできます。 出力を Windows ipconfig に渡します コマンド。

    翻訳の問題

    コマンド出力を bash と PowerShell の間でやり取りするには、いくつかの注意事項があります。

    大きな問題の 1 つは、PowerShell と bash が情報を返す方法です。 PowerShell はオブジェクト指向プログラミング言語であり、bash は文字列操作ツールです。 bash にパイプされたすべての PowerShell オブジェクトは、文字列としてフラット化されます。逆に、PowerShell にパイプされた bash 出力は、文字列オブジェクトに変換されます。

    以下の例のように、PowerShell でオブジェクト型を変換または明示的にキャストすることで、動作をある程度回避できます。ただし、PowerShell と WSL の間で追加の作業を行わずにオブジェクトを渡すことを期待している場合は、がっかりするでしょう。

    bash の日付を [datetime] としてキャストする クラスを PowerShell で作成すると、スクリプトで使用できる有効な PowerShell オブジェクトが作成されました。 Windows から WSL に移動し、再び WSL に戻る必要があるスクリプトを作成している場合は、コードを少し変更するだけで済みます。

    Xfce4 を使用して Linux GUI 用の Windows サブシステムをインストールする

    コマンドライン ツールでは不十分な場合は、GUI を分解するときです。 WSL でグラフィカル ユーティリティを実行する必要がある場合、カスタム ディストリビューションを探索する場合、または bash にまだ慣れていない場合は、Linux GUI をインストールできます。

    Xfce

    Linux には、利用可能なデスクトップ環境が多数あります。 WSL 用にセットアップする最も一般的なものの 1 つは、Xfce と呼ばれます。この記事の執筆時点では、Xfce はバージョン 4 です。他のデスクトップ環境も利用できますが、この記事では、Xfce4 をセットアップする方法を学びます。

    xRDP

    Linux デスクトップ環境をセットアップしたら、RDP プロトコルを理解するサービスが必要になります。この記事では、xRDP サーバーに焦点を当てます。 xRDP は Linux 用のオープン ソース RDP サーバーであり、RDP クライアントを使用して、Windows ホストと同様に Linux に接続できます。

    セットアップ

    Xfce4 および xRDP を使用して Windows から Linux GUI にアクセスするには、次の手順に従います。 WSL ターミナルで:

    <オール>
  • Xfce4 をダウンロードしてインストールする – コマンド sudo apt-get -y install xfce4 && sudo apt-get -y install xubuntu-desktop を使用して Xfce4 をダウンロードしてインストールします .これにはしばらく時間がかかります。待機してください。
  • xRDP サーバーをインストールする – sudo apt-get -y install xrdp を実行して xRDP をダウンロードしてインストールします .
  • xfce4 用に xRDP を構成する – echo xfce4-session > ~/.xsession
  • xRDP を再起動sudo service xrdp restart
  • WSL ディストリビューションの IP アドレスを見つけるifconfig | grep inet
  • この時点で、Windows 10 から RDP セッションを開くことができるはずです。mstsc を使用してリモート デスクトップ接続ウィンドウを開きます。 ステップ 5 で見つけた Linux の IP アドレスを指定します。

    すべてがうまくいけば、以下に示すように、Windows オペレーティング システムで実行されている Linux ディストリビューションへの RDP 接続を開くことができます。

    ヒントとコツ

    WSL の基本とその使用方法を理解したところで、次は何をすればよいのでしょうか?幸いなことに、WSL 用に作成された、または WSL でうまく動作するツールがたくさんあります。

    wsl.conf を使用した起動時の WSL 構成項目の設定

    構成ファイルは、/etc/wsl.conf の WSL にあります。 このファイルには、WSL ディストリビューションが開始されるたびに実行される構成設定が含まれています。 wsl.conf ファイルが存在します, Linux ディストリビューションが起動されるたびに、WSL はこのファイル内のすべての設定を取り込みます。

    wsl.conf 内にはいくつかの異なるセクションがあります

    • 自動マウント – 開始時に Windows からドライブをマウントする
    • ネットワークresolv.conf を生成します またはホスト ファイル
    • 相互運用 – Windows との相互運用の有効化または無効化

    wsl.conf の詳細については、 ファイル, Microsoft WSL 起動設定の設定を確認してください ページ。

    Visual Studio Code (VS Code) を使用した WSL での開発

    VS Code はあらゆるものと統合されているように見えますが、WSL も例外ではありません。 VS Code 内から、WSL ディストリビューションにワークスペースを設定できますが、Windows の VS Code で完全に操作できます。ターミナルを実行する必要さえありません!

    Windows で VS Code をセットアップして WSL と連携させるには、当然、最初に VS Code for Windows をインストールする必要があります。また、Remote – WSL があることを確認してください VS Code 拡張機能がインストールされました。

    拡張機能をインストールしたら、WSL ターミナルを開いて code を実行することで接続できます。 . VS Code を実行するディレクトリです。 VS Code は、WSL ディストリビューションにいることを検出し、ウィンドウを開き、ワークスペースへの接続を確立します。

    VS Code の左下隅にある WSL 接続アイコンに注目して、動作していることを確認します。 WSL ディストリビューションの名前が表示されます。

    組み込みターミナルを使用して、WSL ワークスペースを直接操作することもできます。 git bash コマンド用に別のウィンドウを実行する必要はありません。

    Linux 用 Windows サブシステムを Windows ターミナルに追加する

    WSL のもう 1 つの便利な使用例は、WSL コンソールを Windows ターミナルに追加することです。

    Windows ターミナル内から、各 WSL ディストリビューションを独自のタブに追加します。迷子にならないように、各タブの外観をカスタマイズすることもできます。

    UBUNTU_HOME のようなユーザー ディレクトリの環境変数を設定する WSL ディストリビューションを使用している場合 、それを端末の開始ディレクトリとして設定することもできます。

    Windows ターミナルで動作するように WSL をセットアップするための完全なビデオ ウォークスルーが必要な場合は、以下の TechSnips ハウツー ビデオをご覧ください。

    最終的な考え

    Active Directory であまりにも多くのパスワード リセット リクエストに悩まされている IT プロフェッショナルの方は、安全な SSPR ソリューションである Specops uReset をチェックしてください。

    Microsoft は、Linux 開発者が Windows 上で開発できるようにするために WSL をリリースしました。これまでのところ、WSL は正しい方向への一歩です。

    WSL は、Microsoft の新しいオープンソース フレンドリー戦略の重要な要素になるようです。開発者がコードを書くためのデバイスとして、Microsoft が Apple に対抗しようとしている場合、それは困難な戦いになるでしょう。しかし、WSL は強力なカードです。

    WSL は、次のような多くの歓迎すべき利点を開発者にもたらします。

    • ローカルの Linux VM を実行するよりも大幅に軽量
    • ハイパーバイザーのインストールと管理のオーバーヘッドを取り除く
    • 複数のパーティションに分割されたハード ドライブはもう必要ありません
    • 複雑な grub ブートローダーは不要

    WSL は電源を入れて実行するだけなので、その後も楽しくコーディングできます。


    Linux
    1. 初心者向けのLinuxターミナルガイド

    2. Sublime Text から Windows Subsystem for Linux (WSL) を使用する

    3. Windows Subsystem for Linux での Windows 共有のマウント

    1. Linux用のWindowsサブシステムの説明、WSLおよびWSL2

    2. Windows App Store の Kali Linux

    3. Linux 用 Windows サブシステムの Kali

    1. Linux用のWindowsサブシステムを使用してUbuntuを実行する方法

    2. Linux サブシステムのファイルシステムは Windows 10 のどこにありますか?

    3. Linux 用 Windows サブシステムで X マウス ポインターのサイズを設定する方法