Você pode instalar outras distros no “Windows Subsystem for Linux” do Win10?

6

Em "Instalar o subsistema Linux no Windows Server" , a Microsoft menciona três distribuições que são fornecidas oficialmente: Debian, Kali, Ubuntu, OpenSUSE e SLES.

Como temos distribuições baseadas no Debian e baseadas no Slackware, eu me pergunto: É possível usar quaisquer outras distribuições dessas - ou outras - árvores de distribuição (como o Fedora, Arch ), e existem desvantagens em não usar as distribuições "oficiais"? Estou particularmente interessado em uma forma que evita o uso da Windows Store , como a explicada no link acima, como A Windows Store pode ser bloqueada pelas Políticas de Grupo .

    
por flolilolilo 12.04.2018 / 22:16

1 resposta

8

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.

  1. 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 .

  1. 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 .

  1. 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.

    
por 12.04.2018 / 23:06