So beheben Sie das Problem, dass WSL2 Ihre wsl.conf-Bootbefehle ignoriert

Du hast also einen Boot-Befehl in die wsl.conf eingefügt, die Datei gespeichert, das Terminal neu gestartet und erwartet, dass deine Netzwerkeinstellungen funktionieren. Aber Fehlanzeige – WSL ignoriert die Datei einfach, und deine Änderungen zeigen keinerlei Wirkung. Das ist ziemlich frustrierend, weil man das Gefühl hat, alles richtig gemacht zu haben. Glaub mir, du bist mit dieser Frustration nicht allein. Das Merkwürdige daran? WSL kann beim Lesen von Konfigurationen ziemlich trickreich sein, und der Neustart beendet nicht immer alles vollständig. Manchmal läuft es einfach im Hintergrund weiter und verwendet noch die alten Einstellungen. Deshalb hast du auch nach einem Neustart noch dieselben Probleme. Wenn deine Boot-Befehle also nicht funktionieren, findest du hier mögliche Ursachen – und Lösungsansätze. Achte darauf, ob du die richtigen Dateien bearbeitest und WSL vollständig beendet hast, bevor du es erneut testest.

So beheben Sie Probleme mit WSL-Bootbefehlen und Netzwerkeinstellungen, die nicht angewendet werden

Warum das passiert

Folgendes ist wichtig: WSL2 verwendet zwei verschiedene Konfigurationsdateien, die unterschiedliche Funktionen haben. Die eine ist die wsl.conf, die sich im Linux-Verzeichnis befindet – üblicherweise unter `/usr/bin` /etc/wsl.conf. Die andere ist die .wslconfig, die sich im Windows-Benutzerordner befindet, beispielsweise unter `/usr/bin` C:\Users\YourName\.wslconfig. Wenn Sie versehentlich eine Einstellung in die falsche Datei einfügen, ignoriert WSL diese einfach stillschweigend – ohne Warnung oder Fehlermeldung. Windows macht es einem ja schließlich absichtlich schwer. Außerdem läuft WSL im Hintergrund weiter, selbst nachdem Sie das Terminal geschlossen haben – ein „Neustart“ ist also kein richtiger Neustart. Die alte Sitzung bleibt einfach bestehen und ignoriert Ihre neue Konfiguration. Hinzu kommt, dass Boot-Befehle sehr früh ausgeführt werden – manchmal sogar, bevor das Netzwerk bereit ist –, sodass ein zu früh ausgeführter Befehl keine Wirkung hat. Warum, weiß ich nicht, aber es passiert einfach.

Lösung 1 – Stellen Sie sicher, dass Sie die richtigen Konfigurationsdateien bearbeiten.

Das ist ein häufiger Fehler. Viele tragen ihre Boot-Befehle oder Netzwerk-Flags in die wsl.conf ein, obwohl sie in die.wslconfig gehören, oder umgekehrt. So überprüfen Sie das:

  • Öffne dein Linux-Terminal.
  • Führen Sie den Befehl aus cat /etc/wsl.conf. Dadurch wird der Inhalt der Datei ausgegeben, sodass Sie überprüfen können, ob Ihre Einstellungen vorhanden sind.
  • Wenn Sie Ihre Boot -Befehle oder -Flags wie diese sehen generateResolvConf, befinden sie sich am richtigen Ort. Andernfalls verschieben Sie sie.
  • Drücken Sie die Eingabetaste Windows + R, geben Sie %UserProfile% ein und drücken Sie die Eingabetaste – dadurch wird Ihr Windows-Benutzerordner geöffnet.
  • Suchen Sie dort nach der Datei.wslconfig. Dort befinden sich die Netzwerk- und Ressourceneinstellungen (wie z. B.memory, swap, networkingMode).

Falls sich die Einstellungen in der falschen Datei befinden, kopieren Sie sie einfach in die richtige Datei. Dadurch werden die meisten unbemerkten Fehler behoben.

Lösung 2 – WSL vor dem Testen von Änderungen ordnungsgemäß herunterfahren

