答案1
此操作已在 Windows 10 v1709 中进行了测试,未来 Windows 10 版本中此过程可能会发生变化
- 编译安装程序:
我们必须编译一个可执行文件来调用WslRegisterDistribution()
功能:
(预计此记录的功能不会改变)
使用任何 C 编译器(例如#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); }
gcc
)编译此文件,并输入可执行文件名称Wslnstall.exe
(步骤 #3 所需),我的 GitHub 中有此文件的编译版本存储库 - 下载
.tar.gz
RootFS:
有很多方法可以获取发行版的 RootFS(例如从 ISO 文件、从 docker 镜像、使用debootstrap
命令等),并且根据我的个人经验,该文件中存在一些条件.tar.gz
,例如该.tar.gz
文件应该使用以下方式压缩:仅 gzip,包含有效/bin/bash
或/bin/sh
二进制和/etc/passwd
文件(像往常一样)。- 这些只是指导方针用户可以跳过,这里我省略了这些步骤,直接链接到预建
.tar.gz
适用于 Alpine(仅下载.tar.gz
)
- 这些只是指导方针用户可以跳过,这里我省略了这些步骤,直接链接到预建
- 安装:
将编译后的可执行文件(步骤 #1)和.tar.gz
(步骤 #2)放在同一文件夹您想要安装,从该文件夹内运行:# WslInstall.exe <distro_name> <file_name.tar.gz> WslInstall.exe Alpine alpine-minirootfs-xxx.tar.gz
现在应该安装 Alpine 发行版。