Wie kann ich die WSL-Linux-Umgebung beibehalten, während ich einen Windows 10-Systemreset durchführe?

Wie kann ich die WSL-Linux-Umgebung beibehalten, während ich einen Windows 10-Systemreset durchführe?

Dieser Beitragerwähnt die einfache Wiederherstellung des WSL-Verzeichnisses, teilweise wiederhergestelltes WSL, allerdings mit einigen Funktionsproblemen.Dieser Beitragbietet allgemeine Informationen zum Sichern und Wiederherstellen einer Linux-Installation.Dieser Beitragsagt, dass %appdata% tatsächlich in Ihren Windows.old-Ordner verschoben wird, der nach dem Zurücksetzen erstellt wird und Ihre „alten“ Dateien enthält. ) Welche Informationen könnten beim Experiment des ersten Posters verloren gegangen sein? Gibt es Registrierungseinstellungen oder Konfigurationsdateien, mit denen sich das Linux-Stammverzeichnis ( %USERPROFILE%/AppData/Local/lxss) einfach wiederherstellen lässt?

BEARBEITEN

Meine Frage wurde als Duplikat von markiertWie kann ich das Linux-Subsystem für Windows 10 sichern (WSL), bevor ich das System zurücksetze oder neu installiere?.

Allerdings ging es bei dieser Frage nur darum, wie man die Installation sichert – im Grunde genommen, sie tarnen und irgendwo speichern. Ich frage ausdrücklich, wie man sie wiederherstellt.

Antwort1

Sehr alte Frage, die heute wieder hochgestuft wurde, und die Dinge haben sich in den 4 Jahren seit der Fragestellung sehr verändert. Ich habe vor ein paar Jahren tatsächlich einen „Reset“ an meinem Alltagsauto durchgeführt und hatte eine ähnliche Situation.

Damals konnte man eigentlich nur kopieren, wasDatenaus dem alten Dateisystem. Als diese Frage gestellt wurde, befand sich dieses Dateisystem normalerweise (wie Sie in der Frage erwähnen) irgendwo unter %USERPROFILE%\AppData\Local\lxss. Ich glaube Ihnen das einfach, da ich mich nicht genau erinnere und keine so alten Installationen mehr habe.

Irgendwann, wahrscheinlich als WSL begann, mehrere Distributionen zu unterstützen, änderte sich der Ordner WSL1 in %USERPROFILE%\AppData\Local\Packages\<PackageName>\LocalState\rootfs. Als ich vor einigen Jahren einen Reset auf meinem PC durchführte, habe ich tardieses Verzeichnis erstellt und dann nach dem Reset und der WSL-Neuinstallation einzelne Dateien wiederhergestellt (aber nicht das gesamte Dateisystem, wie Sie fragen). Ich habe das nicht in Betracht gezogen Windows.old, aber das wäre auch eine gültige Möglichkeit gewesen, an diese Dateien zu gelangen.

Heutzutage, ja,VorEin Reset wsl --exportkann wie in der anderen Antwort hier beschrieben durchgeführt werden.

