Rocky LinuxをWSL2で動かしてみる
Rocky Linux は、 Red Hat Enterprise Linux (RHEL)と互換性を持つLinuxディストリビューションです。21年6月21日にバージョン8.4が一般向けにリリースされました。
WSL2はWindowsでLinuxを動作させるための仕組みです。
本稿では、すでにWindows PC上でWSL2が動作し、Ubuntuがインストールされている環境があることを前提とします。WSL2が使えるようにする手順については、以下のリンクをご参照ください。
本稿では、WSL2のUbuntuを使ってRocky Linuxのファイルシステムを構成します。そのファイルシステムをWindows側に渡して、新たなWSLとしてインポートすることによって、Rocky Linuxを動作させる方法を試してみます。
注意事項
ここで紹介する構築方法特有の不具合と思われる現象が発生する可能性があります。
確実にRocky Linuxを動作させたいのであれば、ISOファイルをダウンロードして通常の手順でインストールすることをお勧めします。
参考URL
Rocky Linuxの公式ページが非常に参考になりました。
自身のブログから転載しました。
Rocky LinuxをWSL2で動かしてみる
WSL2のUbuntuでRocky Linuxイメージを作成する
本稿では、すでにWSL2が構成されていてUbuntuにログインできる準備が整っていることが前提です。
Ubuntuを起動してログインします。
「rinse」のインストールと設定
rinseとは、RPM系のディストリビューションを作成するためのperlで作成されたツールです。
rinseをインストールします。
sudo apt-get update
sudo apt-get install rinse -y
rinseをインストールすることにより、/etc/rinse/ に各種ディストリビューションのパッケージファイルが作成されます。
ただし、Rocky Linuxのものはありません。そこで、CentOSのファイルを流用して作成してしまいます。
sudo cp -p /etc/rinse/centos-8.packages /etc/rinse/rocky-8.packages
/etc/rinse/rocky-8.packages をエディタで開きます。ファイルの中身はパッケージが一覧になったテキストファイルです。
まず、文字列 “centos” をすべて “rocky” に変更します。下記は変更後のイメージです。変更対象は3行でした。
# list of packages in official docker container
rocky-release ← 変更
rocky-gpg-keys ← 変更
rocky-repos ← 変更
tzdata
次に、ファイルの最後に以下の行を追加します。
glibc-langpack-en
glibc-langpack-ja
libmodulemd
libzstd
passwd
sudo
cracklib-dicts
openssh-clients
python3-dbus
追加したらエディタをセーブして終了します。
なお、上記リストについては、Rocky Linux公式ページ(参考URL)に記載があったリストに対してさらにパッケージを追加しています。追加したものは「python3-dbus」と「glibc-langpack-ja」です。理由は、私の環境ではdnfコマンドを使用したときにエラーが表示されたためです。左記のパッケージを追加することによってエラーは抑止できましたが、この追加が最適解かどうかまでは未検証です。
Rocky Linuxのミラーサイトを記述しよう
次は /etc/rinse/rinse.conf を修正します。
以下のミラーサイトのエントリを追加します。
# Rocky Linux 8
[rocky-8]
mirror.amd64 = http://dl.rockylinux.org/pub/rocky/8/BaseOS/x86_64/os/Packages/
シェルスクリプトを書き換えよう
今度はCentOS用のシェルスクリプトをコピーして、Rocky Linux用に書き換えます。
sudo cp -pR /usr/lib/rinse/centos-8 /usr/lib/rinse/rocky-8
/usr/lib/rinse/rocky-8/post-install.sh の14行目に以下の行を挿入します。
echo " Extracting CA certs..."
$CH /usr/bin/update-ca-trust
rinse スクリプトを変更しよう
/usr/sbin/rinse を編集します。
エディタで文字列 “–extract-over-symlinks” をサーチすると、おそらく1248行目に見つかります。この部分を削除します。
さらに次の行(1249行目)の文字列 “centos” を “rocky” に置換します。
"rpm2cpio $file | (cd $CONFIG{'directory'} ; cpio --extract --make-directories --no-absolute-filenames --preserve-modification-time) 2>/dev/null >/dev/null";
if ( $file =~ /(fedora|rocky|redhat|mandriva)-release-/ ) {
rinse を実行しよう
これから作成する、Rocky Linuxのファイルシステムを格納するディレクトリを作成します。名称は任意です。わたしは rocky8_4 としました。
mkdir rocky8_4
ようやくここで rinse コマンドを実行します。
ここで、–directory オプションでRocky Linuxのファイルシステムを格納するディレクトリ名を指定します。
sudo rinse --arch amd64 --directory ./rocky8_4 --distribution rocky-8
Rocky Linuxのイメージファイルを作成しよう
rinse の実行が完了すると、rocky8_4 ディレクトリにRocky Linuxのファイルシステムが作成されています。このシステムイメージを tar コマンドでアーカイブにし、tar ファイルをWindows側に送り出します。
そしてWindows側で上記 tar ファイルから新しいWSLにインポートするという手順を踏みます。
まず、WindowsのCドライブ直下に rocky というフォルダを作成しておきます。
mkdir /mnt/c/rocky
次に、Rocky Linux のイメージを tar で固めます。
私はtarファイルの名称をrocky8_4.tarとしました。
sudo tar --numeric-owner -c -C ./rocky8_4 . -f /mnt/c/rocky/rocky8_4.tar
tar の実行が完了したら、Ubuntuセッションを終了します。
exit
WindowsからWSL2にインポートしよう
ここまで来たらあと少しです。
WindowsからPowerShellを起動します。
続いて、Rocky Linux のWSLイメージを格納するフォルダを作成します。
mkdir C:\rocky\rocky8.4
そして tar ファイルからWSLへのインポートを開始します。
wsl --import rocky8.4 c:\rocky\rocky8.4 c:\rocky\rocky8_4.tar
これでRocky LinuxがWSL2で起動できるようになりました。
ディストリビューションの一覧で、バージョンやステータスを確認します。
PS C:\Users\ms> wsl -l -v
NAME STATE VERSION
* Fedora-34 Stopped 2
rocky8.4 Stopped 2
Ubuntu-20.04 Stopped 2
それではRocky Linuxを立ち上げてみましょう。
wsl -d rocky8.4
スーパーユーザのプロンプト “#” が表示されたでしょうか。
最終的なアップデートを行おう
以降でRocky Linuxでの最終的な設定を施します。
dnf update
少し特殊な構築方法を行っているので、passwdコマンドなどで不具合が生じるようです。それを回避するために一部の再インストールを行います。
dnf reinstall passwd sudo cracklib-dicts -y
ユーザを作成しよう
スーパーユーザ(root)以外の、普段使いのユーザが必要です。
新たにユーザアカウントを作成します。sudo が使える特権を有したユーザとします。
ユーザ名を、ここでは linux としました。他のユーザ名に変更するには置き替えをお願いします。
adduser -G wheel linux
echo -e "[user]\ndefault=linux" >> /etc/wsl.conf
passwd linux
Rocky Linuxをログアウトします。
exit
WindowsのPowerShellに戻るので、WSLをいったんシャットダウンして、再度Rocky Linuxを立ち上げます。
wsl --shutdown
wsl -d rocky8.4
さいごに
いち早くRocky LinuxをWSLで活用できることによって、皆様のお役に立てればと思います。
Discussion