Hoe verplaats ik WSL naar een andere schijf in Windows?

Het verplaatsen van WSL2-bestanden is niet bepaald eenvoudig en eerlijk gezegd kan het aanvoelen alsof je in het donker aan het rommelen bent. Je kunt problemen ondervinden met bestandspaden, registerinstellingen of gewoonweg corruptie als je het handmatig probeert te doen. Het belangrijkste doel is om ruimte vrij te maken op je systeemstation of je Linux-omgeving naar een snellere of grotere schijf te verplaatsen zonder alles te beschadigen. Het grootste probleem is dat WSL zijn VHDX-bestanden diep in de AppData-map opslaat, waardoor handmatig verplaatsen riskant is, tenzij je precies weet wat je doet. Gelukkig is er een ingebouwde manier om dit veilig te doen met behulp van exporteren/importeren, wat doorgaans minder stressvol en betrouwbaarder is.

Hoe verplaats je WSL2 op de juiste manier naar een andere schijf of pc?

Gebruikmaken van de export- en importmethode

Deze methode wordt nu min of meer door Microsoft aanbevolen, omdat het hacken van het register of het handmatig kopiëren van VHDX-bestanden vaak leidt tot vreemde bugs of gewoonweg kapotte distributies. Het is handig omdat alles in een tarball wordt verpakt, die je vervolgens kunt importeren waar je maar wilt. Als je WSL-bestanden te veel ruimte in beslag nemen of als je je omgeving naar een snellere schijf wilt verplaatsen, is deze truc je beste vriend. Het duurt iets langer, maar het is vrij veilig en behoudt je configuratie. Vergeet niet om WSL af te sluiten voordat je dit doet, anders werkt het niet soepel.

Zorg er eerst voor dat WSL volledig is afgesloten — geen actieve processen, geen open terminals. Voer de volgende opdracht uit wsl --shutdownin PowerShell of CMD. Zoek vervolgens de naam van je huidige distributie met:

wsl --list --verbose

Stel dat er Ubuntu-20.04 staat. Om een ​​back-up te maken, maak je een back-upmap aan op je nieuwe schijf, bijvoorbeeld E:\backup, en voer je het volgende commando uit:

wsl --export Ubuntu-20.04 E:\backup\ubuntu_backup.tar

Dit duurt even, omdat alles in een tarball wordt opgeslagen. Zodra dat klaar is, kunt u de oude distributie deactiveren:

wsl --unregister Ubuntu-20.04

Stel nu de nieuwe locatie in: maak een map aan op de doelschijf (bijvoorbeeld E:\WSL\Ubuntu-20.04) om de nieuwe installatie in onder te brengen. Voer vervolgens het volgende commando uit:

wsl --import Ubuntu-20.04 E:\WSL\Ubuntu-20.04 E:\backup\ubuntu_backup.tar

Hiermee wordt de Linux-omgeving opnieuw geïnstalleerd op de gewenste locatie. De standaardgebruiker is nog steeds root, maar u kunt deze later indien nodig wijzigen met behulp van een config --default-usercommando binnen de Linux-omgeving.

Om de standaardgebruiker te wijzigen, voert u het volgende commando uit:

cd $env:USERPROFILE\AppData\Local\Microsoft\WindowsApps.\ubuntu2004.exe config --default-user sysops

Start de distributie opnieuw met:

wsl -d Ubuntu-20.04

En voilà, je Linux-installatie is nu verplaatst, hopelijk zonder dat je aangepaste configuraties of bestanden bent kwijtgeraakt. Houd er rekening mee dat als je van schijf of computer wisselt, je dit proces gewoon moet herhalen. Het voelt een beetje omslachtig aan, maar het is veel beter dan de hoofdpijn van het handmatig overzetten van de VHDX-bestanden via Verkenner of het Register.

Het gebruik van tools van derden zoals LxRunOffline

Een andere outsider is LxRunOffline, een krachtig hulpprogramma op GitHub. Het is handig als je meer gedetailleerde controle wilt of een verplaatsing wilt automatiseren zonder in het register te hoeven rommelen. Je kunt het installeren met Chocolatey, want waarom zou je handmatig downloaden vermijden? Voer het volgende commando uit:

Set-ExecutionPolicy Bypass -Scope Process -Force [System. Net. ServicePointManager]::SecurityProtocol = [System. Net. ServicePointManager]::SecurityProtocol -bor 3072 iex ((New-Object System. Net. WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) choco install lxrunoffline

Na de installatie kunt u uw distributies weergeven met:

lxrunoffline list

Stop met WSL voor de zekerheid:

wsl --shutdown

Als je wilt zien waar een bepaalde WSL-image zich bevindt, kun je het volgende proberen:

lxrunoffline get-dir -n Ubuntu-20.04

Om het naar een nieuwe schijf te verplaatsen, doe je het volgende:

lxrunoffline move -n Ubuntu-20.04 -d D:\wsl\Ubuntu-20.04

Daarna kun je het zoals gebruikelijk starten met wsl -d Ubuntu-20.04of via de LxRunOffline-opdrachten. Dat lijkt minder riskant dan rommelen met registerinstellingen, en je hebt meer controle.

Moet je snel verhuizen of werk je met meerdere distributies? Deze tools en methoden helpen je voorkomen dat je Linux-omgeving beschadigd raakt. Vergeet niet om bij elke verhuizing je configuraties te controleren en een back-up te maken als dat mogelijk is, want Windows maakt het natuurlijk altijd ingewikkelder dan nodig.

Samenvatting

  • Gebruik dit wsl --shutdownvoordat u bestanden verplaatst of importeert/exporteert om alles overzichtelijk te houden.
  • Maak een back-up van je distributie met wsl --export— dat is veiliger dan bestanden handmatig kopiëren.
  • Verwijder na het maken van een back-up zorgvuldig de oude distributies en importeer vervolgens het tarball-bestand op de nieuwe locatie.
  • Overweeg tools van derden zoals LxRunOffline voor meer controle of programmeerbare bewegingen.
  • Controleer na de migratie altijd uw gebruikersconfiguraties, met name de standaard inloginstellingen.

Samenvatting

Het verplaatsen van WSL2-bestanden zonder de boel te verstoren is nogal vervelend, maar met deze methoden is het te doen. De officiële export/import is de veiligste optie, vooral als het om cruciale bestanden gaat, maar de methode van derden is ook prima als je het niet erg vindt om wat commando’s te gebruiken. Ik weet niet precies waarom, maar op sommige systemen werkt het handmatig verplaatsen van VHDX-bestanden niet zoals verwacht – waarschijnlijk vanwege machtigingen of achtergebleven registervermeldingen. Maak altijd een back-up en wees voorbereid op wat opruimwerk achteraf. Hopelijk bespaart dit iemand een paar uur zoeken naar een oplossing – want eerlijk gezegd heb ik het zelf ook meegemaakt en het is frustrerend.