前回記事では、WSL2の機能を使って、Windows 10にUbuntuをインストールしましたが、やっぱりRHEL系のLinuxを使いたいよなあと思い、Rocky Linux 9をインストールしました。
もし、自身のPCでWSL2の機能が有効なっていないのであれば、この記事を参考にしてWSL2の機能を有効にしておいて下さい。
通常の方法ではインストールできない
WSL2の通常の方法では、「wsl –install -d <ディストリビューション名>」でオンラインインストールが簡単にできるのですが、Rocky LinuxやAlma LinuxのようなRHEL系のディストリビューションがオンラインで提供されていません。なんでなんだろ。。。
Rocky LinuxをWSLにインポートする(インストールではなくインポートという表現を使っています)方法は、Rocky LinuxのDocumentationのサイト(以下)に記載がありますので、この方法で試してみます。
Rocky Linuxのインポート
Baseイメージのダウンロード
上記のページに手順(Steps)が書いてあります。
推奨の方法は、CDNからイメージをダウンロードする、とあります。今回は Rocky Linux 9をインストールしたいので、「9- Base x86_64」の箇所(以下の図の赤丸のところ)をクリックすると、イメージファイルがダウンロードされます。

ダウンロードされたファイルは Rocky-9-Container-Base.latest.x86_64.tar.xz というファイル(サイズは約51MB)でした。
WSL2にイメージをインポート
上記のページには以下のコマンドでインポートしろと書いてあります。
wsl --import <machine-name> <path-to-vm-dir> <path-to/rocky-9-image.tar.xz> --version 2
私は、wslのデフォルト動作をWSL2に設定したので、以下の通りにコマンドを実行しました。
(ちなみに、イメージファイルを格納したディレクトリでwslコマンドを実行しているので <path-to-vm-dir> には . を指定しています。また、–import で指定している名前は、wslで呼び出す際に使用するディストリビューション名です。今回は Rocky-9 という名前を付けました)
wsl --set-default-version 2
wsl --import Rocky-9 . Rocky-9-Container-Base.latest.x86_64.tar.xz
ところが、カーネルコンポーネントの更新が必要、というエラーになります。

メッセージに従い、https://aka.ms/msl2kernel を参照して、最新の x84マシン用WSL2 Linuxカーネル更新プログラムパッケージ をclickして、ダウンロードします。

ダウンロードされた wsl_update_x64.msi をダブルクリックして実行します。

このダイアログで Nextをclickします。
「Windowsがサブシステムに変更を加える」みたいなダイアログが表示されるけど、許可します。

あっと言う間に処理は完了。Finishをclickして終了します。
さて、もう一度、インポートを試みます。今度は「エラーを特定できません」というエラーになりました。

インポートするファイルが 「.xz」で圧縮されているからかもしれません。Windowsの圧縮アプリ「7zip」を使って解凍し、tar形式に変換します。解凍するとサイズは約231MBになりました。
その後、もう一度インポートをトライ。
wsl --import Rocky-9 . Rocky-9-Container-Base.latest.x86_64.tar
今度はエラーメッセージもなければ、正常に終了したかどうかも分からない。

wsl --list
を実行すると、有効なディストリビューションの一覧として Rocky-9 が表示されているのでOKなのでしょう。

Rocky 9にアクセスする
Windowsのコマンド・プロンプトから以下のコマンドを実行することで、インポートしたRocky Linux 9にアクセスすることかできます。
wsl -d Rocky-9

プロンプトがLinuxのものに変わっているので、ログインできたことが確認できました。
でも、メッセージを読むと、最新のWSLに更新しろと言っていますね。。
# wsl.exe --update
と実行すると、Linux用Windowsサブシステムが更新されました。
これって、Linux内からWindowsのコマンドを実行できたということのようです(へえー)。

pwdとdf でファイルシステムを確認します。

なるほど、WSLを実行したディレクトリ(フォルダ)がカレントディレクトリになっているようです。
一方で、rootのホームディレクトリは、ちゃんと /root になっていました。
PowerShellからもWSLを起動することができましたが、起動した直後に日本語が文字化けしてしまうという問題が発生しました。今後は、コマンドプロンプトから利用するのが良さそうです。

インポートしたシステムはどこに作成される?
今回、wslコマンドでインポートを行ったときのカレントディレクトリ(フォルダ)は、
c:\Users\<ログイン名>\Documents\
でしたので、このフォルダの下に、ext4.vhdx というファイルが作成されていました。
パッケージを追加インストールしていくと、サイズが2GB以上の容量になりますので、インポートを行うディレクトリは予め計画的に検討しておくほうが良いかと思います。
所感
WSL2でRocky Linux 9を利用できるのは良かったのですが、Baseシステムのイメージなので必要なものがほとんど入っていません。whichコマンドさえもありませんでした。
実用で使うにはパッケージを追加インストールしなければならなそうです。その上で、使い物になるのかどうかを評価する必要がありそうです。


コメント