WSLでRed Hat Enterprise Linuxを利用する
Red Hat Enterprise Linuxは、開発者向けのRed Hat Developer Program1に参加することで、無償で入手が可能です。
今回はこちらを利用して、WSLへRed Hat Enterprise Linux(RHEL) 9.1をインストールします。
イメージ入手
WSLへディストリビューションを追加するためには、rootfsのイメージが必要となります。
RHELのrootfsを作成するため、dnfコマンドを利用できるLinuxディストリビューション(Fedora等)上で作業していきます。
rootfs作成
# RHELメディアのリポジトリ設定ファイルを作成
> cat << _END_ > ./media.repo
[InstallMedia-BaseOS]
name=Red Hat Enterprise Linux 9.1.0 - BaseOS
mediaid=None
metadata_expire=-1
gpgcheck=0
cost=500
baseurl=file://$PWD/rhel9-iso/BaseOS/
gpgkey=file://$PWD/rhel9-iso/RPM-GPG-KEY-redhat-release
_END_
# rootfsを作成
> mkdir rootfs
> sudo dnf -y -c media.repo --installroot $PWD/rhel9-rootfs \
--disablerepo "*" --enablerepo "InstallMedia-BaseOS" groupinstall "Minimal Install"
# tarボールにrootfsをアーカイブ
> tar cf rhel9-rootfs.tar -C rhel9-rootfs/ .
# 作成したrootfsのtarファイルをWindows側に移動
> mv rhel9-rootfs.tar /mnt/c/Users/user/.
rootfsのインポート
作成したrootfsをWSLへインポートします。 これは、Windows上のPowershellで作業していきます。
rootfsのインポート
# インストール先フォルダの作成
> New-Item $env:LOCALAPPDATA\wsl\RHEL\9 -ItemType Directory
# rootfsのインポート
> wsl.exe --import RHEL $env:LOCALAPPDATA\wsl\RHEL\9 .\rhel9-rootfs.tar
# 確認
> wsl.exe -d RHEL grep PRETTY_NAME /etc/os-release
PRETTY_NAME="Red Hat Enterprise Linux 9.1 (Plow)"
ユーザの作成とsudoの有効化
初期状態ではrootユーザしかないため、作業用ユーザを作成してsudoが利用できるようにします。 ここでは、作成するユーザ名は「roy
」としています。
ユーザ作成とsudoの有効化
# group作成
> groupadd -g 1000 roy
# ユーザ作成
> useradd -g 1000 -u 1000 roy
# wheelグループにユーザを追加
> usermod -G wheel roy
# royユーザにパスワードを設定
> passwd roy
# royユーザに切り替え
> su - roy
# sudoが利用出来るか確認
> sudo subscription-manager status
wslで使用するデフォルトユーザの変更
現在の設定ではRHELを起動した時にはrootユーザでログインされるようになっています。
これを変更するにはWindows上のレジストリか、各ディストロの /etc/wsl.conf
に設定することで変更できます。
ここでは、レジストリでの設定方法を紹介します。Windows上のPowershellで作業していきます。
デフォルトユーザの変更
# RHELのレジストリキーを検索
> $reg_key=(reg.exe query HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss /s /d /f RHEL)[1]
# レジストリキーを確認
> reg.exe query $reg_key
# デフォルトユーザのUIDを設定
> reg.exe add $reg_key /v DefaultUid /t REG_DWORD /d 1000 /f
その後、WSLのRHELを起動すると先ほど作成したユーザroy
でログインされていることが確認できます。
サブスクリプション登録
パッケージの更新を入手するため、サブスクリプションマネージャーを利用して登録を実行します。
登録の方法はRHRLのドキュメント2を参照します。
サブスクリプション登録
# サブスクリプション登録
> subscription-manager register
## ユーザIDとパスワードを入力
# パッケージ更新
> sudo dnf update -y
インポートしたRHELをWSLから削除
ディストロを削除するには、WSLへの登録を解除した後にインポートしたフォルダを削除します。
ディストリビューション削除
# wslから登録解除
> wsl.exe --unregister RHEL
# ファイルシステムが保存されているインポート先フォルダを削除
> Remove-Item -Recurse $env:LOCALAPPDATA\wsl\RHEL\9
# 手動でインポートしたディストロ全てを削除する場合
> Remove-Item -Recurse $env:LOCALAPPDATA\wsl\