Fedora Remix 42 を WSL1 で使ってみる(0x8004030b エラー回避法)

個人の環境の 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 として使用するための方法をまとめました。

  1. wsl –update –pre-release でプレリリース版利用 or 一旦 WSL2 でインストール後 WSL1 に変換
  2. cd /bin && mv -f systemd-sysusers{,.org} && ln -s echo systemd-sysusers && cd –

以前より WSL1 を使用するためのハードルが上がっている実感がありますが、
WSL2 は自分が使うには問題点もあり、使える限りは今後も WSL1 で利用したいと思います。

Comments

comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)