WindowsのWSL2がsystemdに対応したらしいので、Rocky Linux9入れて使ってみる
サクサク起動できて億劫にならない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ターミナルを再起動してみると、ちゃんと現れてくれるので早速起動。
さっくり起動したので早速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コマンドで確認。
ちゃんと※印がRockyになりますた。
動作チェック
wslインスタンスを一度終了し、再度起動してみる。
wsl -t RockyLinux-9-Base
こんな感じで。
で、再度起動して以下のコマンドで確認。
systemctl list-unit-files --type=service
おー、ちゃんと出来てますね。
これは捗る事間違いなし。
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とか全部停止しる。
さて、、どうかな。
うんキッカリと2GBで収まってくれている模様。
これでHDDガリガリ悩まされなくていい。
しかしsystemdが使えるとなると、ただのコンソール目的ではなくちゃんとLinuxの環境として使っていける気がする。
Dos窓やPowerShellの代わりやVSCodeのターミナルとして起動するか、Dockerのホストにするか、
Windows Terminalの規定のシェルにしてもいい。
そんな感じ。
今回のsystemd対応は大変環境を良くしてくれまする。
Microsoftさん、ありがたや。
ディスカッション
コメント一覧
まだ、コメントがありません