A lelkes kísérletezők még a Technical Preview alatt rájöttek, hogy hogyan is tudnak más disztribúciókat telepíteni. Ezen próbálkozások között volt Arch Linux és Fedora is. Sajnos ezek telepítése nem éppen egyszerű (leírás alapján sem), ráadásul sok javítást kell eszközölni rajta, hogy minden funkció normálisan működjön.
Mivel a WSL nem nyílt forrású rendszer, így nehéz kideríteni a működését, de szerencsére a kezdeti kísérleteknek köszönhetően hamar rájöttek a fejlesztők, hogy milyen is a WSL felépítése.
A WSL felépítése
A Windows maga a %LocalAppData%lxss helyen tárolja a WSL fájlokat. Ezen belül található rootfs könyvtár, mely az aktuális disztribúció fájljait tartalmazza. A rootfs mellett található a home, temp és mnt mappa, tehát ezek teljesen különállnak a rendszertől.
Így egyből jön a kérdés, hogy akkor nem lenne elég lecserélni a rootfs-t? A válasz: De igen!
A WSL felépítése
A fentebb is említett Fedora és Arch megoldások is ezt a módszert alkalmazzák, csak utána jön a móka. Először is a bash egyből panaszkodik, hogy az alapértelmezett felhasználó nem található és futassuk le az "lxrun.exe /setdefaultuser" parancsot. Ez sajnos nem minden esetben működik, viszont könnyen megkerülhető: Az /etc/passwd és /etc/shadow fájlokat kell átmásolni az új rootfs-be.
Ezek után a legtöbb disztribúció már működőképes is, csak egyéb apróságokat kell finomhangolni.
WSL Distribution Switcher
Szerencsére nekünk már nem kell lépésről lépésre végigcsinálni a telepítést, hiszen van aki ezt leegyszerűsítette számunkra. Roland Bogosi Python-ban készített néhány szkriptet melyek megkönnyítik a disztribúciók telepítését. Ezzel a megoldással nem csak új disztribúciót kapunk a WSL fölé, hanem egy parancs kiadásával válthatunk közöttük.
Ez a megoldás a Docker Hub által kínált hivatalos lemezképeket használja forrásként és ezek rootfs-ét másolja rá a WSL-re.
A telepítő leírása szerint augusztus 18-án a következő hivatalos disztribúciók voltak elérhetőek:
Debian - 8.5, 8, jessie, latest | jessie-backports | oldstable | oldstable-backports | sid | stable | stable-backports | stretch | testing | unstable | 7.11, 7, wheezy | wheezy-backports | rc-buggy | experimental
Ubuntu - 12.04.5, 12.04, precise-20160707, precise | 14.04.5, 14.04, trusty-20160802, trusty | 16.04, xenial-20160809, xenial, latest | 16.10, yakkety-20160806.1, yakkety, devel
Fedora - latest, 24 | 23 | 22 | 21 | rawhide | 20, heisenbug
Centos - latest, centos7, 7 | centos6, 6 | centos5, 5 | centos7.2.1511, 7.2.1511 | centos7.1.1503, 7.1.1503 | centos7.0.1406, 7.0.1406 | centos6.8, 6.8 | centos6.7, 6.7 | centos6.6, 6.6 | centos5.11, 5.11
OpenSUSE - 42.1, leap, latest | 13.2, harlequin | tumbleweed
Mageia - latest, 5
OracleLinux - latest, 7, 7.2 | 7.1 | 7.0 | 6, 6.8 | 6.7 | 6.6 | 5, 5.11
Alpine - 3.1 | 3.2 | 3.3 | 3.4, latest | edge
Crux - latest, 3.1
ClearLinux - latest, base
A Debian Jessie telepítése és az eredmény
A fentieken kívül természetesen a Docker által kínált prebuilt lemezképek is használhatóak.
A Switcher használata
A Switcher úgy van megírva, hogy az Windows-ból működjön, tehát senki ne próbálja meg WSL-ből futtatni. Először is mint említettem a szkriptek Python-ban, egészen pontosan Python 3-ban íródtak, tehát Windows-unkon telepítve kell lennie annak. Mivel a WSL a %LocalAppData%-ban tárolja a fájlokat minden felhasználónak, így nem kell rendszergazdai jogokkal futtatni a szkripteket.
1, Szükséges tarball beszerzése
Ehhez el kell dönteni, hogy milyen disztribúciót akarunk feltenni, illetve a Docker Hub-ról hivatalos lemezképet akarunk használni vagy prebuilt rendszert.
Az Ubuntu Xenial Xerus telepítése és az eredmény
Ha hivatalos lemezképet választunk akkor az a következő paranccsal szerezhető be:
Ha prebuilt akkor a következőt:
2, Rootfs telepítése
Miután letöltődtek a szükséges fájlok, telepítenünk kell a rootfs-t. Ezt a következő paranccsal tehetjük meg:
Ezek után a bash indításával már az új disztribúció fog feljönni.
3, Váltás
Ha vissza akarunk térni egy korábban telepített rendszerre, akkor a következő paranccsal tehetjük ezt meg:
A projekt GitHub oldalán részletesebb leírás található a használatról és a leggyakoribb problémákhoz is ad segítséget.
Az eddig telepített disztribúciók listája és egy Kali Linux telepítés a háttérben
A legtöbb kipróbált disztribúció tökéletesen működött, az Alpine Linux telepítése is gond nélkül lement, viszont a Bash már nem akart működni, mikor be volt állítva a rootfs-e. Sajnos az általam kedvelt Clear Linux-ot valamiért nem tudta letölteni a szkript.
Remélhetőleg a Microsoft hamar előáll a saját megoldásával amivel ennél egyszerűbben tudunk majd váltani a disztribúciók között sőt, talán még egyszerre több is futtatható lehet.