ストア版WSLをアップデートまたはダウングレードする
ASCII.jp / 2023年2月12日 10時0分
今回は、Microsoftストア版WSLをアップデートする、あるいはダウングレードする方法を解説する。
Microsoftストア版WSL(以下、WSL)は、Windows Insider Programのプレビュー版WindowsではPre-release版WSL(以下、プレリリース版WSL)がインストールされるが、通常版Windowsには「Latest」と呼ばれる「安定版WSL」がインストールされる。通常版Windowsでもプレリリース版WSLに「アップデート」することが可能で、逆にプレビュー版Windowsでは安定版に「ダウングレード」することができる。
現状のWSLは、以下の表のような状況にある。
プレリリース版はv1.1.2、安定版はv1.0.3である。WSLは、昨年11月にv1.0.0として正式版となったが、このとき、v1.0.0が安定版でv1.0.1、v1.0.3はプレリリース版だった。WSLは最初にプレリリース版として公開されたあと、ユーザー評価などを経て、そのうちの1つが安定版となり、これがMicrosoftストアで公開される。
WSLでは、アップデート後に挙動が変わり、これまで動作していたプログラムがうまく動かなくなるといった問題が出ることがある。このような場合には、過去のバージョンにダウングレードすることで状態復帰が可能だ。
WSLは、まだまだ改良が続けられており、バージョンが上がることは、新機能やバグ修正が提供されることになる反面、新たなバグや問題が発生する可能性もある。このようなときに、WSLのバージョンを切り替えることで、一時的な対策を取ることが。
WSLディストリビューションのバックアップ
WSLのアップデートやダウングレードは比較的簡単にできる。ただし、アップデートやダウングレード時の事故や環境の変化を考慮すると、事前にWSLディストリビューションをバックアップしておくほうが望ましい。
筆者が簡単に試してみたところでは、プレリリース版へのアップデート自体やダウングレードでは、仮想ハードディスクファイルが書き換えられることはなかったが、カーネルのバージョンが異なるなどで、ディストリビューションを起動すると、Linuxパッケージの入れ替えなどがある可能性がある。この状態でダウングレードすると、ディストリビューションの動作に影響が出るかもしれない。
WSLディストリビューションをバックアップするには、wsl.exeコマンドの「--export」オプションを使う。なお、バックアップ/リストア時は、常に「wsl.exe --shutdown」でWSL停止させて作業する。
通常の動作は、WSLローカルファイルシステムをtar形式でファイル化するが、「--vhd」オプションを付けることで、仮想ハードディスクファイルの出力が可能になる。これは、WSLディストリビューションパッケージのフォルダーにあるext4.vhdxとまったく同じものになる。具体的には、
wsl.exe --export <ディストリビューション名> <VHDファイルパス> --vhd
とする。なお、<VHDファイルパス>には、必ず拡張子「.vhdx」を付ける必要がある。
リストアする場合には、複数の方法がある。1つは、「wsl.exe --import」コマンドを使って、新規にディストリビューションを追加する方法だ。ただし、この方法では、バックアップしたWSLディストリビューションとは異なるWSLディストリビューションを新規に作成する必要がある。具体的には、
wsl.exe --import <新ディストリビューション名> <インストールパス> <VHDXファイルパス> --vhd
とする。
このコマンドを実行すると、指定したインストールパスにext4.vhdxファイルが作成される。ほかにファイルは作られず、あとはレジストリへの登録のみだ。つまり、WSLディストリビューションは、ext4.vhdxファイルのみあればよさそうだ。
もう1つの方法は、非公式の方法であるが、現行のWSLディストリビューションのext4.vhdxファイルを置き換える方法。筆者が試した範囲では問題がなかったが、あくまでも正式な方法ではないことを理解して実行してほしい。
以下のPowerShellコマンドで、WSLディストリビューションのインストール先を調べる。
gci HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | gp | ft DistributionName,Version,BasePath
コマンド出力のBasePathにあるフォルダーにext4.vhdxファイルがある。これをバックアップしたvhdxファイルで差し替えることで、リストアが可能だ。名前はext4.vhdx固定である。安全のため、ファイルを置き換える前にコピーしておくといいだろう。
また、「--export」で「--vhd」オプションをつけないと、tar形式でのアーカイブファイルになる。これはLinux側のtarコマンドやWindows付属のtar.exeで扱うことが可能だ。必要なファイルがわかるのであれば、エクスポートしたtarファイルから特定のファイルを抜き出すことも可能だ。以下の表にtarコマンドの表示、解凍コマンドを示す。
プレリリース版へのアップデート
wsl.exeコマンドの“--update”オプションに“--pre-release”オプションを追加することで、最新のプレリリース版へのアップデートができる。具体的には、
wsl.exe --update --pre-release
を実行する。これにより、安定版(原稿執筆時点ではv1.0.3)から、プレビュー最新版(同v1.1.2)にアップデートされる。状態の確認には、「wsl.exe --version」を使う。
ストア版WSLのダウングレード
ダウングレードには、あらかじめWSLパッケージをGitHubからダウンロードしておき、PowerShellでWSLパッケージを削除し、ダウンロードしたWSLパッケージをインストールする。ストア版WSLパッケージは以下のURLからダウンロードできる(https://github.com/microsoft/WSL/releases)。
各バージョンのところに「Assets」という項目があり、「Microsoft.WSL_【バージョン番号】_x64_ARM64.msixbundle」というファイルがあるのでこれをダウンロードする。ここでは安定版v1.0.3の「Microsoft.WSL_1.0.3.0_x64_ARM64.msixbundle」をダウンロードしたとする。
ダウングレードの前にWSLを「wsl.exe --shutdown」で停止させておく。管理者権限でPowerShellを起動し、WSLの正式パッケージ名を取得、これを使ってパッケージを削除する。
原稿執筆時点でのパッケージ名は以下のものだ。
MicrosoftCorporationII.WindowsSubsystemforLinux
頻繁に変更されることはないと思われるが、念のため以下のコマンドで確認してほしい。もし変更されているなら、Get-AppxPackageコマンドの引数を新しい名前に合わせる。
Get-AppxPackage "Microsoft*Subsystem*Linux*" | select Name
次に以下のコマンドを使い、WSLパッケージを削除する。
wsl.exe --shutdown $Package = Get-AppxPackage MicrosoftCorporationII.WindowsSubsystemforLinux -AllUsers Remove-AppxPackage $Package -AllUsers
次に、ダウンロードしたWSLパッケージ(カレントフォルダにあるとする)を追加(インストール)する。
Add-AppxPackage .\Microsoft.WSL_1.0.3.0_x64_ARM64.msixbundle
これで安定版WSLに戻すことができた。最新のプレリリース版以外は、すべてこの方法で必要なWSLパッケージファイルをダウンロードしてPowerShellでパッケージ削除、追加する。
ストア版WSLになり、WSLはパッケージでインストールできるようになった。これにより、最新版だけでなく、プレリリース版へのアップデートやダウングレードが簡単にでき、柔軟性が高くなった。以前は問題が発生したときは次のバージョンを待たねばならなかった。過去には、WSLが起動できなくなるといった問題が発生したこともあった。こうした場合、ストア版WSLならば対策としてダウングレードができるわけだ。
この記事に関連するニュース
-
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた
ASCII.jp / 2024年11月24日 10時0分
-
Arm版Windows 11のISOイメージ配布開始 インストールがより手軽に
ASCII.jp / 2024年11月15日 13時20分
-
Linux Foundation、インストラクター主導コース「Linux システム管理」の提供を開始
PR TIMES / 2024年11月13日 11時15分
-
窓辺の小石 第191回 リンクの冒険
マイナビニュース / 2024年11月8日 17時3分
-
Windows Subsystem for Linuxガイド 第41回 WSL GUI設定
マイナビニュース / 2024年11月7日 15時31分
ランキング
-
1ECナビカードプラス、2025年3月で年間利用ボーナスポイントを終了
ポイ探ニュース / 2024年11月28日 11時26分
-
2そうはならんやろ! “炎の絵”を芸術的に描いたら…… “おきて破り”の衝撃ラストが1000万再生超え「泣いちゃいそう!」
ねとらぼ / 2024年11月28日 8時0分
-
310000mAh前後の「大容量コンセントプラグ付きモバイルバッテリー」おすすめ4選 USBケーブル内蔵の3in1モデルも【2024年11月版】
Fav-Log by ITmedia / 2024年11月28日 6時25分
-
4携帯ショップで働きたい人が減っている――現役店員が語る“理由”とは?
ITmedia Mobile / 2024年11月27日 17時5分
-
5Dynabook、セルフ交換バッテリー機構を搭載した14型ノートPC「X74」
マイナビニュース / 2024年11月28日 11時3分
記事ミッション中・・・
記事にリアクションする
記事ミッション中・・・
記事にリアクションする
エラーが発生しました
ページを再読み込みして
ください