WSL1と2を区別する方法
複数のディストリビューションでWSL1とWSL2を同時に使っているときなど、両者を区別したくなることがある。後述するようにWin32側では、wsl.exeコマンドでディストリビューションとWSLのバージョンを表示させることができるが、WSL内で区別できないと、たとえば、コンソールウィンドウのタイトルバーなどに表示ができない。
調べたところ、WSL2では「WSL_INTEROP」という環境変数が定義されているが、WSL1には定義されていないことがわかった。なので、この環境変数の定義を有無を調べることで、WSL1かWSL2を判別できる。とりあえず、.bashrcでコンソールウィンドウタイトルに表示するようにしてみた。
.bashrcの「case "$TERM" in」の前にWSL_VERにWSL1かWSL2を代入し、「case "$TERM" in」に続くPS1(プロンプトの設定)にWSL_VERを追加している。
ファイルシステムのext4と仮想HDDのVHDX
WSL2のLinuxでは、ファイルシステムにext4を使うが、これは、win32側では、VHDX(仮想HDDファイル)として実現されている。これは、Hyper-Vの機能の1つで、仮想環境側ではストレージデバイスのようにみえるが、ホストパーティション側ではNTFSのファイルになっている。
なお、調べたところ、ext4に対応するVHDXファイルは、「%LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx」にある。たとえば、Ubuntu-18.04では、ユーザーフォルダの下の
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
になる。
Ubuntu-18.04の場合、パッケージ名は「CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc」とハイフンが入らないという点に注意する必要がある。調べたところ、このプレビュー版では、ファイルサイズとしては1GB弱だが、最大256GBの容量を持つVHDXファイルだった。
なお、これが万一不足した場合には、DiskpartのExpandサブコマンドで拡大することができる。
wsl.exeコマンドも改良されている
WSL2の実装に伴い、wsl.exeコマンドも改良され、オプションが追加されている。主な改良点は、WSL1とWSL2の切り替えに関するものだが、WSLの実行をすべて停止する--shutdownオプションや、--Listオプションの拡張などもある。
まず、既存のWSL1ディストリビューションをWSL2に切り替えるには、--set-versionオプションを使い、
wsl.exe --set-version <ディストリビューション名> <バージョン番号>
とする。<ディストリビューション名>は、wsl.exe --listで表示でき、<バージョン番号>には「1」または「2」を指定する。なお、変換を行う際にはWSLを終了させるような場合には、「wsl.exe --shutdown」コマンドが利用できる。
また、新規にインストールするWSLディストリビューションをWSL2用とする場合には、以下のコマンドで、デフォルトのWSLバージョンを指定しておく。
wsl.exe --set-default-version <バージョン番号>
wsl.exe --listコマンドでは、-vオプションを付けると、それぞれのディストリビューションのWSLバージョンを表示できる。
この連載の記事
-
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 - この連載の一覧へ