# WSL — Linux-Distributionen unter Windows verwalten

> Praxis-Guide zu WSL: Linux-Distributionen unter Windows installieren, starten, sichern und konfigurieren – inklusive WSL 2, Netzwerk und Dateizugriff.

Source: https://www.jpkc.com/db/cheatsheets/shell-system/wsl/

<!-- PROSE:intro -->
Mit dem Windows Subsystem for Linux (WSL) führst du vollwertige Linux-Distributionen direkt unter Windows aus – ohne Dual-Boot und ohne klassische virtuelle Maschine. WSL 2 nutzt dafür einen echten Linux-Kernel in einer schlanken, hochintegrierten VM, sodass Dateisystem, Netzwerk und Windows-Programme nahtlos zusammenspielen. Das `wsl`-Kommando ist deine Schaltzentrale: Es installiert Distributionen, startet und stoppt sie, sichert sie per Export und steuert Ressourcen. Dieser Guide zeigt dir die Befehle, die du im Alltag wirklich brauchst.
<!-- PROSE:intro:end -->

## Installation & Einrichtung

`wsl --install` — Installiert WSL mit der Standard-Distribution (Ubuntu).

```bash
wsl --install
```

`wsl --install -d <distro>` — Installiert eine bestimmte Linux-Distribution.

```bash
wsl --install -d Debian
```

`wsl --list --online` — Listet die zur Installation verfügbaren Distributionen auf.

```bash
wsl --list --online
```

`wsl --update` — Aktualisiert den WSL-Kernel auf die neueste Version.

```bash
wsl --update
```

`wsl --version` — Zeigt WSL-Version, Kernel-Version und WSLg-Version.

```bash
wsl --version
```

`wsl --set-default-version 2` — Legt WSL 2 als Standard für neue Distributionen fest.

```bash
wsl --set-default-version 2
```

## Auflisten & Status

`wsl --list` — Listet die installierten Distributionen auf.

```bash
wsl --list
```

`wsl --list --verbose` — Listet Distributionen mit Zustand, WSL-Version und Standard auf.

```bash
wsl --list --verbose
```

`wsl --list --running` — Listet nur die aktuell laufenden Distributionen auf.

```bash
wsl --list --running
```

`wsl --status` — Zeigt die WSL-Konfiguration und die Standard-Distribution.

```bash
wsl --status
```

## Starten, Stoppen & Ausführen

`wsl` — Startet die Standard-Distribution.

```bash
wsl
```

`wsl -d <distro>` — Startet eine bestimmte Distribution.

```bash
wsl -d Debian
```

`wsl -u <user>` — Startet als ein bestimmter Benutzer.

```bash
wsl -u root
```

`wsl -e <command>` — Führt einen Befehl in der Standard-Distribution aus.

```bash
wsl -e ls -la /home
```

`wsl -d <distro> -e <command>` — Führt einen Befehl in einer bestimmten Distribution aus.

```bash
wsl -d Ubuntu -e cat /etc/os-release
```

`wsl --shutdown` — Fährt alle laufenden Distributionen und die WSL-VM herunter.

```bash
wsl --shutdown
```

`wsl --terminate <distro>` — Beendet eine bestimmte Distribution.

```bash
wsl --terminate Ubuntu
```

## Distributionen verwalten

`wsl --set-default <distro>` — Legt die Standard-Distribution fest.

```bash
wsl --set-default Debian
```

`wsl --set-version <distro> 2` — Konvertiert eine Distribution zu WSL 2 (oder 1).

```bash
wsl --set-version Ubuntu 2
```

`wsl --unregister <distro>` — **Destruktiv:** Hebt die Registrierung einer Distribution auf und löscht sie samt allen Daten unwiderruflich.

```bash
wsl --unregister Ubuntu
```

## Importieren & Exportieren

`wsl --export <distro> <file>` — Exportiert eine Distribution als .tar-Archiv.

```bash
wsl --export Ubuntu ubuntu-backup.tar
```

`wsl --export <distro> <file> --vhd` — Exportiert als virtuelle .vhdx-Festplatte.

```bash
wsl --export Ubuntu ubuntu-backup.vhdx --vhd
```

`wsl --import <name> <path> <file>` — Importiert eine Distribution aus einem .tar-Archiv.

```bash
wsl --import MyUbuntu C:\WSL\MyUbuntu ubuntu-backup.tar
```

`wsl --import <name> <path> <file> --vhd` — Importiert aus einer virtuellen .vhdx-Festplatte.

```bash
wsl --import MyUbuntu C:\WSL\MyUbuntu ubuntu-backup.vhdx --vhd
```

`wsl --import-in-place <name> <file>` — Registriert eine vorhandene .vhdx als Distribution.

