はじめに
この記事は WSL2 + CentOS Stream 9 で快適なローカルLinux環境を作る - systemd 対応版 の更新である。今回は RHEL9 と互換性の高い Rocky Linux 9で実施する。
構築目標
- Windows 11 PC 内での Rocky Linux 9 Linux 環境
- 快適なターミナル環境
前提
- Windows 11 (Version 24H2) にアップグレード済みのPC (Home Edition でも可)
- BIOS で CPU 仮想マシン支援機能 (Intel VT / AMD-V) を有効化
- Windows Terminal 環境
- Windows Terminal には 白源 (HackGen) ( ダウンロード ) フォントがおすすめ。美しい等幅フォントは心の平安をもたらす。
 
- (推奨) Visual Studio Code WSL関連のあらゆるファイル編集に
導入手順
WSL2 の有効化
PowerShell 5 (管理者) から以下を実行する。PowerShell 7 では失敗するので注意。
Hyper-V パッケージの導入準備 (Windows 11 Home Edition のみ)
Windows 11 Home では Hyper-V 関連のパッケージが隠されているため、これを可視化する。
PowerShell 5 (管理者) から以下を実行。
Get-ChildItem $Env:SystemRoot\servicing\Packages\*Hyper-V*.mum |
Foreach-Object {
    dism.exe /online /norestart /add-package:"$($_.VersionInfo.FileName)"
}
WSL 用の機能をインストールする
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Windows 再起動
WSL2 カーネルの更新
WSL2 Linux カーネル更新プログラム からダウンロードしてインストール
wsl_update_x64.msi
WSL 関連ファイルのバージョンの確認。(2025/1/25時点)
wsl --version
WSL バージョン: 2.3.26.0
カーネル バージョン: 5.15.167.4-1
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5620
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26100.2894
WSL用 Rocky linux 9 イメージをダウンロード
Import Rocky Linux to WSL から該当するパッケージを探し、Windows にダウンロードしておく
 
 
例: 9: Base_x86_64 https://dl.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-Container-Base.latest.x86_64.tar.xz
CentOS Stream 9 とは違い、公式サイトが WSL 用パッケージを公開しているので安心。
Rocky Lunux 9 を WSL2 ディストリビューションに登録
個人ユーザーのフォルダにインストールするには、下記を PowerShell から実行。
#配置先フォルダ作成
mkdir ${env:LOCALAPPDATA}\Packages\rocky9
#WSL2にインポート (tar.xz は展開不要)
wsl --import "RockyLinux9" ${env:LOCALAPPDATA}\Packages\rocky9 Rocky-9-Container-Base.latest.x86_64.tar.xz --version 2
WSL2 としてディストリビューションに登録されているか確認
PS C:\> wsl -l -v
  NAME           STATE           VERSION
* RockyLinux9    Stopped         2
起動
登録したディストリビューションを起動する
wsl -d RockyLinux9
数秒後に bash プロンプトが出る
[root@WindowsPCName c]#
Ctrl-D で bash プロンプトを抜けて wsl のステータスを見ると、ディストリビューションプロセスは生きたまま。
[root@WindowsPCName c]# logout
PS C:\> wsl -l -v
  NAME           STATE           VERSION
* RockyLinux9    Running         2
WSLプロセスをすべて停止するには:
wsl --shutdown
確認してみる。
PS C:\> wsl -l -v
  NAME           STATE           VERSION
* RockyLinux9    Stopped         2
WSL 自体の更新
一ヶ月に一度、Windows Update のタイミングで下記を実施する。
wsl --update
WSL のメモリ使用制限
WSLはデフォルトでPC本体の最大メモリの半分までを割り当ててしまう。32GB搭載マシンなら16GBをWSLに割り当てる。
これを制限するには下記の設定を Windows PowerShell 側で行っておく。WSLを再起動後に有効になる。
@'
[wsl2]
memory=4GB
swap=0
'@ > ${Env:USERPROFILE}/.wslconfig
Windows Terminal からの利用
Windows Terminal は WSL にネイティブ対応しているので、上記のディストリビューション登録後、Windows Terminal 再起動後には RockyLinux9 というメニューが自動的に現れる。Windows Terminal の設定ファイルにも自動的に追加されているのがわかる。
 
 
Windows Terminal のメニューから起動してみると、数秒後に bash プロンプトが出る。
[root@WindowsPCName c]#
systemd の有効化
systemd は現代の Linux ディストリビューションでは一般的なプロセス管理システムだが、WSL では最近まで対応していなかった。2022年9月より WSL が systemd に対応したが、デフォルトでは有効化されていない。各種サービスを起動するためには必須なので、これを有効化する。
上記の手順で WSL Rocky Linux 9 を起動
wsl -d RockyLinux9
Linux の bash プロンプトで下記を貼り付ける。
cat <<'__EOT__' > /etc/wsl.conf
# See: https://learn.microsoft.com/en-us/windows/wsl/wsl-config
[boot]
systemd=true
__EOT__
Ctrl-D で bash プロンプトを抜けて WSL を一旦停止する。
wsl --shutdown
再度 wsl を起動してみて、systemd のプロセスがいれば OK
# ps auxw | grep systemd
root          35  0.2  0.0  27544 11524 ?        Ss   16:17   0:00 /usr/lib/systemd/systemd-journald
root          58  0.4  0.0  32436  9596 ?        Ss   16:17   0:00 /usr/lib/systemd/systemd-udevd
root          69  0.1  0.0  19800  9268 ?        Ss   16:17   0:00 /usr/lib/systemd/systemd-logind
root         103  0.1  0.0  19200  6648 ?        Ss   16:17   0:00 /usr/lib/systemd/systemd-hostnamed
root         105  0.1  0.0  21872 11592 ?        Ss   16:17   0:00 /usr/lib/systemd/systemd --user
root         152  0.0  0.0   3876  1940 pts/0    S+   16:17   0:00 grep --color=auto systemd
Rocky Linux 9 の追加設定
man ページ対応
WSL 用の Rocky Linux パッケージは、デフォルトで man ページファイルのインストールをブロックする設定が入っている。man コマンドでマニュアル表示を行いたいときは、下記の手順を先に実行しておく。
制御ファイルを vi で編集: /etc/yum.conf tsflags=nodocs の行をコメントアウトして保存
[main]
#(中略)
# tsflags=nodocs
man 基本パッケージインストール
dnf install -y man man-pages
インストール済みパッケージの再インストール (man ファイル追加登録)
dnf reinstall -y bash util-linux python3 gzip
各種パッケージ追加
この時点ではミニマムの環境しか入っていないため、必要なパッケージを追加する。
#アップデート
dnf update -y
#不足パッケージを導入
dnf install -y procps-ng coreutils-common dnf-plugins-core bash-completion net-tools zip unzip bzip2 xz zstd openssh-clients telnet perl
#エディタはお好みで
dnf install -y vim-enhanced
#EPEL レポジトリの追加
dnf config-manager --set-enabled crb
dnf install -y \
 https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
 https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm
# EPEL 由来ツール追加
dnf install -y htop whois bind-utils wireshark-cli tcpdump traceroute nc dhcping fping
WSL / Rocky Linux 9 での注意点まとめ
- who / w コマンドでユーザが誰もログインしていないように見える。
- シャットダウンという概念がない(?) ため、完全に終了するには wsl –shutdown 等のコマンドが必要。
- Windows フォルダは /mnt/c 等にマウントされている。
参考
- Rocky Linux (Official)
- 「二度と開発停止の混乱は起こさない」その後のRocky Linux
 クラウドwatch, 2022年9月12日
