Können Sie im „Windows-Subsystem für Linux“ von Win10 andere Distributionen installieren?

Können Sie im „Windows-Subsystem für Linux“ von Win10 andere Distributionen installieren?

Der "Windows Server-InstallationFührung" LinksZu"Manuelles Herunterladen von Windows-Subsystem-Paketen für Linux-Distributionen", in dem mehrere offiziell angebotene Distributionen erwähnt werden: Debian, Kali, Ubuntu, OpenSUSE, Fedora und SLES

Da wir auf Debian und Slackware basierende Distributionen zur Hand haben:

  • Ist es möglich, andere Distributionen/Strukturen als diese, beispielsweise Arch, zu verwenden?
  • Gibt es Nachteile, wenn man die offiziellen Distributionen nicht verwendet?

Ich bin besonders an einer Möglichkeit interessiert, die Nutzung des Windows Store zu vermeiden, da diesverstopftdurch Gruppenrichtlinien.

Antwort1

Dies wurde in Windows 10 v1709 getestet und das Verfahren kann sich in zukünftigen Windows 10-Builds ändern

  1. Installer kompilieren:
    Wir müssen eine ausführbare Datei kompilieren, um dieWslRegisterDistribution()Funktion:
    (es wird nicht erwartet, dass sich diese dokumentierte Funktion ändert)
    #include <Windows.h>
    #include <stdio.h>
    
    typedef HRESULT (WINAPI* RegisterDistro)(PCWSTR distroName, PCWSTR tarGzFilename);
    
    int main() {
      int wargc;
      wchar_t** wargv;
      wargv = CommandLineToArgvW(GetCommandLineW(), &wargc);
      HMODULE dll = LoadLibraryExW(L"wslapi.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
      RegisterDistro func = (RegisterDistro)GetProcAddress(dll, "WslRegisterDistribution");
      HRESULT result = func(wargv[1], wargv[2]);
      (result == S_OK) ? printf("%ls installed\n", wargv[1]) : printf("Error: 0x%x\n", result);
    }
    
    Kompilieren Sie dies mit einem beliebigen C-Compiler (z. B. gcc), wobei Sie den Namen der ausführbaren Datei angeben Wslnstall.exe(wird für Schritt 3 benötigt), und ich habe eine kompilierte Version davon in meinem GitHubRepository

  2. RootFS herunterladen .tar.gz:
    Es gibt viele Möglichkeiten, das RootFS einer Distribution abzurufen (z. B. aus einer ISO-Datei, einem Docker-Image, mithilfe debootstrapeines Befehls usw.). Aus meiner persönlichen Erfahrung weiß ich, dass die Datei einige Bedingungen erfüllen muss .tar.gz, z. B. .tar.gzmuss die Datei komprimiert sein mitnur gzip, enthalten eine gültige /bin/bashoder /bin/shbinäre /etc/passwdDatei und (wie üblich).
    • Dies sind nur RichtlinienBenutzer können überspringen, und hier lasse ich diese Schritte aus mit einem direkten Link zu einemvorgefertigt .tar.gzfür Alpine (nur herunterladen .tar.gz)

  3. Installieren:
    Platzieren Sie die kompilierte ausführbare Datei (Schritt 1) ​​und .tar.gz(Schritt 2) imgleicher OrdnerSie möchten es installieren und es wird aus diesem Ordner ausgeführt:
    # WslInstall.exe <distro_name> <file_name.tar.gz>
      WslInstall.exe Alpine alpine-minirootfs-xxx.tar.gz
    

Die Alpine-Distribution sollte jetzt installiert sein.

verwandte Informationen