De ce s-ar putea să nu ai deloc nevoie să faci asta
Ok, primul lucru. Acest lucru este probabil destul de inutil.
Faptul că „Ubuntu” (fără număr de versiune) din Magazin se actualizează automat este... adevărat, dar puțin înșelător în realitate.
Acest lucru este puțin greu de explicat, dar când instalezi „Ubuntu” (fără versiune) din Magazin, ajungi de fapt cu Două lucruri:
Un pachet rootfs (install.tar.gz
) în C:\Program Files\WindowsApps\CanonicalGroup...
. Puteți vedea acest lucru pornind și rulând un PowerShell administrativ Get-ChildItem -Recurse „C:\Program Files\WindowsApps\Canonical*” | Unde-Obiect {$_.Name -eq 'install.tar.gz' } | % { $_.DirectoryName }
.
Când rulați pentru prima dată (via ubuntu.exe
), programul de instalare creează instanța dvs. WSL reală în dvs %UserProfile%\AppData\Local\Packages\CanonicalGroup...
.
Când există o nouă versiune în Magazin, singurul lucru care este actualizat este pachetul rootfs. Da nu schimbați instalat instanță. (Credit și mulțumiri lui u/zoredache pe Reddit care păstrează amintindu-mi de asta.)
Acest lucru este destul de inutil pentru majoritatea utilizatorilor, cu excepția cazului în care:
- Anulați înregistrarea instanței (care șterge toată configurația) și reconfigurați-o prin rularea din nou a
ubuntu.exe
comanda.
- Vrei să folosești asta
install.tar.gz
pentru a crea oa doua instanță WSL/Ubuntu (folosind wsl --import
). Instanța nou creată va folosi apoi rootf-urile actualizate în magazin.
Niciunul dintre aceste scenarii nu este foarte comun. Chiar și atunci când Magazinul neversionat Ubuntu
este actualizat la (probabil) 22.04, nu vă va schimba instalat instanța 20.04, doar rootfs pachet.
Încă va trebui să rulezi un sudo do-release-upgrade -d
când doriți să faceți upgrade la 22.04 (sau o versiune intermediară).
Deci, având în vedere că... Din moment ce ai deja ta Ubuntu-20.04
configurat așa cum doriți, nu aveți niciun avantaj mare să îl schimbați, în afară de a obține un material mai scurt și mai curat. Ubuntu
numit pentru instanța WSL.
Cum să o faci oricum
Acestea fiind spuse, modul în care WSL2 stochează datele dvs., nu este chiar atât de dificil să mutați configurațiile. Întregul sistem de fișiere pentru o instanță WSL2 este stocat într-un HDD virtual numit ext4.vhdx
.
Deoarece aveți două instalări Ubuntu (Ubuntu
și Ubuntu-20.04
), vei găsi două dintre acestea ext4.vhdx
fișiere sub %userprofile%\AppData\Local\Packages\
. Pentru a obține locațiile exacte, rulați următoarele din PowerShell:
Get-ChildItem „$env:USERPROFILE\AppData\Local\Packages\CanonicalGroupLimited*\LocalState\*”
Pentru instalarea mea, asta este:
...\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
...\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
Soluția poate fi destul de evidentă în acest moment, dar aveți grijă, desigur:
Ieșiți din toate instanțele WSL care rulează.
Atunci wsl --oprire
pentru a vă asigura că nimic nu rulează în prezent.
O copie de rezervă a configurației existente nu ar fi o idee rea wsl --export Ubuntu-20.04 2021-09-26_Ubuntu-20.04_backup.tar
(sau cum doriți să numiți fișierul de rezervă). Acest lucru creează practic un tarball al rootf-urilor actuale, inclusiv toate fișierele, proprietatea și permisiunile.
În acel moment, pur și simplu copiați cel dorit (Ubuntu-20.04) ext4.vhdx
peste cel nou instalat (Ubuntu). Trucul adevărat este să vă asigurați că îl copiați pe cel potrivit. Poate doriți să vă rulați Ubuntu-20.04
distribuție și faceți o schimbare rapidă, astfel încât să puteți vedea cu ușurință ultima marca temporală pe copia „dreaptă”.
Singura cerință reală este ca utilizatorul implicit pentru ambele instanțe să fie același.
O altă posibilitate -- Din moment ce ați făcut o copie de rezervă a configurației dorite cu wsl --export
, ai putea întotdeauna doar wsl --import
asta într-o instanță nouă numită Ubuntu
.
- Mai întâi, ar trebui să dezinstalați Magazinul
Ubuntu
.
- Apoi alegeți un director pentru noua instanță. Poate fi oriunde și nu mai trebuie să trăiască sub tine
Datele aplicatiei
director.
wsl --import calea <director> Ubuntu\to\2021-09-26_Ubuntu-20.04_backup.tar --versiunea 2
Îl țin pe al meu înăuntru %userprofile%\Documents\WSL\instances
si al meu gudron
copii de rezervă în %userprofile%\Documents\WSL\images
. Acest lucru îmi permite să învârt rapid instanțe noi prin intermediul wsl --import
. Este plăcut să pot testa ceva fără a-mi afecta mediul zilnic.
Notă pentru orice utilizator WSL1 care citește acest lucru. Rootfs pentru WSL1 nu este stocat într-un fișier HDD virtual, ci sub formă de fișiere și directoare reale ...\LocalState\rootfs\
. Vă rugăm să nu accesați direct aceste fișiere, deoarece pot cauza cu ușurință coruperea sistemului de fișiere WSL (vezi Microsoft devblog).
Dacă trebuie să accesați pur și simplu fișierele din Windows, utilizați \wsl$\<distro>
calea în Windows, așa cum este menționat în acel blog Microsoft. Dar dacă trebuie să copiați întregul lucru, ca în această întrebare, cel mai bun pariu ar fi să convertiți mai întâi instanța în WSL2, prin wsl --set-version <distro> 2
(fa a wsl --export
mai întâi de rezervă). După conversie, sistemul de fișiere va fi în WSL2 ext4.vhdx
format.