現在、Windows Subsystem for Linux(WSL)のVer.2.4.4が、プレビュー版として公開中だ。このバージョンから、tar形式によるWSLディストリビューションの配布が開始される。また、ブログなどによれば、RedHat公式のWSLディストリビューションが準備中だという。今回は、このプレビュー版WSLについて解説する。
まず、このバージョンはプレビュー版のため、以下のコマンドを使って、導入する(WSLが導入済みの場合)。
wsl.exe --update --pre-release
アップデート後に「wsl.exe --version」コマンドを使ってバージョンを確認。「WSL バージョン: 2.4.4.0」という表記があれば、アップデートは成功している。
WSL Ver.2.4.4における新機能
tarベースのパッケージによる導入が可能に
WSL Ver.2.4.4には、「WSLにようこそ」ウィンドウが、「Linux用Windowsサブシステム設定」に追加された。
特に何か役に立つものではないが、WSLの新規ユーザーに、WSLの特徴を伝えるのには役立つと思う。もう少し発展させて、PowerToysの「PowerToysへようこそ」のように、リリースノートを兼ねるといいのだが。
もう1つの改良点は、WSLディストリビューションの新しい配布方法である。これを仮に「tarベースのパッケージ」と呼ぶ。従来、WSLディストリビューションは、Appxパッケージを使って、Microsoftストア経由で配布されていた(以後、Appxパッケージと呼ぶ)。
このAppxパッケージには、ストア経由であるためいくつかの問題(制限)があった。
・同じディストリビューションを複数インストールできない
・ディストリビューションの名前を変更できない
・ディストリビューションのインストール先を指定できない
簡単なWindowsのアプリケーションならともかく、システムの土台ともなるLinuxでは、いずれも意外に小さくない問題だった。
一応、wsl.exeが後から搭載したexportコマンドなどを使うことで、上記の問題には対応が可能ではあったが、ドキュメント化されているわけではなく、「裏技」的なものだった。このあたりについては簡単だが、過去に記事にしている(「ストア版WSLをアップデートまたはダウングレードする」)。
exportしたディストリビューションのvhdxイメージを別名でimportすることで、内容が同一だが、WSLとしては異なる実行環境として登録できる。
そもそもWSL2では、専用のLinuxカーネルを、複数のディストリビューションが共有して動作する。ディストリビューションの実行イメージは、ネイティブのファイルシステム形式(ext4)のまま、仮想ハードディスクファイルに保存さる。これを「軽量ユーティリティ仮想マシン」で動くLinuxカーネルが実行する。このため、WSLディストリビューションのファイクシステムには、Linuxカーネルは含まれない。
tarとは、もともとテープデバイスへのバックアップコマンドとして作られたが、現在では、ファイルシステム内のディレクトリ構造を含めたファイルのバックアップコマンドとして使われる。
現在のWSLでも、前述のようにexportオプションでtar形式を指定できる。しかし、tarベースのパッケージでは、tarでアーカイブしたext4ファイルシステムを使う。「WSL配布ファイル」(/etc/wsl-distribution.conf)に、インストール後の最初の起動(Out of box experience)などについて、記述を入れておく必要がある。
このファイルは、ディストリビューション内にあり、アイコンやディストリビューション名などの初期データをLinuxコードで記述することができる。もちろんWSLなので、Win32側の実行ファイルを呼び出すことも可能だ。従来のAppxパッケージと異なるのは、このtarファイル単体でインストールが可能になることだ。
なお、tarベースのパッケージを作るには、ディストリビューション内で、tarコマンドでファイルシステムのアーカイブを作成し、gzipコマンドで圧縮する。ファイルシステムのルートがカレントディレクトリならば、以下のようなコマンドを使う。
tar --numeric-owner --absolute-names -c * | gzip --best > ../install.tar.gz
tarベースのパッケージが導入されたのは、企業内などで、同一の設定をしたディストリビューションを多数配布するといった用途を想定してのことだ。設定を済ませたディストリビューションに、必要なファイル(/etc/wsl-distribution.conf)を配置したtarファイルを作成するだけで、ディストリビューションの配布パッケージを作ることができる。
このとき、ファイル拡張子を「~.wsl」とすることで、エクスプローラーから直接インストールすることが可能になる。
これに合わせて、「wsl.exe --install」や「wsl.exe --list --online」で、参照可能なディストリビューションをレジストリの設定で置き換え、追加する機能が搭載されている。この場合、インストールに必要なtarパッケージと、JSONで記述した「ディストリビューションマニファスト」を同一フォルダに置き、そのURLをレジストリに設定する。
もう1つ、tarベースのパッケージでは、インストール時にWindows Terminalに登録するWindows Terminalプロファイル(JSON)をあらかじめ登録しておくことも可能だ。
Windows Terminalプロファイルは、Windows Terminalがタブやウィンドウを作成するときの情報で、シェルを起動する方法やタブやウィンドウの初期状態を設定する。Windows Terminalのsettings.jsonの中に記述されている。
プロファイルとなるJSONファイルを作成し、そのファイルパスをWSL配布ファイルに記述しておくことで、インストール時に指定したプロファイルを使って、Windows Terminalにプロファイルを登録できる。
このあたりに関しては、以下のページに情報がある。
●WSL用のカスタムLinuxディストリビューションを構築する
https://learn.microsoft.com/ja-jp/windows/wsl/build-custom-distro
前バージョンあたりから、WSLの組織内利用の機能が強化されつつある。Linuxに任せられる部分はWSLに任せたいのか、既存の企業内Linuxユーザーの取り込みなのか、目的は不明だが、企業内でのWSLの利用は容易になりつつあるようだ。
この連載の記事
-
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第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サンドボックスではコマンドラインからの制御が可能に - この連載の一覧へ