共用方式為


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

您可以在 Windows 子系統 Linux (WSL) 中使用任何 Linux 發行版,即使它不在Microsoft Store提供,只要使用 tar 檔匯入即可。

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

取得發行版的 tar 文件

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

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

  • 下載提供的 tar 檔案。 您可以在 Mini Root Filesystem網站的 「區段中找到 Alpine 的範例。
  • 尋找 Linux 發行版容器,並將實例匯出為 tar 檔案。 下列範例將使用 CentOS 容器來顯示此程式。

取得 CentOS 範例的 tar 檔案

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

先決條件

從容器匯出 tar 檔案

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

  2. 請確定 Docker Desktop 正在執行(或者,如果您已在 WSL 發行版本中安裝 Docker,請使用 sudo service docker start 啟動服務)

  3. 在 Docker 內執行 CentOS 容器:

    docker run -t --name wsl_export centos ls /
    
  4. 將容器識別碼匯出至掛接 c 磁碟驅動器上的 tar 檔案:

    docker export wsl_export > /mnt/c/temp/centos.tar
    

    執行上述命令的範例

  5. 清除容器

    docker rm wsl_export
    

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

將 tar 檔案匯入 WSL

備妥 tar 檔案之後,您可以使用 命令匯入它:

wsl.exe --import <Distro> <InstallLocation> <FileName> [Options]
Options:
    --version <Version>
    --vhd

匯入 CentOS 範例

若要將 CentOS 散發 tar 檔案匯入 WSL,請依照以下步驟進行:

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

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

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

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

    在 WSL 中執行的上述命令範例

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

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

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

wsl -d CentOS

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

備註

您會想要將使用者名稱新增至 sudoers 檔案,讓用戶能夠使用 sudo。 命令 adduser -G wheel $myUsername 會將使用者 myUsername 新增至滾輪群組。 在 wheel 群組中的用戶會自動獲得 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]$ 作為此範例的輸出。

在 WSL 中執行上述程式代碼的範例

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

使用自訂Linux發行版

您可以建立自己的自定義 Linux 發行版,封裝為 UWP 應用程式,其行為與 Microsoft 市集中提供的 WSL 發行版完全相同。 若要瞭解如何,請參閱 建立 WSL 的自定義 Linux 發行版本