Puncte:1

cum să muți ubuntu în WSL

drapel kr

Când am început să mă dezvolt în WSL Nu stiu de ce, dar am instalat Ubuntu-20.04 aplicație din magazinul Microsoft în loc de doar Ubuntu. Știu că singura diferență este asta Ubuntu-20.04 nu va fi actualizat automat când este nou Ubuntu versiunea va fi lansată. Tot ce vreau să fac este să fac Ubuntu la fel ca Ubuntu-20.04 fără a-l reconfigura. M-am gândit să mut toate fișierele din Ubuntu-20.04 la Ubuntu, dar nu știu dacă a face asta este sigur. Stie cineva cum sa fac ceea ce incerc sa fac? De asemenea, ar trebui să o fac?

editați: ambele versiuni de ubuntu rulează WSL-2 L-am verificat folosind wsl -l -v așa cum a spus @NotTheDr01ds.

edit 2: vreau toată configurația mea de la Ubuntu-20.04 la Ubuntu inclusiv toate fișierele și pachetele instalate

Ilia Manjavidze avatar
drapel kr
@user68186 bineînțeles că am
NotTheDr01ds avatar
drapel vn
@user68186 Acest lucru este menționat în mod explicit în întrebare, așa că sunt confuz de ce întrebi chiar asta? Editare -- Oh, întrebați dacă au instalat deja distribuția „Ubuntu” „vanilie simplă” din Magazin? Ai dreptate, asta nu a fost clar în întrebare, dar mi-am asumat-o.
NotTheDr01ds avatar
drapel vn
Bun venit la Ask Ubuntu. Acest lucru va fi destul de ușor, cred că dacă rulați WSL2, dar va trebui să mă mai gândesc la asta dacă utilizați WSL1. Puteți face un `wsl -l -v` și să confirmați că ambele instalări Ubuntu din Magazin rulează WSL2? Vă rugăm să vă editați întrebarea cu rezultatele lui `wsl -l -v` dacă doriți. Mulțumiri!
Ilia Manjavidze avatar
drapel kr
@user68186 ești sigur că este sigur?
NotTheDr01ds avatar
drapel vn
@user68186 Aș recomanda împotriva asta, cu excepția cazului în care OP știe cu adevărat ce fac. Permisiunile/proprietatea/etc ar trebui să fie tratate cu atenție și cu siguranță nu ar trebui să se facă cu ceva de genul Windows Explorer. Sub WSL2, cel puțin, există o modalitate mult mai ușoară/mai sigură.
NotTheDr01ds avatar
drapel vn
@IliaManjavidze Ok, tastând răspunsul pe baza WSL2, dar va fi puțin. Sunt destul de detaliat :-)
NotTheDr01ds avatar
drapel vn
@user68186 Sigur, dar asta primește doar configurația *user* din `$HOME`. Mi se pare că OP-ul dorește toată configurația (pachete instalate, configurații `/etc/` etc.)
NotTheDr01ds avatar
drapel vn
@IliaManjavidze Vă rugăm să confirmați dacă doriți configurația *toată* sau doar configurația *utilizator*. Ideea lui user68186 este mult mai simplă dacă aveți nevoie doar de fișiere utilizator, desigur. Putem doar să vă oferim instrucțiuni pentru obținerea fișierelor dvs. de la „$HOME” dintr-o instanță la alta.
Ilia Manjavidze avatar
drapel kr
@NotTheDr01ds Am editat întrebarea. Vreau toată configurația mea
Puncte:1
drapel vn

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:

  1. Anulați înregistrarea instanței (care șterge toată configurația) și reconfigurați-o prin rularea din nou a ubuntu.exe comanda.
  2. 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.

Ilia Manjavidze avatar
drapel kr
Multumesc pentru asta. După aceasta, dacă avantajul pe care îl primesc este un nume mai scurt și un nume mai curat, îi pot schimba numele în terminalul Windows. Dacă nu te superi, sunt încă interesat de cum se face. Sunt încă începător și nu înțeleg prea multe așa că mulțumesc :)
NotTheDr01ds avatar
drapel vn
@IliaManjavidze Sigur. Am adăugat asta la răspuns. Este cu adevărat interesant și un lucru util de știut, IMHO.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.