WSL2 でどうしても RHEL を動かしたかった
宗教上 Debian 系が使えないため。
基本的には https://docs.microsoft.com/en-us/windows/wsl/use-custom-distro に記載の通りの手順を踏むので、ほぼ雑和訳です。参照元で CentOS を前提にしている個所を RHEL に読みかえています。
試した環境
- Windows 11 Pro (10.0.22000 Build 22000)
前提
- WSL2 がすでに有効化され、Ubuntu がインストールされていること
- Docker Desktop がインストールされており、下記の設定が反映されていること
- Settings > General > "Use the WSL 2 based engine" にチェックが入っている
- Settings > Resources > WSL Integration > "Ubuntu" が有効化されている
手順
- WSL2 で Ubuntu 環境に入る
docker run -t redhat/ubi8 bash ls /
でいったん動かすdockerContainerID=$(docker container ls -a | grep -i redhat/ubi8 | awk '{print $1}')
でコンテナ ID を取得するdocker export $dockerContainerID > /mnt/c/お好きなディレクトリ/rhel8.tar
で TAR ファイルを生成する- Ubuntu から抜けて Windows の CUI 環境に戻る
- RHEL の置き場所となるディレクトリ(ここでは
C:\wslrhel8
とする)を作る wsl --import RHEL8 C:\wslrhel8 C:\お好きなディレクトリ\rhel8.tar
で RHEL8 をインポートするwsl -d RHEL8
で RHEL8 環境に入るdnf install sudo
でsudo
をインストールするadduser -G wheel yourusername
で普段使いのユーザーを追加するecho -e "[user]\ndefault=yourusername" >> /etc/wsl.conf
をすることで、Windows 側でbash
と打って RHEL8 に入る際のユーザーをyourusername
にする- RHEL8 から抜けて Windows の CUI 環境に戻る
wsl --terminate RHEL8
で一回 RHEL8 を殺す- 再び
wsl -d RHEL8
で RHEL8 環境に入り、ユーザーがyourusername
であることを確認する - 必要に応じて
sudo subscription-manager register
やsudo subscription-manager attach
やsudo dnf update
などをする
RHEL8 のインポート後になんか設定ミスった気がして吹っ飛ばしたくなったら
wsl --unregister RHEL8
を実行する- もう一度
wsl --import ...
からやり直す