Als jemand der WSL 1 & 2 seit 2017 fast jeden Arbeitstag verwendet, räume ich hier mal auf - das gebashe ist ja zum Teil schlimm
Zu meinem Hintergrund: Ich entwickle vor allem native C/C++ Applikationen für Embedded Anwendungen (RTOS, Embedded Linux) oder Desktop Systeme (Windows / Linux).
Ab und zu kommen Python Anwendungen, Plots, Backends und Webstuff dazu.
Yuuri schrieb:
Der Trick ist Docker komplett in der WSL (2) laufen zu lassen. Docker Desktop kannst du in der Pfeife rauchen, nur unter Mac OS ist es noch schlimmer integriert.
Docker Desktop besitzt seit ~ 2 Jahren ein WSL Backend - mit dem läuft es wunderbar. Die alte Windows Integration war "schwierig" - vor allem wenn man Hardware zur Beschleunigung mit OpenCL / CUDA ansprechen wollte. Das geht jetzt alles sehr smooth.
SavageSkull schrieb:
Und was macht das dann besser, als wenn ich eine "echte" VM aufsetze und da die Linux Distri meiner Wahl drin ausführe?
Irgendwie verstehe ich den Sinn davon noch immer nicht.
WSL ist über das Terminal (ab Windows 11 Standard wenn "cmd" ausgeführt wird - in Win10 nachinstallierbar) in Windows integriert. Hier paar Dinge die mir einfallen, welche so nicht mit einer "echten" VM gehen:
- im cmd/powershell
eintippen, öffnet an der Stelle den jetzigen Folder (cwd) im WSL.
- Umgekehrt öffnet im WSL
eine Eingabeaufforderung im cwd.
- Filesystem im Windows Explorer öffnen (unabhängig ob man im gemounteten Windows Filesystem ist oder im ext4 von WSL). Einfach mit WSL in einen Ordner navigieren und folgenden Command absetzen:
- Umgekehrt kann man im Windows Explorer in der BreadCrumbs Leiste "wsl" eintippen und den jetzigen Folder im WSL Terminal öffnen.
Das sind bisher nur Explorer Tricks um sich noch schneller eine Übersicht zu verschaffen - aber ja, sowas geht mit einer "echten" VM nicht.
Creshal schrieb:
Kann Microsoft
einmal Produkt-Versionen konsistent benennen. Das ist doch nicht mehr auszuhalten.
Das Projekt an sich hiess schon immer WSL:
WSL Github Releases
WSL1 respektive WSL2 sind die Runtime Versionen welche sich grundlegend in der internen Funktion unterscheiden. Nach einer WSL installation - welche sich mittlerweile kinderleicht im cmd erledigen lässt mit
- kann man die Runtime mit
anzeigen.
Wer das 1.0 update holen will kann dies mit
auch sehr einfach erledigen.
Wer noch die WSL1 runtime verwendet, dem empfehle ich auf die WSl2 runtime umzusteigen, Gründe dafür sind:
- Cuda geht endlich
- Grafische Benutzeroberflächen laufen (super wenn man SDL2, gstreamer oder sonst einen X11 Kontext öffnet)
- Filesystemzugriff ist viel schneller
- Das WSL2 backend kann mit allen Linux OS Calls umgehen.
Es gibt aber dennoch Gründe auf dem WSL1 Backend zu bleiben, für mehr Infos:
MS WSL1 vs WSL2 comparison
tomgit schrieb:
Na gut, ich war mir sicher, dass Windows mir damals HyperV auch mit WSL1 aufnötigen wollte, aber ist auch Ewigkeiten her
WSL1 brauchte damals kein Hyper-V
mibbio schrieb:
Thema Docker: man kann aus WSL heraus sogar auf ein unter Windows laufendes Docker zugreifen, wenn man in den Docker-Einstellungen den entsprechenden Haken setzt.
Genau - wenn man Docker installiert hat auf Windows inklusive WSL backend, so wird einem Docker als Distribution angezeigt (zB. mit dem oben erwähnten List Befehl (wsl -l -v)).
Man sieht diese auch im Windows Explorer:
In diesem Beispiel sind zwei Distributionen installiert - beide nutzen das WSL backend.
Creshal schrieb:
Und wenn alles gut geht für Microsoft, wächst die nächste Generation "Ich bin professioneller Webentwickler, ich habe 27 Stunden Berufserfahrung aus zwei Bootcamps!"-Webshits mit WSL auf und versteht gar nicht, was VMs oder Linux sind, und denken sie brauchen für alles Microsoft-Lizenzen. Ob das in der Praxis auch so funktioniert, ist die andere Frage…
Ich sehe du hast einen Hass auf Webentwickler - Danke fürs Mitteilen
Seit es WSL gibt, habe ich jedoch auch keine VM mehr gestartet. Für was auch? Wenn ich volle posix system call compatibilty habe, brauch es das gar nicht mehr.
Ein natives Linux habe ich hingegen ab und zu doch gebootet, denn WSL kann noch nicht alles, zB SD Karten oder externe ext4 Datenträger über USB-C mounten.
Jetzt aber zur Frage, die alle haben die es bis hier hin geschafft haben, wieso WSL? Hier mal meine Liste:
- C/C++ entwickeln in Visual Studio ist immer noch am angenehmsten. Einfach ein Linux Remote Projekt erstellen und man kann loslegen - auch ohne die Hardware, denn GCC / GDB kann man im WSL nutzen Und das egal ob die Target Hardware ARM64 oder sonst eine Architektur hat So kann man Logik bereits lokal testen ohne einen komplizierten Testaufbau.
- SSH & SCP! Statt Putty und WinSCP zu verwenden, kann man wie in Linux gewohnt die Nativen Tools verwenden
- Für Python Entwicklung ist die Windows Welt grauenhaft - schon nur bei Virtuellen Environments / Conda Environments wird da ganz hässlich über den Path getrickst damit was läuft. Das ist im Linux Umfeld eleganter gelöst & man kann Bibliotheken sehr einfach dazu installieren (vor allem Cuda ML Stuff) ohne dass man diese global installieren muss.
Wieso nicht natives Linux?
- Meiner Meinung nach ist die Windows Oberfläche immer noch besser als alles was KDE / Gnome / Unity und Rest bieten.
- Man kann seinen Rechner (vor allem im Homeoffice war dies relevant) am Tag zum Arbeiten und am Abend zum Zocken nutzen.
- Die Office Suite ist, wenn man denn mal Word statt LaTEX verwenden muss, LibreOffice überlegen.
- (Mein ganz persönlicher Grund welchen man nicht auf andere projizieren kann: Ich bin schneller in Windows! Denn wenn mal im Linux etwas nicht geht, und ja GRUB hatte auch schon mal keine Lust, dann verliere ich Zeit für das Troubleshooting, welche mir dann im Projekt fehlt. Ein OS muss eben doch einfach laufen, auch ohne Liebe
und die braucht Linux meistens mehr als Windows - vor allem auf einem Notebook
)