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/bashou/bin/she/etc/passwdvá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.