¿Puedes instalar otras distribuciones en el "Subsistema de Windows para Linux" de Win10?

¿Puedes instalar otras distribuciones en el "Subsistema de Windows para Linux" de Win10?

El "Instalación del servidor de WindowsGuía" Enlacesa"Descargue manualmente los paquetes de distribución del Subsistema de Windows para Linux", que menciona varias distribuciones que se proporcionan oficialmente: Debian, Kali, Ubuntu, OpenSUSE, Fedora y SLES.

Ya que tenemos a la mano distros basadas en Debian y Slackware:

  • ¿Es posible utilizar alguna distribución/árbol distinto de esos, como Arch?
  • ¿Hay alguna desventaja en no utilizar las distribuciones oficiales?

Estoy particularmente interesado en una forma que evite el uso de la Tienda Windows, como puede serobstruidopor Políticas de Grupo.

Respuesta1

Esto se prueba en Windows 10 v1709 y el procedimiento puede cambiar en futuras versiones de Windows 10.

  1. Instalador de compilación:
    Tenemos que compilar un ejecutable para llamar alWslRegisterDistribution()función:
    (no se espera que esta función documentada cambie)
    #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);
    }
    
    Compile esto con cualquier compilador de C (por ejemplo gcc), dejando el nombre del ejecutable Wslnstall.exe(necesario para el paso 3), y tengo una versión compilada de esto en mi GitHub.repositorio

  2. Descargar .tar.gzRootFS:
    Hay muchas formas de obtener RootFS de una distribución (por ejemplo, desde un archivo ISO, desde una imagen de Docker, usando debootstrapun comando, etc.) y, desde mi experiencia personal, existen algunas condiciones que deben estar presentes en ese .tar.gzarchivo, como que el .tar.gzarchivo debe estar comprimido consolo gzip, contiene un archivo válido /bin/basho /bin/shbinario /etc/passwd(como de costumbre).
    • Estas son solo pautaslos usuarios pueden omitir, y aquí omito estos pasos con un enlace directo a unpreconstruido .tar.gzpara Alpine (sólo descargar el .tar.gz)

  3. Instalar:
    Coloque el ejecutable compilado (paso 1) y .tar.gz(paso 2) dentro delmisma carpetadesea instalar, ejecutándolo desde esa carpeta:
    # WslInstall.exe <distro_name> <file_name.tar.gz>
      WslInstall.exe Alpine alpine-minirootfs-xxx.tar.gz
    

La distribución Alpine ya debería estar instalada.

información relacionada