答案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(例如,從 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 發行版了。