Você pode instalar alguma outra distro no “Windows Subsystem for Linux” do Win10?

Você pode instalar alguma outra distro no “Windows Subsystem for Linux” do Win10?

O "Instalação do Windows ServerGuia"ligaçõespara"Baixe manualmente os pacotes de distribuição do subsistema Windows para Linux", que menciona diversas distribuições fornecidas oficialmente: Debian, Kali, Ubuntu, OpenSUSE, Fedora e SLES

Como temos distros baseadas em Debian e Slackware em mãos:

  • É possível usar alguma distribuição/árvore diferente daquelas, como Arch?
  • Há alguma desvantagem em não usar as distribuições oficiais?

Estou particularmente interessado em uma forma que evite o uso da Windows Store, pois pode serbloqueadopelas Políticas de Grupo.

Responder1

Isso foi testado no Windows 10 v1709 e o procedimento pode mudar em compilações futuras do Windows 10

  1. Compilar o instalador:
    Temos que compilar um executável para chamar oWslRegisterDistribution()função:
    (não se espera que esta função documentada mude)
    #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 isso com qualquer compilador C (por exemplo gcc), deixando o nome do executável Wslnstall.exe(necessário para a etapa 3), e eu tenho uma versão compilada disso no meu GitHubrepositório

  2. Baixe .tar.gzRootFS:
    Existem muitas maneiras de obter o RootFS de uma distro (por exemplo, do arquivo ISO, da imagem do docker, usando debootstrapcomando etc.) e pela minha experiência pessoal, existem algumas condições que devem estar presentes nesse .tar.gzarquivo, como o .tar.gzarquivo deve ser comprimido comsomente gzip, contém um arquivo válido /bin/bashou /bin/shbinário e /etc/passwd(como de costume).
    • Estas são apenas diretrizesos usuários podem pular, e aqui omito essas etapas com um link direto para umpré-construído .tar.gzpara Alpine (baixe apenas o .tar.gz)

  3. Instalar:
    Coloque o executável compilado (etapa 1) e .tar.gz(etapa 2) dentro domesma pastavocê deseja instalar, executando a partir dessa pasta:
    # WslInstall.exe <distro_name> <file_name.tar.gz>
      WslInstall.exe Alpine alpine-minirootfs-xxx.tar.gz
    

A distribuição Alpine agora deve estar instalada.

informação relacionada