個人の環境の WSL では以前より Fedora Remix を使用しています。
先日 Fedora 公式から Fedora 42 の WSL 版が公開されましたが、WSL 1 で利用できるものではありませんでした。
今回、Fedora Remix でも 42 がリリースされたので、WSL1 で試してみました。
試行錯誤編
最後にまとめて記載していますので、急ぎの方は最後まで読み進めてください。
環境情報
wsl -v コマンドより、記事執筆時点の最新の WSL のバージョンは下記です。
- WSL バージョン: 2.4.13.0
- カーネル バージョン: 5.15.167.4-1
- WSLg バージョン: 1.0.65
- MSRDC バージョン: 1.2.5716
- Direct3D バージョン: 1.611.1-81528511
- DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
- Windows バージョン: 10.0.26100.4061
通常通りインストール
まずは、ダウンロードしたファイルから通常通りインストールしてみます。
ただ、下記のように「0x8004030b」のエラーが表示されてインストールできません。
Unpacking Fedora Remix for WSL, this may take a few minutes...
WslRegisterDistribution failed with error: 0x8004030b
Error: 0x8004030b (null)
Press any key to continue...
tar.gz からインストール
WSL の Issue によると、tar.gz を取り出してからインストールすると良いという意見も見かけました
ただ、Fedora Remix については上手くいきませんでした。
> wsl --install --from-file "Fedora-Remix-for-WSL-SL_42.0.0.0_x64.tar.gz" --name Fedora-Remix-for-WSL-42
ディストリビューションのインポートに失敗しました。
エラー コード: Wsl/Service/RegisterDistro/WSL_E_IMPORT_FAILED
回避方法
WSL2 としてインストール後 WSL1 に変換
一旦 WSL2 としてインストールすると正常にインストールできました。
自作 PC は VMware や VirtualBox などを動かしており、WSL2 が動作するように起動オプションを設定すると、VM のパフォーマンスに影響が出ます。
一方、Surface や Windows 開発キット 2023 (ARM 検証機)は、システム構成的には WSL2 が利用可能にしています。
ただ、WSL2 は VM で稼働しており、VM のメモリ消費量が増えて困るのでこういった環境でも WSL1 で利用しています。
wsl --set-default-version 2
Fedora Remix のインストールが終われば、WSL1 に変換します。
デフォルトのバージョンも1に戻しておきます。
wsl --set-version fedoraremix 1
wsl --set-default-version 1
なお、Fedora 公式の WSL ではコンバートに失敗したので、Fedora Remix 42 には適用可能な手順のようです。
WSL のプレリリース版を導入する
下記で公開されている WSL のプレリリース版に「WSL」という文字があるので確認してみます。
wsl --update --pre-release
下記バージョンがインストールされました。
- WSL バージョン: 2.5.7.0
- カーネル バージョン: 6.6.87.1-1
- WSLg バージョン: 1.0.66
- MSRDC バージョン: 1.2.6074
- Direct3D バージョン: 1.611.1-81528511
- DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
- Windows バージョン: 10.0.26100.4061
プレビュー版であれば一発でインストールできました。
> wsl -l -v
NAME STATE VERSION
* fedoraremix Running 1
systemd 周りのアップデートができない件
ただ、この方法で WSL1 として利用できたとしても、dnf update 等で systemd まわりのパッケージが更新される際、下記のようなエラーが発生してしまいます。
>>> Running sysusers scriptlet: systemd-0:257.5-6.fc42.x86_64
>>> Error in sysusers scriptlet: systemd-0:257.5-6.fc42.x86_64
>>> Scriptlet output:
>>> Failed to take /etc/passwd lock: Invalid argument
>>>
>>> [RPM] %sysusers(systemd-257.5-6.fc42.x86_64) scriptlet failed, exit status 1
Transaction failed: Rpm transaction failed.
上記ページを参考に root 権限で下記を実行します。
cd /bin && mv -f systemd-sysusers{,.org} && ln -s echo systemd-sysusers && cd -
まとめ
この記事では、Fedora Remix for WSL を WSL 1 として使用するための方法をまとめました。
- wsl –update –pre-release でプレリリース版利用 or 一旦 WSL2 でインストール後 WSL1 に変換
- cd /bin && mv -f systemd-sysusers{,.org} && ln -s echo systemd-sysusers && cd –
以前より WSL1 を使用するためのハードルが上がっている実感がありますが、
WSL2 は自分が使うには問題点もあり、使える限りは今後も WSL1 で利用したいと思います。