前回記事では、WSL2の機能を使って、Windows 10にRocky Linux 9をインストールしました。インストールしたイメージは Baseイメージ なので、本当に基本的なコマンドとシェルが提供されているという感じです。やりたいことを実現するには、パッケージの追加が必要となります。
Baseイメージだけで何ができる?
bash(シェル)は利用できる
Windowsのコマンドプロンプトから「wsl -d Rocky-9」を実行すると、シェル(bash)が起動してRocky Linux 9に接続することができます。ttyコマンドを実行すると「/dev/pts/0」と表示されるので、仮想端末pts/0で接続していることが分かります。
別のコマンドプロンプトから「wsl -d Rocky-9」を実行すると、同じようにシェルが起動してRocky Linux 9に接続することができます。ttyコマンドを実行すると「/dev/pts/1」と表示されるので、複数のコマンドプロンプトから、マルチセッションでRocky Linux 9に接続することができます。
whichコマンドがない..
cd , pwd, ls コマンドは利用できますが、それらは /bin ディレクトリ (/usr/binのシンボリックリンク)に格納されています。
![](https://runningdog.mond.jp/blog/wp-content/uploads/2024/05/wsl-rocky13.png)
しかし、コマンドの在り処を表示してくれる which コマンドはインストールされていません。不便だ。。。
その他に、ネットワークの状態を確認しようにも ip コマンドもありません。
スクリプトを開発したいけれど、perlコマンドもありません。
ないない尽くしですね。。
pingコマンドはあるので、ネットワークに接続できていることは分かります。
パッケージをインストールする
Baseイメージの中に dnf コマンドはインストールされているので、追加でパッケージをインストールすることにします。
インストール済パッケージグループの確認
# dnf group list
を実行すると、インストール済パッケージグループとインストール可能なパッケージグループの一覧を表示することができます。Installed と表示されるリストが1行もないので、1つのパッケージグループさえインストールされていないことが分かります。
![](https://runningdog.mond.jp/blog/wp-content/uploads/2024/05/wsl-rocky14.png)
Minimal Install をインストール
# dnf -y gropinstall "Minimal Install"
で最小限のパッケージグループをインストールしようとしますが、コンフリクトが発生してエラーになります(いきなり、これかよ..)。
![](https://runningdog.mond.jp/blog/wp-content/uploads/2024/05/wsl-rocky15.png)
# dnf -y --allowerasing groupinstall "Minimal Install"
のように「–allowerasing」を指定して競合パッケージを強制的に置き換えてしまうことにしたら、うまくインストールされました。
![](https://runningdog.mond.jp/blog/wp-content/uploads/2024/05/wsl-rocky16.png)
![](https://runningdog.mond.jp/blog/wp-content/uploads/2024/05/wsl-rocky17.png)
ダウンロードされたパッケージの合計は505MBにもなりました。最初のBaseイメージのサイズが51MB程度だから、約10倍の容量になったということです。
これで、ipコマンド(/usr/sbin/ip) が使えるようになりました。nmcliコマンドは相変わらずエラーになります(Error: Could not create NMClient object: Could not connect: No such file or directory.)。
![](https://runningdog.mond.jp/blog/wp-content/uploads/2024/05/wsl-rocky18.png)
ipコマンドの結果をみると、このホストのIPアドレスが 172.18.101.174/20 であることが確認できます。これはホスト側のWindowsのIPアドレスとは異なるものです。
Windows側でネットワークを確認してみると、vEthernet(WSL) というイーサネットアダプタが 172.18.96.1 で作成されていることが分かりました。Windows側から、172.18.101.174へのping疎通も確認できました。
![](https://runningdog.mond.jp/blog/wp-content/uploads/2024/05/wsl-rocky19.png)
なるほど、WindowsのHyper-V仮想システムが、172.18.96.0/20というサブネットを生成して、そこにRocky-9の仮想マシンが接続されているのですね。。
外部からRocky-9の仮想マシンに直接アクセスしたい場合には、不便ですねえ。。。
Development Toolsをインストール
Minimal Installに続き、Development Toolsをインストールします。
# dnf -y groupinstall "Development Tools"
こちらも無事にインストールできて、perlコマンドも利用できるようになりました。
所感
WSL2上にインストールしたRocky Linux 9のBaseイメージは、本当に最小限のシステムしか入っていないので、自分自身で必要なパッケージをインストールする必要がありました。ここまではOKなのですが、Windowsマシンと同じように、既設のネットワークに直接接続できないのは不便ですね。。Rocky Linuxをクライアントとして利用し、外部のネットワークに接続する際には、WSL2がうまくルーティングしてくれるので困らないのですが、Rocky Linuxでなんらかのサービスを立ち上げて、外部からそのサービスに接続したい場合は、更に一工夫が必要ですね。。
広告主へのリンク
![](https://www19.a8.net/0.gif?a8mat=3Z56RH+BDM8Z6+2HOM+BS629)
コメント