Aber wenn der Benutzer nicht daran denkt, dies zu tun,MaiEs kann immer noch möglich sein, das Dateisystem nach dem Reset mit vollständig wiederherzustellen Windows.old. Es gibt zwei Szenarien:

  • WSL2 macht dies ziemlich einfach, da das gesamte Dateisystem in einem virtuellen Laufwerk in gespeichert ist %USERPROFILE%\AppData\Local\Packages\<PackageName>\LocalState\rootfs\ext4.vhdx. Siehediese Antwortfür Details, aber Sie können das grundsätzlich einfach ext4.vhdxaus Windows.oldeiner neuen Installation herauskopieren und in diese einfügen.

  • Mit WSL1 bin ich90 % zuversichtlichaus der Sie eine WSL-Installation Windows.oldmit der folgenden Methode wiederherstellen können.

    1. Installieren Sie zunächst eine Distribution aus dem Store. Ich weiß, Sie möchten Ihrealtinstallieren, aber wir werden dafür diese neue Installation verwenden. Sie können die Store-Distribution jederzeit deinstallieren, wenn wir fertig sind.

    2. Starten Sie diese Distribution.

    3. Erstellen Sie /etc/wsl.confmit Folgendem:

      [automount]
      options = "metadata"
      
    4. Nächste,

      cd /mnt/C/Windows.old/Users/<yourusername>/AppData/Local/Packages/<PackageName>/LocalState/rootfs
      

      <PackageName>hängt von Ihrer Distribution ab, beginnt aber Canonical...bei Ubuntu-Distributionen mit . Wenn Ihre WSL-Installation alt genug ist, ist es möglicherweise /mnt/C/Windows.old/Users/<yourusername>/AppData/Local/lxss. Wenn Sie lsdies tun, möchten Sie das /Verzeichnis dieser Installation sehen.

    5. Aus diesem Verzeichnis heraus tar cvf recovery.tar .. Die Installation von WSL1 dauert eine Weile.

    6. sudo mv recovery.tar <somewhere>sonst etwas auf dem C:Laufwerk; so etwas wie /mnt/c/Users/<youruser>/Documents/wsl(das kommt dem nahe, was ich dafür verwende). Das wird der neue Speicherort der Distribution sein, wenn wir fertig sind.

    7. WSL beenden

    8. Navigieren Sie in PowerShell zu dem Verzeichnis, in dem Sie platziert haben recovery.tar.

    9. mkdir OldUbuntu(oder wie auch immer Sie es nennen möchten)

    10. wsl --import OldUbuntu .\OldUbuntu .\recovery.tar. Der Befehl verwendet optional auch ein --version 1/2(am Ende), um die WSL-Version zu erzwingen.

    11. Machen Sie dies bei Bedarf mit zu Ihrer Standard-WSL-Installation wsl --set-default OldUbuntu.

    12. Starten Sie die Distribution mit wsl ~ -d OldUbuntu. Das -d/--distributionArgument ist nur erforderlich, wenn Sie es oben nicht als Standard festgelegt haben.

    13. Erstellen Sie eine /etc/wsl.confmit folgendem Inhalt:

      [user]
      default=username
      

      Bearbeiten Sie usernamees so, dass es Ihr Benutzername ist, den Sie vor dem Zurücksetzen von Windows in der Distribution verwendet haben.

    14. Deinstallieren Sie optional die Distribution, die wir installiert und zum Erstellen des Tarballs verwendet haben.

    Das sollte es sein. Ich habe das tatsächlich in einem etwas anderen Szenario getestet. Ich habe eine WSL1-Instanz installiert und dann den oben beschriebenen Prozess von einer anderen Instanz aus durchgeführt. --importNachdem ich die oben genannten Schritte ausgeführt hatte, konnte ich es erfolgreich durchführen. Datei-/Verzeichnisbesitz und Berechtigungen scheinen korrekt zu sein, ebenso wie Symlinks. Meine einzige Sorge ist, ob eine wirklich alte WSL-Distribution möglicherweise andere Metadaten verwendet.

    Warnung: Bitte versuchen Sie dies nur auf einem WSL1-Dateisystem, wenn Sie keine andere Möglichkeit haben, es wiederherzustellen. Der Zugriff auf Dateien in einem WSL1-Dateisystem über %AppData%(oder gleichwertig) istbekanntermaßen Korruption verursachen. Deshalb habe ich selbst eine Wegwerfinstanz erstellt, um dies auszuprobieren.

    Randnotiz: Sie könnten darüber nachdenken, tardie Dateien von Windows aus zu importieren Windows.old, anstatt sich die Mühe zu machen, eine weitere WSL-Instanz zu installieren. Meine Sorge hier ist, dass dies nicht dieLinuxwsl --importEigentumsrechte und Berechtigungen, was beim Ausführen wahrscheinlich zu einer beschädigten Installation führt .

verwandte Informationen