Windows 10およびWindows 11上のLinux環境「WSL」をこれから始める読者のための、インストール方法やバックアップ方法をまとめて解説する。また、Windows 11上のWSLで新規サポートされた外部ドライブのマウント方法も合わせて紹介しよう。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「Windows 10」や「Windows 11」上でLinuxの実行環境を構築可能とする「Windows Subsystem for Linux(WSL)」が着々と更新されている。WSLは、Windows 10 Fall Creators Update(バージョン1709)から正式版が利用可能となり、その後、May 2020 Update(バージョン2004)では、Linuxとの互換性を高めた「WSL 2」が提供された(WSL 2については、Windows 10 The Latest「前バージョンから大幅に性能向上した新Linux環境『WSL 2』の実力を探る」を参照のこと)。
当初は、Windows 10の[コントロールパネル]で、[プログラムと機能]画面の[Windowsの機能の有効化または無効化]を実行してLinux用サブシステムのインストールを行い、その後、LinuxディストリビューションをMicrosoft Storeからインストールするといった少々面倒な手順が必要であった。
Windows 10 May 2020 Update(バージョン2004)からは、Linux用サブシステムやLinuxディストリビューションがコマンドラインでインストール可能になり、インストールが容易になっている。
そこで本稿では、これからWSLを始める読者のための、WSLのインストールからバックアップ方法などをまとめて解説する。
WSLとは、Windows OS上で実行されるLinux環境のことである。ここでは、Windows OSに搭載されたWSL技術全般を指す用語として使う。以下ではWSLにまつわる基礎的な事柄を簡単に説明する。
WSLには実装方式によって、最初にリリースされたバージョン(ここでは区別のため「WSL 1」とする)と、その改良版である「WSL 2」に大別できる。WSL 2はLinuxカーネルと仮想マシンを使う方式で、WSL 1に比べ、Linuxとしての互換性が高くなっている。例えば、WSL 1ではDockerが動作しなかったが、WSL 2ではLinuxネイティブ版のDockerがそのまま動作できるようになっている。
WSL 2は、専用の仮想マシンの上で動作し、利用にあたっては、PCに仮想マシン支援機能があり、BIOSなどで有効化されている必要がある。ただし、その手順はPCの機種によって異なるため、ここでは解説しない。PCのマニュアルなどを参照してほしい。
この専用仮想マシンをMicrosoftは、「軽量ユーティリティーVM」と呼んでいる。これは、Windows OSでサポートする仮想マシン環境「Hyper-V」とは異なるもので、Hyper-Vとは異なり、Windows 10/11のHomeエディションでも動作できる。
WSL 1とWSL 2の利用上の相違点については、この後に説明する。
このWSLで利用するLinuxディストリビューションを特に「WSLディストリビューション」と表記する。基本的にWSLディストリビューションは、Linuxのディストリビューションと同じだが、WSL 1/WSL 2内で動作させるためにカスタマイズされており、Microsoft Store経由で配布される。
WSLディストリビューションは、それぞれ固有の「ディストリビューション名」を持つ。これは、WSLで複数のディストリビューションを扱うためのものだ。このディストリビューション名は、Microsoft Storeで配布されているWSLディストリビューションの名前に近いものになっているが、全く同じではない。
コマンドライン中で引数として設定しやすいように空白が入らないようにし、かつ比較的短い記述ができるようにしてある。例えば、Microsoft Storeにある「Ubuntu 18.04 LTS」には、「Ubuntu-18.04」というディストリビューション名が付けられている。
WSLを利用する場合、その内部のLinux環境を「WSL」「WSL側」、WSLの外になるWindows OS環境を「Win32」や「Win32側」と表記されることが多い。例えば、WSL内からWindows OSのコマンドを起動する機能は「Win32相互運用性」と呼ばれている。
ここでは、この表記に従い、必要に応じて、2つの環境を呼び分ける。この場合、Win32側のコマンドであることを明確にするため、「cmd.exe」などと必ず実行ファイル名を拡張子まで指定する。Windows OS側にも、「curl.exe」といったLinux由来のコマンドがあり、WSL側で単に「curl」とするとLinux側のcurlコマンドが実行されてしまうからだ。これを「curl.exe」とすれば、Win32側の同名のコマンドが実行される。
なお、後述するようにWin32側のコマンドを実行ファイル名だけで起動するためには、PATH環境変数の設定が必要になる。標準では、Win32側のPATH環境変数に設定されているパスが全てWSL側にコピーされるため、Win32側と同じようにコマンドが実行できる(PATH環境変数の設定方法については、Tech TIPS「【Windows 11対応】Path環境変数を設定/編集して、独自のコマンドを実行可能にする」参照のこと)。
WSLの挙動などに関しては、Win32側にある「%userprofile%\.wslconfig」ファイルと、WSL側にある「/etc/wsl.conf」を使う。また、WSL自体やWSLディストリビューションのインストールは、「wsl.exe」というコマンドで行う。
環境設定の問題もあるため、ここでは全てのコマンドをWindows Terminalで行う前提で説明する。他の端末エミュレーターなどを利用している場合には、その設定に注意してほしい。
ここではWSLディストリビューションとして、Ubuntu-18.04を使っている。他のディストリビューションでは、WSL側のコマンドなどに一部違いが出る可能性がある。その場合にはインストールしているWSLディストリビューションに合わせて適宜読み替えていただきたい。
Linuxでは、基本的に大文字/小文字が区別される点にも注意してほしい。文中に示す実行例などで、オプションの大文字/小文字による挙動の違いなどが起きるため、WSL側では、大文字/小文字を正確に入力する必要がある。
現在のWindows 10/11では、WSLディストリビューションを「WSL 1」または「WSL 2」として設定できる。インストールなどは同一で、後からWSL 1とWSL 2を変換することも可能だ。
基本的には、WSL 2の方が対応できるソフトウェアも多く、より本物のLinuxに近い。だが、WSL 1には、Win32側のファイルアクセスが高速であること、Win32側と同じIPアドレスを利用するというメリットがある。また、仮想マシンを使わない関係もあり、メモリ割り当てに柔軟性があり、システム負荷も低い。
そのため、現在でも利用方法によっては、あえてWSL 1を選択するメリットもある。あまり本格的に使わず、まずはLinuxを学んでみたい程度のことであれば、リソース割り当てなどに柔軟性のあるWSL 1を選択してもよい。
あるいはコマンドラインで、Linuxのbashを主に使いたいといったcmd.exeやPowerShellの代用程度ならば、必ずしもWSL 2にする理由がない。また、タブレットや古いハードウェアなど、システム性能に余裕がない場合にもWSL 1を選択した方がよい場合が多い。
逆に、コンテナソフトウェアや、Linux GUIアプリ(Windows 11のみ対応)をどうしても使いたいというのであれば、WSL 2を選択する必要がある。なお、現在のWSLでは、ディストリビューションインストール時の標準バージョンは「2」となっており、特に指定しなければ、WSL 2が選択される。これは、以下のコマンドで変更することができる。
wsl.exe --set-default-version <バージョン>
標準は「2」なので、<バージョン>に「1」を指定すれば、以後、インストールされるWSLディストリビューションは全てWSL 1としてインストールされる。
Windows 10 May 2020 Update(バージョン2004)から、WSL 2の設定は「wsl.exe」コマンドの「--install」オプションを利用して行えるようになった。このため、基本的には、従来のPowerShellコマンドや[コントロールパネル]を使う方法はもう必要ない(Windows 10 November 2019 UpdateのEnterprise/Educationエディションを除く)。インストールは以下のコマンドで行う。
まず、インストール可能なWSLディストリビューション名を以下のコマンドで確認する。好みや用途に合わせて、WSLディストリビューションを選択すればよい。
wsl.exe -l --online
次にWSLのインストールと同時にWSLディストリビューションのインストールを実行する。「-d」オプションでWSLディストリビューションを指定しない場合、「Ubuntu」が自動的にインストールされることになる。何をインストールしたのかを明確にするためにも、WSLのインストール時にWSLディストリビューションを指定した方がよいだろう。
wsl.exe --install [-d <WSLディストリビューション名>]
上記のコマンドを入力し、WSLのインストールが完了したら、システムの再起動を行うこと。再起動後、自動的に指定したWSLディストリビューションのインストールが開始される。
WSLディストリビューションは、Microsoft Storeアプリで「Linux」や「WSL」で検索してインストールすることも可能だ。
下表にMicrosoft Storeから入手可能なWSLディストリビューションを示す。これらは個人利用の場合には、無料で利用が可能なものだ。詳しいライセンス条件などは、Microsoft Storeの各情報ページで確認してほしい。
WSLでの名称 | バージョン | 標準シェル | パッケージ管理 | man | --online | |
---|---|---|---|---|---|---|
Alpine Linux | Alpine | 3.13.4 | /bin/ash | apk | オプション | × |
Debian GNU/Linux | Debian | 11 | /bin/bash | apt/dpkg | オプション | ○ |
Kali Linux | kali-linux | 2021.3 | /bin/bash | apt/dpkg | オプション | ○ |
openSUSE Leap 42 | openSUSE-42 | 15.2 | /bin/bash | zypper,yast/rpm | オプション | ○ |
Ubuntu | Ubuntu | 20.04 | /bin/bash | apt/dpkg | 導入済み | ○ |
Ubuntu 16.04 LTS | Ubuntu-16.04 | 16.04 | /bin/bash | apt/dpkg | 導入済み | ○ |
Ubuntu 18.04 LTS | Ubuntu-18.04 | 18.04 | /bin/bash | apt/dpkg | 導入済み | ○ |
Ubuntu 20.04 LTS | Ubuntu-20.04 | 20.04 | /bin/bash | apt/dpkg | 導入済み | ○ |
Microsoft Storeから入手可能な主なWSLディストリビューション |
WSLディストリビューションのインストールが行われるとき、Linuxのユーザー名とパスワードを指定する必要がある。WSLディストリビューションによって細かな違いがあるので注意してほしい(Linuxとして厳密な定義があるわけではなく、「adduser」などのディストリビューションが採用するユーザー追加プログラムの仕様に従う)。
大まかなところでは、ユーザー名に利用できる文字は、半角アルファベット(ASCII文字)小文字と数字、「_(アンダーバー)」と「-(ハイフン)」である。ユーザー名の先頭は、「_(アンダーバー)」にすることは可能だが、数字や「-(ハイフン)」にすることはできない。Windows OS側と一致させる必要はなく、適当にユーザー名を決めてよい。
ただし、初期状態で登録してあるユーザー名(root/bin/sysなど)は、使うことができない。確認するには、Linuxを起動して「/etc/passwd」ファイルを確認するしかない。初期設定では、WSLディストリビューションとして許可できないユーザー名は、指定してもエラーになるので、エラーになったらユーザー名を変更して改めて登録を行えばよい。
また、WSLの場合、ログインは不要なため、パスワードは管理者権限でコマンドを実行するための「sudo」コマンドなどで必要になるだけだ。このため、セキュリティを強く考える必要はなく、打ちやすいものにしておいて構わない。WSLディストリビューションのインストールでは、ユーザー名に続いて、パスワードを2回入力すれば、処理は完了する。
WSLディストリビューションのインストールが完了したら、初期設定などを行う。そのためには、まず、[スタート]メニューでWSLディストリビューション名を選択するか、以下のコマンドを実行することでWSLディストリビューションを起動する。
wsl.exe -d <WSLディストリビューション名>
終了時には、必ずコマンドラインなどから「exit」コマンドを使って抜けるようにすること。WSL自体がLinuxというOSを実行しており、WSLを実行中のコンソールウィンドウを閉じたり、wsl.exeの「--terminate」や「--shutdown」オプションで実行中のWSLを終了させたりすることは、Windows OSでいえば、いきなりコンセントを抜いて電源を切ることに相当するからだ。
bashは、コマンドの実行履歴をファイルに記録しているなど、さまざまな処理をログアウト時に行うため、WSLのコマンドラインからは、正しい方法でログアウトしてからWSLを終了させることは心掛けた方がよい。Windows OSで簡易に起動できるとはいえ、WSLの中で動いているのはLinuxという普通のオペレーティングシステムであることは理解しておく必要がある。
Copyright© Digital Advantage Corp. All Rights Reserved.