匯入任何要與 WSL 搭配使用的 Linux 發行版本

您可以使用 Windows 子系統 Linux 版 (WSL) 內的任何 Linux 散發套件,即使在 Microsoft Store 中無法使用,也可以透過使用 tar 檔案匯入它。

本文會說明如何使用 Docker 容器取得其 tar 檔案,以匯入 Linux 發行版本 CentOS,以搭配 WSL 使用。 可以套用此流程來匯入任何 Linux 發行版本。

取得散發的 tar 檔案

首先,您必須取得包含散發套件所有 Linux 二進位檔的 tar 檔案。

您可以透過各種方式取得 tar 檔案,其中兩種包括:

  • 下載提供的 tar 檔案。 您可以在 Alpine Linux 下載 網站的「迷你根檔案系統」章節中找到 Alpine 的範例。
  • 尋找 Linux 發行版本容器,並將執行個體匯出為 tar 檔案。 下列範例將使用 CentOS 容器 來顯示此流程。

取得 CentOS 範例的 tar 檔案

在此範例中,我們將使用 WSL 散發套件內的 Docker 來取得 CentOS 的 tar 檔案。

必要條件

從容器匯出 tar

  1. 開啟您從 Microsoft Store 安裝之 Linux 發行版本的命令列 (Bash) (在此範例中為 Ubuntu)。

  2. 啟動 Docker 服務:

    sudo service docker start
    
  3. 在 Docker 內執行 CentOS 容器:

    docker run -t centos bash ls /
    
  4. 使用 grep 和 awk 擷取 CentOS 容器識別碼:

    dockerContainerID=$(docker container ls -a | grep -i centos | awk '{print $1}')
    
  5. 將容器識別碼匯出至掛接 C 磁碟機上的 tar 檔案:

    docker export $dockerContainerID > /mnt/c/temp/centos.tar
    

Example of running the commands above

此流程會從 Docker 容器匯出 CentOS tar 檔案,讓我們現在可以將其匯入以在本機搭配 WSL 使用。

將 tar 檔案匯入 WSL

備妥 tar 檔案之後,您可以使用 下列命令匯入它: wsl --import <Distro> <InstallLocation> <FileName>

匯入 CentOS 範例

若要將 CentOS 散發 tar 檔案匯入 WSL:

  1. 開啟 PowerShell,並確定您已建立想要儲存散發套件的資料夾。

    cd C:\temp
    mkdir E:\wslDistroStorage\CentOS
    
  2. 使用命令 wsl --import <DistroName> <InstallLocation> <InstallTarFile> 來匯入 tar 檔案。

    wsl --import CentOS E:\wslDistroStorage\CentOS .\centos.tar
    
  3. 使用 命令 wsl -l -v 來檢查您已安裝的散發套件。

    Example of the above commands running in WSL

  4. 最後,使用命令 wsl -d CentOS 來執行您新匯入的 CentOS Linux 發行版本。

新增 WSL 特定元件,例如預設使用者

根據預設,使用 --import 時,您一律會以根使用者身分啟動。 您可以設定自己的使用者帳戶,但請注意,設定流程會根據每個不同的 Linux 發行版本稍有不同。

若要使用我們剛匯入的 CentOS 散發套件來設定使用者帳戶,請先開啟 PowerShell 並開機進入 CentOS,使用命令:

wsl -d CentOS

接下來,開啟 CentOS 命令列。 使用此命令將 sudo 和密碼設定工具安裝到 CentOS、建立使用者帳戶,並將其設定為預設使用者。 在此範例中,使用者名稱會是 'caloewen'。

注意

您會想要將使用者名稱新增至 sudoers 檔案,讓使用者能夠使用 sudo。 命令 adduser -G wheel $myUsername 會將使用者 myUsername 新增至滾輪群組。 轉輪群組中的使用者會自動獲得 sudo 權限,而且可以執行需要提高權限的工作。

yum update -y && yum install passwd sudo -y
myUsername=caloewen
adduser -G wheel $myUsername
echo -e "[user]\ndefault=$myUsername" >> /etc/wsl.conf
passwd $myUsername

您現在必須退出該執行個體,並確定所有 WSL 執行個體都已終止。 再次啟動您的散發套件,以在 PowerShell 中執行此命令,以查看新的預設使用者:

wsl --terminate CentOS
wsl -d CentOS

您現在會看到 [caloewen@loewen-dev]$ 作為此範例的輸出。

Example of the code above running in WSL

若要深入了解如何設定 WSL 設定,請參閱 使用 .wslconfig 和 wsl.conf 設定設定

使用自訂 Linux 發行版本

您可以建立自己的自訂 Linux 發行版本,封裝作爲 UWP 應用程式,其行為與 Microsoft Store 中提供的 WSL 散發套件完全相同。 若要了解如何進行,請參閱 建立 WSL 的自訂 Linux 發行版本