WSL tips (custom distros)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • afterburn
  • Registratie: Januari 2000
  • Laatst online: 17-08 20:22

afterburn

No more...

Topicstarter
Ik weet niet of er hier veel mensen die WSL(2) gebruiken of zouden willen gebruiken, maar ik heb wat tips die je niet vaak tegenkomt wat betreft distributies in WSL2.

Er zijn een aantal distributies verkrijgbaar in de MS store: Ubuntu, Debian, Alpine, openSUSE, CentOS (betaald) en Fedora (betaald). Dat is leuk, maar beperkt. Wat als er een manier was om elke willekeurige distributie te draaien onder WSL die je wilt? Of zelfs je bestaande dual boot Linux te verplaatsen naar WSL2? Dat kan dus.

Manier 1: Installeer je Linux distributie naar keuze op een schijf of Virtual Machine. Na de installatie en initiele configuratie (of als je een bestaande dual boot naar WSL wilt brengen), maak je een tar archive van het systeem.

code:
1
tar -cpf backup.tar --exclude=/backup.tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /


Ik laat hier even met opzet de -z flag weg, omdat WSL geen compressed archive kan importeren voor zover ik weet, maar je kunt die uiteraard wel doen om ruimte te besparen. En over ruimte gesproken, zorg dat de locatie waar je de back.tar wegschrijft genoeg vrije ruimte heeft. Zeker als je een running system als bron gebruikt. Welke directories geexclude moeten worden hangt ook een beejt af van de distributie, maar daar loop je snel tegenaan als je een error krijgt.

Als het klaar is, de backup.tar overzetten naar je Windows systeem, en kun je het systeem in WSL2 importeren:

code:
1
wsl --import "<Your_Distro_Name>" "<Location_to_store_your_Distro>" "PATH/TO/<archive.tar>" --version 2


Als dit klaar is, kun je de nieuwe WSL distro starten.

code:
1
wsl -d <Your_Distro_Name>


Of gewoon uit het menu van de nieuwe Windows Terminal App. Als je dat niet gebruikt, en je wilt het wat makkelijk maken, zoek dan even op de .exe van een andere (store) distro zoals ubuntu, en copieer de ubuntu.exe naar de directory waar je zojuist je systeem naartoe hebt geimporteerd en hernoem de .exe naar de naam die je jouw distro hebt gegeven in wsl. Je kunt dan met de naam je distro starten.

Let op: dit werkt zo zonder dat verdere aanpassingen noodzakelijk zijn, maar kun je soms errors krijgen met bijvoorbeeld updates omdat bijvoorbeeld grub uiteraard niet werkt onder WSL. Een beetje schonen van packages die niet gebruikt worden kan dan handig zijn. Ook zaken als /boot kunnen leeg blijven en worden kernel packages niet gebruikt omdat WSL een eigen kernel gebruikt. Die kun je weliswaar ook makkelijk aanpassen, maar is wel global voor alle distros dus daar moet je eventueel rekening mee houden. Is misschien iets voor een ander topic.

Manier 2: Gebruik docker.

code:
1
2
3
4
docker pull <image name for your Linux distro>
docker create --name <distro> <image name for your distro>
docker export -o <distro>.tar <distro>
wsl --import "<distro>" "<location for your wsl distro>" "PATH/TO/<distro>.tar" --version 2


Eigenlijk heel vergelijkbaar dus met de vorige manier echter nu hoef je niet het systeem eerst zelf te installeren. Nadeel is wel dat je dus niet kan bepalen wat er in zit, en niet elke distributie is beschikbaar in Docker.

Maar, je kunt dit dus ook gebruiken om een docker image op een makkelijke manier beschikbaar te maken voor jezelf, er mee te werken, aan te passen voordat je het weer naar docker brengt. Want met een wsl export en een docker import kun je dus ook 1 op 1 van wsl terug naar docker:

Je kunt ook via manier 1 een wsl distro aanmaken en dan met een omgekeerde manier 2 naar docker, al moet je dan wel een beetje oppassen dat er niet dusdanig veel rommel in staat of geinstalleerd is dat het hele concept van lichtgewicht containers overboord gaat :P

Misschien dat dit iemand helpt of op ideen brengt.

Ik heb zo in ieder geval:
1) Gentoo installatie via stage3 tarbal import met installatie van source in WSL
2) Slackware via docker export (manier 2)
3) Deepin via Hyper-V installatie (manier 1)

Fuji X-T1 | XF14mm F2.8 R | XF23mm F1.4 R | XF35mm F1.4 R
Nikon D800 | AF-S 24-120/f4 VR2 | AF-S 50/f1.8G
Computer specs