ストア版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は、以下の表のような状況にある。
![](https://ascii.jp/img/2023/02/11/3491729/x/f2f23ae7587f8310.png)
プレリリース版は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」を付ける必要がある。
![](https://ascii.jp/img/2023/02/11/3491725/x/5ca925987a4fb50c.png)
リストアする場合には、複数の方法がある。1つは、「wsl.exe --import」コマンドを使って、新規にディストリビューションを追加する方法だ。ただし、この方法では、バックアップしたWSLディストリビューションとは異なるWSLディストリビューションを新規に作成する必要がある。具体的には、
wsl.exe --import <新ディストリビューション名> <インストールパス> <VHDXファイルパス> --vhd
とする。
![](https://ascii.jp/img/2023/02/11/3491726/x/95fabd1d36fe1a32.png)
このコマンドを実行すると、指定したインストールパスに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コマンドの表示、解凍コマンドを示す。
![](https://ascii.jp/img/2023/02/11/3491730/x/1abe98e711ed83bf.png)
プレリリース版へのアップデート
wsl.exeコマンドの“--update”オプションに“--pre-release”オプションを追加することで、最新のプレリリース版へのアップデートができる。具体的には、
wsl.exe --update --pre-release
を実行する。これにより、安定版(原稿執筆時点ではv1.0.3)から、プレビュー最新版(同v1.1.2)にアップデートされる。状態の確認には、「wsl.exe --version」を使う。
![](https://ascii.jp/img/2023/02/11/3491727/x/d8792c418f456a57.png)
ストア版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の正式パッケージ名を取得、これを使ってパッケージを削除する。
![](https://ascii.jp/img/2023/02/11/3491728/x/c8ac8e1f27dfb050.png)
原稿執筆時点でのパッケージ名は以下のものだ。
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ならば対策としてダウングレードができるわけだ。
この記事に関連するニュース
-
Windows Subsystem for Linuxガイド 第38回 WSL2でDockerを使う その4「ネットワーク接続Dockerエンジン編」
マイナビニュース / 2024年7月2日 13時42分
-
Windowsが今更(?)開発者に優しくなろうとしている!? 「Dev Home」は開発者にとって使い物になる?
ASCII.jp / 2024年6月23日 10時0分
-
窓辺の小石 第170回 ネットの総和
マイナビニュース / 2024年6月14日 10時13分
-
Windows Subsystem for Linuxガイド 第36回 WSL2でDockerを使う その2「Dockerエンジン編」
マイナビニュース / 2024年6月10日 17時57分
-
今後のWSL2はGUI管理が可能に - 阿久津良和のWindows Weekly Report
マイナビニュース / 2024年6月9日 16時0分
ランキング
-
1楽天ペイと楽天ポイントのキャンペーンまとめ【7月4日最新版】 楽天ペイアプリでポイント最大10倍もらえる
ITmedia Mobile / 2024年7月4日 10時5分
-
2ドコモ、au、ソフトバンク、楽天モバイルの端末セールまとめ【7月5日最新版】 新スマホ「AQUOS R9」「Xperia 1 VI」をお得に入手しよう
ITmedia Mobile / 2024年7月5日 10時5分
-
37月10日は「納豆の日」 LINEヤフーが納豆にまつわる検索データ公開 ユーザーの関心明らかに
iza(イザ!) / 2024年7月5日 11時19分
-
4Google検索も不要に? 検索AI「Perplexity」がスゴすぎてちょっと怖い
ITmedia NEWS / 2024年7月5日 19時16分
-
5「ドコモ光 1ギガ」旧プランを2025年6月に提供終了、解約金の安い新プランへ自動移行
マイナビニュース / 2024年7月4日 19時15分
記事ミッション中・・・
記事にリアクションする
![](/pc/img/mission/mission_close_icon.png)
記事ミッション中・・・
記事にリアクションする
![](/pc/img/mission/point-loading.png)
エラーが発生しました
ページを再読み込みして
ください
![](/pc/img/mission/mission_close_icon.png)