```bash
wsl --import-in-place MyDistro C:\WSL\ext4.vhdx
```

## Konfigurationsdateien

`/etc/wsl.conf` — Einstellungen pro Distribution (Automount, Netzwerk, Benutzer, Boot).

```bash
[user]
default=myuser

[boot]
systemd=true
```

`%USERPROFILE%\.wslconfig` — Globale WSL-2-Einstellungen (Arbeitsspeicher, CPU, Swap, Netzwerk).

```bash
[wsl2]
memory=8GB
processors=4
swap=4GB
```

`[boot] systemd=true` — Aktiviert systemd in der wsl.conf (WSL 2, Windows 11).

```bash
echo -e '[boot]\nsystemd=true' | sudo tee /etc/wsl.conf
```

`[automount] options = "metadata"` — Aktiviert Linux-Dateirechte auf Windows-Laufwerken.

```bash
[automount]
options = "metadata,uid=1000,gid=1000,umask=022"
```

`[network] generateResolvConf = false` — Verwendet eigenes DNS statt der automatisch erzeugten resolv.conf.

```bash
[network]
generateResolvConf = false
```

## Dateisystem & Interop

`/mnt/c/` — Greift aus WSL auf das Windows-Laufwerk C: zu.

```bash
ls /mnt/c/Users/
```

`\\wsl$\<distro>\` — Greift aus dem Windows-Explorer auf das WSL-Dateisystem zu.

```bash
explorer.exe \\wsl$\Ubuntu\home\user
```

`wslpath '<windows-path>'` — Konvertiert einen Windows-Pfad in einen WSL-Pfad.

```bash
wslpath 'C:\Users\me\Documents'
```

`wslpath -w '<linux-path>'` — Konvertiert einen WSL-Pfad in einen Windows-Pfad.

```bash
wslpath -w /home/user/project
```

`explorer.exe .` — Öffnet das aktuelle WSL-Verzeichnis im Windows-Explorer.

```bash
explorer.exe .
```

`cmd.exe /c <command>` — Führt einen Windows-Befehl aus WSL heraus aus.

```bash
cmd.exe /c 'echo %COMPUTERNAME%'
```

`powershell.exe -c '<command>'` — Führt einen PowerShell-Befehl aus WSL heraus aus.

```bash
powershell.exe -c 'Get-Process | Select -First 5'
```

## Netzwerk & Datenträger

`wsl hostname -I` — Zeigt die IP-Adresse von WSL.

```bash
wsl hostname -I
```

`wsl --mount <disk> --bare` — Hängt eine physische Festplatte an WSL 2 an.

```bash
wsl --mount \\.\PHYSICALDRIVE1 --bare
```

`wsl --mount <disk> --partition <n> --type ext4` — Bindet eine bestimmte Partition mit einem Dateisystemtyp ein.

```bash
wsl --mount \\.\PHYSICALDRIVE1 --partition 1 --type ext4
```

`wsl --unmount <disk>` — Trennt eine eingebundene Festplatte von WSL.

```bash
wsl --unmount \\.\PHYSICALDRIVE1
```

<!-- PROSE:outro -->
## Fazit

WSL macht Linux unter Windows alltagstauglich: Mit wenigen `wsl`-Befehlen installierst, startest und sicherst du Distributionen, während WSL 2 dank echtem Kernel und schlanker VM nahezu native Performance liefert. Für den Alltag genügen meist `wsl --install`, `wsl -l -v`, `wsl -d <distro>` und `wsl --shutdown`. Mit Vorsicht zu genießen ist dagegen `wsl --unregister <distro>`: Es löscht die Distribution samt allen Daten **unwiderruflich** – sichere sie vorher mit `wsl --export` und transportiere sie bei Bedarf per `wsl --import` auf einen anderen Rechner. Feinheiten wie Speicherlimits, systemd oder DNS steuerst du zentral über `.wslconfig` und `wsl.conf`.

## Weiterführende Links

- [WSL-Dokumentation (Microsoft Learn)](https://learn.microsoft.com/de-de/windows/wsl/) – offizielle deutschsprachige Anleitung zu Installation, WSL 2 und Konfiguration
- [Grundlegende WSL-Befehle](https://learn.microsoft.com/de-de/windows/wsl/basic-commands) – vollständige Referenz aller `wsl`-Kommandos und Optionen
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [wslg](https://www.jpkc.com/db/cheatsheets/shell-system/wslg/) – Linux-GUI-Apps unter WSL 2 per WSLg ausführen
- [powershell](https://www.jpkc.com/db/cheatsheets/shell-system/powershell/) – die Windows-Shell, die WSL ansteuert und mit ihr interagiert
- [bash](https://www.jpkc.com/db/cheatsheets/shell-system/bash/) – die Standard-Shell in den meisten WSL-Distributionen

