Windows PCにWSL2を導入したらすぐに、CentOS 8.2に適合バージョン。調べてみると、ホストのNTFSファイルシステムをすぐに読み書きできることがわかりました。インターネットにも接続されていましたが、接続を管理する方法がわかりませんでした。Network Managerをインストールできましたが、コマンドCould not create NMClient object
を実行するたびにが表示されましたnmcli
。SELinux( )が見つかりませんでしたgetenforce
。firewalldをインストールしましたが、 がfirewall-cmd
スローされましたFailed to connect to socket /run/dbus/system_bus_socket
。systemctl
エラーが発生します。System has not been booted with systemd...
その後、「WSL 用 Fedora リミックス」Windows アプリ ストアで 9.99 ドルで提供されていましたが、次のような注意書きがありました。
次のパッケージは、WSL 用 Fedora Remix のデフォルト インストールから削除されました: grub、plymouth、kernel、sssd、linux-firmware、dracut、parted、e2fsprogs、iprutils、ppc64-utils、selinux-policy、policycoreutils、sendmail、firewalld、fedora-release、fedora-logos、fedora-release-notes。
それで、主な質問は、WSL によって Linux の機能がどのように制限されるかということです。
次に、当然ながら、私たちが興味を持っているのは、それらを回避する方法です。まず心配なのは、インターネットへの接続は安全かどうかです。何らかのサービスを介して WSL Linux に接続できる場合、ホスト PC に侵入するのを阻止するファイアウォールはないように見えます。上記で書いたことに関して: でそのエラーが発生するのはなぜですかnmcli
? SELinux を実行することは可能ですか? でユニットを管理することは可能ですかsystemctl
?
答え1
WSL2 は、本質的には実際の Linux カーネルとカスタム init システムを使用する Linux VM です。このカスタム カーネルは、特別なドライバーを使用して Windows ファイル システムにアクセスする方法を認識しており、仮想ネットワーク アダプターを介してインターネット アクセスを受け取ります。
sysvinit
システム標準の init システム (または)を使用していないためsystemd
、 のように、システムが通常開始するすべてのサービスが開始されませんdbus
。したがって、 を実行してsystemctl
もサービスを開始または停止することはできません。dbus
の実行を必要とするプログラムは、手動で開始するか、適切な sysvinit スタイルのスクリプトを使用して開始する必要があります。後者は、ほぼすべての init システムで機能するはずです。
WSL2 では、このカスタム init システムを使用するのは、起動がほぼ瞬時に行われるためです。そうでない場合、動作させるためには Linux システム全体が起動するまで待たなければなりません。したがって、完全な Linux システムをセットアップするパッケージや、起動にのみ必要なパッケージは必要ありません。
ファイアウォールを使用する場合は、Linux システムではなく、Windows システムで構成する必要があります。nftables
または をiptables
直接使用することもできますが、 に依存するものはsystemd
使用しないでください。同様の理由で、ネットワーク アクセスは Windows によって制御され、Windows ネットワーク スタックの動作が反映されるため、Network Manager は使用しないでください。
なぜ SELinux が WSL で動作しないのかはわかりません。Microsoft Linux カーネルが SELinux を組み込んでいないか、有効にしていないためかもしれませんし、他のオペレーティング システムが SELinux を必要とせず (たとえば、Debian や Ubuntu は AppArmor を好む)、複数のモジュールを扱いたくないためかもしれませんし、drvfs (WSL ファイル システム) が必要な機能をサポートしていないためかもしれません。
完全に機能する Linux エクスペリエンスを希望する場合は、実際の Linux ディストリビューションをインストールする必要があります。WSL2 は、デュアルブートを必要とせずに Windows システムを使用して Linux 用のアプリケーションを開発または実行したい場合や、Windows を使用する必要があるが Linux を好む場合に最適ですが、完全な Linux システムの代替にはなりません。