Der nächste Schritt ist entscheidend: WSL läuft im Hintergrund weiter, nachdem Sie das Terminalfenster geschlossen haben. Wenn Sie es also einfach wieder öffnen und erwarten, dass die Änderungen übernommen werden, ist das ziemlich sinnlos. Die Lösung besteht darin, WSL vollständig zu beenden.

  • Schließen Sie alle Linux-Terminalfenster.
  • Öffnen Sie PowerShell. Starten Sie nicht einfach Ihr Terminal neu, sondern tun Sie dies über PowerShell.
  • Geben Sie Folgendes ein: wsl --shutdownund drücken Sie Enter.
  • Warten Sie etwa 8 Sekunden – diese Pause wird auch in der Microsoft-Dokumentation empfohlen. Aus irgendeinem Grund benötigt WSL diese Zeit, um vollständig herunterzufahren.

Das ist zwar etwas ungewöhnlich, aber notwendig. Manchmal werden dadurch die alten Einstellungen endgültig gelöscht. Wiederholen Sie den Vorgang und prüfen Sie, ob Ihre Änderungen nach dem Neustart Ihrer Distribution nun tatsächlich gespeichert sind.

Lösung 3 – Stellen Sie sicher, dass WSL aktualisiert ist und Boot-Befehle unterstützt.

Die Funktion „Bootbefehle“ ist zwar nicht alt, benötigt aber eine bestimmte Version. Wenn Ihre WSL-Version veraltet ist, wird dieser Abschnitt einfach übersprungen, ohne Sie darüber zu informieren.

  • Öffnen Sie PowerShell.
  • Ausführen: wsl --version. Wenn ein Wert unter 0, 67, 6 angezeigt wird, sind Sie im Rückstand.
  • Wenn ein Fehler auftritt – das heißt, der Befehl wird nicht erkannt – verwenden Sie eine ältere, integrierte Version von WSL, die diese Funktion überhaupt nicht unterstützt.

Zum Aktualisieren führen Sie folgenden Befehl aus: wsl --update. Führen Sie anschließend erneut das Herunterfahren durch ( wsl --shutdown), warten Sie 8 Sekunden und starten Sie Ihre Distribution neu. Bei manchen Konfigurationen bewirkt dies eine deutliche Verbesserung.

Lösung 4 – Verhindern, dass WSL Ihre DNS-Einstellungen überschreibt

Manchmal funktionieren Ihre Boot-Befehle zwar, werden aber überschrieben, weil WSL /etc/resolv.confbei jedem Start neu erstellt wird. Diese automatisch generierte Datei überschreibt alle manuell eingegebenen DNS-Einstellungen.

  • Führen Sie in Ihrem Linux-Terminal folgenden Befehl aus: sudo nano /etc/wsl.conf.
  • Fügen Sie diese Zeilen unten hinzu:
