Welche Einschränkungen bringt WSL[2] für ein Linux-Gastsystem mit sich?

Welche Einschränkungen bringt WSL[2] für ein Linux-Gastsystem mit sich?

Sobald ich WSL2 auf meinem Windows-PC hatte, installierte ich einCentOS 8.2 angepasstVersion. Als ich es erkundete, stellte ich fest, dass ich sofort im NTFS-Dateisystem des Hosts lesen und schreiben konnte. Es war auch mit dem Internet verbunden, aber ich konnte keine Möglichkeit finden, die Verbindung zu verwalten. Ich konnte Network Manager installieren, aber dann erhielt ich jedes Could not create NMClient objectMal, wenn ich nmcliden Befehl ausführte, eine Fehlermeldung. Ich habe SELinux ( ) nicht gefunden getenforce. Ich habe Firewalld installiert, aber dann firewall-cmdwurde eine Fehlermeldung ausgegeben Failed to connect to socket /run/dbus/system_bus_socket. Dann erfuhr ich, dass einsystemctlSystem has not been booted with systemd...„Fedora-Remix für WSL“wurde für 9,99 $ im Windows App Store mit dem Hinweis angeboten:

Die folgenden Pakete wurden aus der Standardinstallation von Fedora Remix für WSL entfernt: grub, plymouth, kernel, sssd, linux-firmware, dracut, parted, e2fsprogs, iprutils, ppc64-utils, selinux-policy, policycoreutils, sendmail, firewalld, fedora-release, fedora-logos und fedora-release-notes.

Die Hauptfrage lautet also: Wie wird die Linux-Funktionalität durch WSL eingeschränkt?

Was uns dann interessiert, ist natürlich, wie wir sie umgehen können: Meine erste Sorge ist: Ist die Verbindung zum Internet sicher? Mir scheint, dass es keine Firewall gibt, die Leute davon abhält, auf meinen Host-PC zuzugreifen, wenn sie sich über einen Dienst mit meinem WSL Linux verbinden können. Bezüglich dessen, was ich oben geschrieben habe: Warum erhalte ich diesen Fehler mit nmcli? Ist es irgendwie möglich, SELinux zum Laufen zu bringen? Ist es irgendwie möglich, Einheiten zu verwalten, wie man es mit tut systemctl?

Antwort1

WSL2 ist im Wesentlichen eine Linux-VM, die einen echten Linux-Kernel und ein benutzerdefiniertes Init-System verwendet. Dieser benutzerdefinierte Kernel kann mithilfe spezieller Treiber auf das Windows-Dateisystem zugreifen und erhält seinen Internetzugriff über einen virtuellen Netzwerkadapter.

Da Sie nicht das Standard-Init-System des Systems verwenden (das entweder sysvinitoder ist systemd), starten Sie nicht alle Dienste, die das System normalerweise starten würde, wie dbus. Daher systemctlfunktioniert das Ausführen nicht, um Dienste und Programme zu starten oder zu stoppen, die dbusausgeführt werden müssen. Sie müssen es manuell oder mit einem geeigneten Skript im Sysvinit-Stil starten. Letzteres sollte auf praktisch jedem Init-System funktionieren.

WSL2 verwendet dieses benutzerdefinierte Init-System, da es das Booten nahezu augenblicklich macht. Andernfalls müssten Sie warten, bis das Linux-System vollständig hochgefahren ist, damit alles funktioniert. Pakete, die ein vollständiges Linux-System einrichten oder nur zum Booten erforderlich sind, sind daher nicht erforderlich.

Die Firewall, die Sie verwenden, sollte, sofern vorhanden, auf Ihrem Windows-System konfiguriert werden, nicht auf Ihrem Linux-System. Sie können wahrscheinlich nftablesoder iptablesdirekt verwenden, wenn Sie möchten, aber alles, was auf basiert, systemdist ausgeschlossen. Aus ähnlichen Gründen würden Sie Network Manager nicht verwenden, da Ihr Netzwerkzugriff von Windows gesteuert wird und die Aktionen des Windows-Netzwerkstapels widerspiegelt.

Mir ist nicht klar, warum SELinux in WSL nicht funktioniert. Es kann daran liegen, dass der Microsoft Linux-Kernel es nicht erstellt oder aktiviert, es kann daran liegen, dass andere Betriebssysteme SELinux nicht wollen (z. B. würden Debian und Ubuntu AppArmor bevorzugen) und sie nicht mit mehreren Modulen arbeiten wollen, oder es kann daran liegen, dass drvfs (das WSL-Dateisystem) die erforderlichen Funktionen nicht unterstützt.

Wenn Sie ein voll funktionsfähiges Linux-Erlebnis wünschen, sollten Sie eine echte Linux-Distribution installieren. WSL2 ist großartig, wenn Sie ein Windows-System verwenden und Anwendungen für Linux entwickeln oder ausführen möchten, ohne einen Dual-Boot durchführen zu müssen, oder wenn Sie Windows verwenden müssen, aber Linux bevorzugen, aber es ist kein Ersatz für ein vollständiges Linux-System.

verwandte Informationen