Win10 の「Windows Subsystem for Linux」に他のディストリビューションをインストールできますか?

Win10 の「Windows Subsystem for Linux」に他のディストリビューションをインストールできますか?

Windows Server のインストールガイド「リンク」Windows Subsystem for Linux ディストリビューション パッケージを手動でダウンロードする」では、公式に提供されているいくつかのディストリビューションについて言及しています:Debian、Kali、Ubuntu、OpenSUSE、Fedora、SLES

Debian と Slackware ベースのディストリビューションが手元にあるので:

  • Arch など、それ以外のディストリビューション/ツリーを使用することは可能ですか?
  • 公式ディストリビューションを使用しない場合のデメリットはありますか?

私は特にWindowsストアの使用を避ける方法に興味があります。ブロックされたグループポリシーによる。

答え1

これはWindows 10 v1709でテストされており、今後のWindows 10ビルドでは手順が変更される可能性があります。

  1. インストーラーのコンパイル:
    を呼び出すには実行ファイルをコンパイルする必要がありますWslRegisterDistribution()関数:
    (この文書化された機能は変更されないことが予想されます)
    #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);
    }
    
    これを任意のCコンパイラ(例gcc:)でコンパイルし、実行可能ファイル名Wslnstall.exe(ステップ3で必要)を入力します。コンパイルされたバージョンは私のGitHubにあります。リポジトリ

  2. RootFSをダウンロード.tar.gz:
    ディストリビューションのRootFSを取得する方法は多数あります(ISOファイルから、Dockerイメージから、コマンドを使用するなど)。私の個人的な経験では、そのファイルには、ファイルが次のように圧縮されている必要があるなど、debootstrapいくつかの条件があります。.tar.gz.tar.gzgzipのみ、有効な/bin/bashバイナリ/bin/sh/etc/passwdファイル(通常どおり)が含まれます。
    • これらは単なるガイドラインですユーザーはスキップできますここではこれらの手順を省略し、プレビルド .tar.gzAlpine用(ダウンロードのみ.tar.gz

  3. インストール:
    コンパイルされた実行ファイル(ステップ1)と.tar.gz(ステップ2)を同じフォルダインストールしたいフォルダ内から実行します:
    # WslInstall.exe <distro_name> <file_name.tar.gz>
      WslInstall.exe Alpine alpine-minirootfs-xxx.tar.gz
    

これで、Alpine ディストリビューションがインストールされます。

関連情報