Kat*_*l3s 5 centos linux-kernel windows-subsystem-for-linux redhat-enterprise-linux wsl2
当我在 Windows PC 上安装 WSL2 后,我就安装了一个改编的 CentOS 8.2版本。当我探索它时,我发现我可以开箱即用地在主机的 NTFS 文件系统中进行读写。它也连接到互联网,但我无法找到管理连接的方法;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...
,然后我了解到Windows 应用商店正在提供“Fedora Remix for WSL”,价格为 9.99 美元,并注明:
以下软件包已从 Fedora Remix for WSL 的默认安装中删除: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
?
小智 5
WSL2 本质上是一个使用真实 Linux 内核和自定义 init 系统的 Linux VM。这个自定义内核知道如何使用特殊驱动程序访问 Windows 文件系统,并通过虚拟网络适配器接收互联网访问。
由于您没有使用系统标准 init 系统(即sysvinit
或systemd
),因此您没有启动系统通常启动的所有服务,例如dbus
。因此,运行systemctl
无法启动或停止服务,并且需要dbus
运行的程序需要您手动启动它,或者使用合适的 sysvinit 样式脚本。后者应该适用于几乎任何初始化系统。
WSL2 使用这个自定义 init 系统,因为它使启动几乎是瞬时的;否则,您必须等待 Linux 系统完全启动才能正常工作。因此,不需要设置完整 Linux 系统或仅用于引导的软件包。
您使用的防火墙(如果有)应该在 Windows 系统上配置,而不是在 Linux 系统上配置。如果您愿意,您可能可以直接使用nftables
or ,但是任何依赖都是正确的。出于类似的原因,您不会使用网络管理器,因为您的网络访问由 Windows 控制,并且会反映 Windows 网络堆栈的所有功能。iptables
systemd
我不清楚为什么 SELinux 不能在 WSL 中工作。这可能是因为 Microsoft Linux 内核没有使用它来构建或启用它,也可能是因为其他操作系统不需要 SELinux(例如,Debian 和 Ubuntu 更喜欢 AppArmor)并且它们不想处理多个模块,或者可能是 drvfs(WSL 文件系统)不支持所需的功能。
如果您想要功能齐全的 Linux 体验,那么您应该安装一个实际的 Linux 发行版。如果您想使用 Windows 系统并为 Linux 开发或运行应用程序而无需双启动,或者如果您必须使用 Windows 但更喜欢 Linux,那么 WSL2 非常有用,但它并不能替代完整的 Linux 系统。
归档时间: |
|
查看次数: |
1913 次 |
最近记录: |