Descargo de responsabilidad: El siguiente procedimiento es probado en Windows 10 Versión 1709 (Caída de los Creadores de Actualización). El procedimiento puede cambiar en el futuro Windows 10 se construye. Advertencia, el lenguaje de programación por delante.
- Compilar el Instalador: Hemos compilar un ejecutable que se llame a la
WslRegisterDistribution()
función. Esta función documentado no puede cambiar (como se esperaba). Aquí está el código:
#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("Distribution '%ls' is successfully installed\n", wargv[1]) : printf("Error: 0x%x\n", result);
}
Ahora, compilar ese código con cualquier compilador de C (por ejemplo, gcc). Deje que el nombre del ejecutable Wslnstall.exe (necesario para el paso #3).
- Descargar .tar.gz RootFS: Hay muchas formas de obtener el RootFS de una distro por ejemplo, desde el archivo ISO, desde la ventana acoplable imagen,
debootstrap
comando etc. Desde mi experiencia personal, hay algunas condiciones que para estar presente en esa .tar.gz
archivo. El .tar.gz el archivo debe ser comprimido con gzip sólo y debe contener un válido /bin/bash
o /bin/sh
binario y /etc/passwd
archivo (como de costumbre).
Estos son sólo directrices usuarios pueden saltar. Aquí omito los pasos y poner el enlace directo para descargar un pre-build .tar.gz
archivo. Por ejemplo, Alpino: http://dl-4.alpinelinux.org/alpine/v3.7/releases/x86_64/ y descargar el tar.gz
archivo.
- Instalar: Poner el ejecutable compilado (desde el paso #1) y el .tar.gz archivo (desde el paso #2) en la misma carpeta donde desea instalar. Ejecute el comando
WslInstall.exe <distro_name> <file_name.tar.gz>
de esa carpeta. Por ejemplo, el comando será: WslInstall.exe Alpine alpine-minirootfs-xxx.tar.gz
. La distribución debe ser instalado.