
Als ich mit der Entwicklung in begann, WSL
weiß ich nicht warum, aber ich habe Ubuntu-20.04
die App aus dem Microsoft Store installiert, anstatt nur Ubuntu
. Ich weiß, dass der einzige Unterschied darin besteht, dass Ubuntu-20.04
sie nicht automatisch aktualisiert wird, wenn eine neue Ubuntu
Version veröffentlicht wird. Ich möchte einfach nur so vorgehen Ubuntu
wie Ubuntu-20.04
ohne Neukonfiguration. Ich habe darüber nachgedacht, alle Dateien von Ubuntu-20.04
nach zu verschieben Ubuntu
, aber ich weiß nicht, ob das sicher ist. Weiß jemand, wie das geht, was ich versuche? Sollte ich es auch tun?
Bearbeiten: Beide Ubuntu-Versionen laufen. WSL-2
Ich habe es überprüft, wsl -l -v
wie @NotTheDr01ds sagte.
edit 2: Ich möchte meine gesamte Konfiguration von Ubuntu-20.04
bis Ubuntu
einschließlich aller Dateien und installierten Pakete
Antwort1
Warum Sie dies möglicherweise überhaupt nicht tun müssen
Ok, das Wichtigste zuerst. Das ist wahrscheinlich ziemlich unnötig.
Dass sich das „Ubuntu“ (ohne Versionsnummer) im Store automatisch aktualisiert, ist zwar … richtig, in der Realität aber etwas irreführend.
Das ist ein bisschen schwierig zu erklären, aber wenn Sie "Ubuntu" (keine Version) aus dem Store installieren, erhalten Sie tatsächlichzweiDinge:
Ein RootFS-Paket (
install.tar.gz
) inC:\Program Files\WindowsApps\CanonicalGroup...
. Sie können dies sehen, indem Sie eine administrative PowerShell starten und ausführenGet-ChildItem -Recurse 'C:\Program Files\WindowsApps\Canonical*' | Where-Object {$_.Name -eq 'install.tar.gz' } | % { $_.DirectoryName }
.Beim ersten Ausführen (über
ubuntu.exe
) erstellt das Installationsprogramm Ihre eigentliche WSL-Instanz in Ihrem%UserProfile%\AppData\Local\Packages\CanonicalGroup...
.
Wenn es eine neue Version im Store gibt, wird nur das Rootfs-Paket aktualisiert. Esnichtändern Sie Ihre installierteBeispiel. (Kredit und Dank an u/zoredache auf Reddit, dererinnert mich daran.)
Dies ist für die meisten Benutzer ziemlich nutzlos, es sei denn, Sie:
- Heben Sie die Registrierung der Instanz auf (wodurch die gesamte Konfiguration gelöscht wird) und konfigurieren Sie sie neu, indem Sie den
ubuntu.exe
Befehl erneut ausführen. - Möchte dies verwenden,
install.tar.gz
um eine zweite WSL/Ubuntu-Instanz zu erstellen (mitwsl --import
). Die neu erstellte Instanz würde dann das vom Store aktualisierte Root-Dateisystem verwenden.
Keines dieser Szenarien ist sehr häufig. Selbst wenn der unversionierte Store Ubuntu
auf (vermutlich) 22.04 aktualisiert wird, ändert sich nichts an IhremEingerichtetInstanz von 20.04, nur das RootfsPaket.
Sie müssen weiterhin einen ausführen, sudo do-release-upgrade -d
wenn Sie irgendwann auf 22.04 (oder eine Zwischenversion) aktualisieren möchten.
Wenn man also davon ausgeht, dass ... Da Sie Ihre Ubuntu-20.04
Konfiguration bereits Ihren Wünschen entsprechend vorgenommen haben, bietet eine Änderung für Sie keinen großen Vorteil, außer dass Sie einen kürzeren und klareren Ubuntu
Namen für die WSL-Instanz erhalten.
Wie es trotzdem geht
Allerdings ist es angesichts der Art und Weise, wie WSL2 Ihre Daten speichert, nicht allzu schwierig, Konfigurationen zu verschieben. Das gesamte Dateisystem für eine WSL2-Instanz wird auf einer virtuellen Festplatte mit dem Namen gespeichert ext4.vhdx
.
Ubuntu
Da Sie zwei Ubuntu-Installationen ( und ) haben Ubuntu-20.04
, finden Sie zwei dieser ext4.vhdx
Dateien unter %userprofile%\AppData\Local\Packages\
. Um die genauen Speicherorte zu ermitteln, führen Sie Folgendes in PowerShell aus:
Get-ChildItem "$env:USERPROFILE\AppData\Local\Packages\CanonicalGroupLimited*\LocalState\*"
Für meine Installation ist das:
...\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
...\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
Die Lösung dürfte an dieser Stelle ziemlich offensichtlich sein, aber seien Sie natürlich vorsichtig:
Beenden Sie alle laufenden WSL-Instanzen.
wsl --shutdown
Stellen Sie dann sicher, dass derzeit nichts ausgeführt wird.Eine Sicherungskopie Ihrer bestehenden Konfiguration wäre keine schlechte Idee mit
wsl --export Ubuntu-20.04 2021-09-26_Ubuntu-20.04_backup.tar
(oder wie auch immer Sie die Sicherungsdatei nennen möchten). Dadurch wird im Wesentlichen ein Tarball des aktuellen Root-Dateisystems erstellt, einschließlich aller Dateien, Eigentümer und Berechtigungen.Kopieren Sie an diesem Punkt einfach Ihr gewünschtes (Ubuntu-20.04)
ext4.vhdx
über das neu installierte (Ubuntu). Der eigentliche Trick besteht einfach darin, sicherzustellen, dass Sie das richtige kopieren. Möglicherweise möchten Sie IhreUbuntu-20.04
Distribution ausführen und eine schnelle Änderung vornehmen, damit Sie den späteren Zeitstempel auf der „richtigen“ Kopie leicht sehen können.
Die einzige wirkliche Anforderung besteht darin, dass der Standardbenutzer für beide Instanzen derselbe sein muss.
Eine andere Möglichkeit – Da Sie Ihre gewünschte Konfiguration mit gesichert haben wsl --export
, können Sie diese jederzeit einfach wsl --import
in eine neue Instanz mit dem Namen übertragen Ubuntu
.
- Zuerst müssen Sie den Store deinstallieren
Ubuntu
. - Wählen Sie dann ein Verzeichnis für Ihre neue Instanz. Es kann sich überall befinden und muss nicht mehr in Ihrem
AppData
Verzeichnis liegen. wsl --import Ubuntu <directory> path\to\2021-09-26_Ubuntu-20.04_backup.tar --version 2
Ich behalte meine in %userprofile%\Documents\WSL\instances
und meine tar
Backups in %userprofile%\Documents\WSL\images
. So kann ich schnell neue Instanzen über starten wsl --import
. Es ist schön, etwas testen zu können, ohne meine alltägliche Umgebung zu beeinträchtigen.
Hinweis für alle WSL1-Benutzer, die dies lesen. Das Root-Dateisystem für WSL1 ist nicht in einer virtuellen HDD-Datei gespeichert, sondern als tatsächliche Dateien und Verzeichnisse unter ...\LocalState\rootfs\
. Bitte greifen Sie nicht direkt auf diese Dateien zu, da dies leicht zu einer Beschädigung des WSL-Dateisystems führen kann (sieheMicrosoft-Entwicklerblog).
Wenn Sie einfach von Windows aus auf die Dateien zugreifen müssen, verwenden Sie den \\wsl$\<distro>
Pfad in Windows, der in diesem Microsoft-Blog angegeben ist. Wenn Sie jedoch das Ganze kopieren müssen, wie in dieser Frage, konvertieren Sie die Instanz am besten zuerst in WSL2 wsl --set-version <distro> 2
(erstellen Sie wsl --export
zuerst eine Sicherung). Nach der Konvertierung liegt das Dateisystem im WSL2- ext4.vhdx
Format vor.