[network] generateResolvConf = false
  • Speichern Sie mit Ctrl + O, drücken Sie Enter, und beenden Sie dann mit Ctrl + X.
  • Zurück in PowerShell: Führen Sie Folgendes aus: wsl --shutdown, und warten Sie dann 8 Sekunden.
  • Entfernen Sie die automatisch generierten Einträge /etc/resolv.confmit: sudo rm /etc/resolv.conf.
  • Erstellen Sie eine neue Tiny-Datei resolv.confmit Ihrem DNS-Server, z. B.nameserver 8.8.8.8. Speichern Sie sie wie gewohnt.
  • Dies weist WSL an, die Einstellungen /etc/resolv.confunverändert zu lassen, sodass Ihre benutzerdefinierten DNS-Einstellungen erhalten bleiben.

    Lösung 5 – Überprüfen Sie Ihre wsl.conf auf stille Syntaxfehler.

    Die Datei Wsl.conf ist extrem pingelig. Wenn Sie die Syntax falsch schreiben, Klammern vergessen oder Befehle doppelt angeben, werden Ihre Einstellungen stillschweigend ignoriert.

    • Achten Sie darauf, dass die Abschnittsüberschrift exakt [boot]in einer eigenen Zeile mit Klammern steht.
    • Bei mehreren command=Zeilen zählt nur die letzte. Verwenden Sie &&stattdessen die Befehlskette.
    • Zur Erinnerung: Boot-Befehle werden als Root über ausgeführt /bin/sh, daher könnten einige Tricks, die nur in der Bash funktionieren, stillschweigend fehlschlagen.
    • Befehle sollten nicht in Anführungszeichen gesetzt werden – das kann zu Fehlern führen.

    Nachdem Sie die Syntaxfehler behoben haben, führen Sie Folgendes aus: wsl --shutdown, warten Sie 8 Sekunden und testen Sie erneut.

    Lösung 6 – Verwenden Sie einen systemd-Dienst, wenn systemd aktiviert ist.

    Wenn Sie systemd in Ihrer wsl.conf aktiviert haben (die entsprechende systemd=trueZeile), werden Ihre Boot-Befehle frühzeitig ausgeführt, bevor das Netzwerk aktiv ist. Das Problem ist, dass sie möglicherweise ohne Fehlermeldung fehlschlagen, da das Netzwerk noch nicht bereit ist.

    Die Lösung? Verschieben Sie Ihren Befehl in einen systemd-Dienst, der auf das Netzwerk wartet:

    • Erstellen Sie in Ihrem Linux-Terminal eine neue Service-Datei:
    sudo nano /etc/systemd/system/mynetwork.service
  • Fügen Sie dies ein und passen Sie es ExecStartmit Ihrem tatsächlichen Befehl an:
  • [Unit] Description=My network setup After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/path/to/your/command [Install] WantedBy=multi-user.target
  • Speichern Sie mit Ctrl + O, dann Enterbeenden Sie mit Ctrl + X.
  • Aktivieren Sie Ihren Dienst:sudo systemctl enable mynetwork.service
  • Wenn Sie wsl --shutdownIhr Linux-System starten und wieder öffnen, wartet der Befehl, bis das Netzwerk tatsächlich bereit ist.

    Profi-Tipps, die Sie beachten sollten:

    • Halten Sie Ihre Konfigurationsdateien getrennt: wsl.conf für Linux-interne Systeme, .wslconfig für Windows-weite Systeme. Das vermeidet viel Verwirrung.
    • Führen Sie den Befehl wsl --shutdownnach jeder Konfigurationsänderung aus und warten Sie dann etwa 8 Sekunden, bis er vollständig beendet ist, bevor Sie ihn neu starten.
    • Führen Sie den Test wsl --updatealle paar Monate durch; stille Fehler können auftreten, wenn Sie eine alte Version verwenden.
    • Testen Sie Ihre Boot-Befehle zunächst mit etwas Sichtbarem – zum Beispiel durch das Erstellen einer Datei –, um zu sehen, ob sie tatsächlich ausgeführt werden, bevor Sie sich auf Timing oder Netzwerkfunktionen verlassen.

    Andere fragen auch

    Warum wird meine wsl.conf überhaupt nicht gelesen?

    Da WSL hauptsächlich im Hintergrund weiterläuft, werden Änderungen erst nach dem ordnungsgemäßen Beenden wirksam. Führen Sie den wsl --shutdownBefehl in PowerShell aus, warten Sie 8 Sekunden und öffnen Sie WSL anschließend erneut. Stellen Sie außerdem sicher, dass sich die Datei im selben Verzeichnis wie Ihre Distribution befindet /etc/wsl.confund nicht an einem anderen Ort.

    Worin besteht der Unterschied zwischen wsl.conf und.wslconfig?

    Zwei verschiedene Dateien, zwei verschiedene Aufgaben.Die Datei `wsl.conf` befindet sich in jeder Linux-Distribution und regelt Dinge wie Boot-Befehle, DNS und Mounts. Die Datei `.wslconfig` liegt in Ihrem Windows-Benutzerprofil und steuert Dinge wie Arbeitsspeicher, Netzwerkmodus und Auslagerungsdatei. Achten Sie darauf, die richtige Datei zu bearbeiten, sonst ignoriert WSL Ihre Einstellungen.

    Muss ich Windows nach der Vornahme von Konfigurationsänderungen neu starten?

    Nicht unbedingt. Laufen lassen wsl --shutdownund etwa 8 Sekunden warten reicht normalerweise. Das geht schneller als ein kompletter Neustart, aber ja – manchmal muss man es zur Sicherheit tun.

    Hoffentlich hilft das, die Boot-Befehle auszuführen und die Netzwerkeinstellungen zum Laufen zu bringen. Es ist zwar etwas umständlich, aber sobald alles richtig eingestellt und WSL vollständig heruntergefahren ist, bleiben die Konfigurationen in der Regel erhalten. Viel Erfolg – ​​und möge Ihr Netzwerk immer stabil bleiben!