WindowsのWSL2がsystemdに対応したらしいので、Rocky Linux9入れて使ってみる

日記Rocky Linux,systemd,windows,WSL2,wslconfig

サクサク起動できて億劫にならないWSL2ですが、ついにsystemdに対応した模様。

知らなかった。

Systemd support is now available in WSL!

昨年の秋ごろには既に出ていたらしく、浦島太郎状態。

とりあえず動かしてみてから。

WSL2で動かすLinuxイメージを導入(Rocky Linux)

今後はRockyを使う機会も増える事だろうし、どうせなのでRocky Linuxにしようと思う。

どうやらWSL用のイメージを配布してくれちゃってるみたいで大変ありがたい。

WSL2でRockyLinux with systemd

このページにあるRocky 9: Base x86_64 イメージを使わせていただく。

ダウンロードして来てwslコマンドでインポートすればいいのね。

wsl --import <machine-name> <path-to-vm-dir> <path-to/rocky-9-image.tar.xz> --version 2

VMを入れる場所を作って、こんな感じか。

mkdir d:\VMs\RockyLinux-9-Base
wsl --import RockyLinux-9-Base d:\VMs\RockyLinux-9-Base z:\Rocky-9-Container-Base.latest.x86_64.tar.xz --version 2

で、Windowsターミナルを再起動してみると、ちゃんと現れてくれるので早速起動。

wsl2_systemd_01

さっくり起動したので早速systemdを入れてみる。

配布されているBaseイメージではsystemdが入って無かった・・・

dnf install systemd procps iputils bind-utils iproute

他にも色々入って無かったので入れておく。

systemd:systemctlとかする今回メインのアレ
procps:psコマンドとか入ってるパッケージ
iputils:pingとか入ってるパッケージ
bind-utils:digとかnslookupとか入ってるパッケージ
iproute:ipとかssとか(ifconfigとかnetstatとか)入ってるパッケージ

とりあえずsystemd以外の一通りのコマンドが動作する事を確認しまして、、

systemd を動かせる様にする

凄く簡単な模様。

/etc/wsl.conf に設定を書くだけ。

[boot]
systemd=true

デフォルトではファイルが無いのでvi等のテキストエディタ等で作成する。

そんで、一回WSL系のインスタンスを停止して、再び起動すればいいらしい。

マジか・・・サービス精神旺盛過ぎる

さてここで

※注意:systemdがインストールされてない状態でこれをやると、二度と起動出来なくなる。

はいやりました。

はい愚か者はワタクシです。

さて。

wslの規定のインスタンスをRockyに変更しておく

ついでにwslの規定インスタンスを、UbuntuからRockyに変更。

wsl --set-default RockyLinux-9-Base

wslコマンドで確認。

wsl2_systemd_02

ちゃんと※印がRockyになりますた。

動作チェック

wslインスタンスを一度終了し、再度起動してみる。

wsl -t RockyLinux-9-Base

こんな感じで。

で、再度起動して以下のコマンドで確認。

systemctl list-unit-files --type=service
wsl2_systemd_03

おー、ちゃんと出来てますね。

これは捗る事間違いなし。

WSL2で動作して起動は神速、systemdまでちゃんと動作してくれるなら、いちいちVirtualBoxでVM作って起動したりよりも遥かに生産性が高い。

ちょっとしたテストや調べもの、コンソール代わりなんかにとても良いですね。

VSCodeのコンソールをコレにしちゃってもいい位だわん。

.wslconfig で利用メモリを制限しておく

さて、そんな美味い話ばかりではなく

デフォルトだとWSL関連のために「Windows の合計メモリの 50% または 8 GB」らしく8GB使われてしまう。

2GB程度でいい。

というわけでwsl2のコンフィグファイルを作って書いておく。

場所は、%UserProfile%直下。

具体的には、C:\Users\<User Name>\.wslconfig

こちらもデフォルトではファイルが無いのでメモ帳等のテキストエディタ等で作成する。

[wsl2]
memory=2GB
swap=4GB

ウチではこの様にした。

こちらはwslを「全て」シャットダウンして起動しなおさないと反映されないらしい。

ってんでシャットダウンコマンド。

wsl --shutdown

※このコマンドは、全てのwslインスタンスが停止するらしいので注意。
 Docker Desktopとか全部停止しる。

さて、、どうかな。

wsl2_systemd_04

うんキッカリと2GBで収まってくれている模様。

これでHDDガリガリ悩まされなくていい。

しかしsystemdが使えるとなると、ただのコンソール目的ではなくちゃんとLinuxの環境として使っていける気がする。

Dos窓やPowerShellの代わりやVSCodeのターミナルとして起動するか、Dockerのホストにするか、

Windows Terminalの規定のシェルにしてもいい。

そんな感じ。

今回のsystemd対応は大変環境を良くしてくれまする。

Microsoftさん、ありがたや。