Aviso: O procedimento a seguir é testado no Windows 10 versão 1709 (Atualização de criadores de outono). O procedimento pode mudar em futuras versões do Windows 10. Aviso , linguagem de programação à frente.
- Compile Installer: Precisamos compilar um executável para chamar o
WslRegisterDistribution()
função. Esta função documentada não pode ser alterada (conforme esperado). Aqui está o 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("%ls installed\n", wargv[1]) : printf("Error: 0x%x\n", result);
}
Agora, compile esse código com qualquer compilador C (por exemplo, gcc). Deixe o nome do executável Wslnstall.exe (necessidade da etapa 3). Eu tenho uma versão compilada disso no meu repositório do GitHub aqui WslInstall .
- Download .tar.gz RootFS: Há muitas maneiras de obter o RootFS de uma distro, por ex. do arquivo ISO, da imagem do docker, usando o comando
debootstrap
, etc. Da minha experiência pessoal, há algumas condições que devem estar presentes nesse arquivo.tar.gz
. O arquivo .tar.gz deve ser compactado com somente gzip e deve conter um arquivo/bin/bash
ou/bin/sh
e/etc/passwd
válido (como sempre).
Estas são apenas diretrizes que os usuários podem ignorá-lo . Aqui eu omito essas etapas e coloco um link direto para baixar um arquivo .tar.gz
de pré-compilação. por exemplo. Para a Alpine, acesse este link: link e baixe apenas o arquivo tar.gz
.
-
Instale: Coloque o executável compilado (passo 1) e o arquivo .tar.gz (passo 2) na mesma pasta onde deseja instalar. Execute este comando nessa pasta:
WslInstall.exe <distro_name> <file_name.tar.gz>
. Por exemplo, o comando será:WslInstall.exe Alpine alpine-minirootfs-xxx.tar.gz
.
A distribuição Alpine deve ser instalada.