在 WSL 上安裝 Arch Linux - Arch Linux 中文维基

跳至內容

# 在 WSL 上安裝 Arch Linux

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Install Arch Linux on WSL，最近一次同步於 2025-08-22，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

作為 archlinux-wsl 項目的一部分，Arch Linux 提供官方 WSL（Windows Subsystem for Linux，適用於 Linux 的 Windows 子系統）鏡像。

鏡像每月構建並發布一次，旨在通過最簡且完整的系統在 WSL 上提供完整的 Arch Linux 體驗。

注意：需要 WSL 2。不支持 WSL 1。以下內容均假定您使用最新穩定版的 WSL 2。

## 安裝

### 安裝 WSL

在 UEFI 設置中啟用虛擬化，然後從 Microsoft Store 安裝 Windows Subsystem for Linux（適用於 Linux 的 Windows 子系統）。

注意：Microsoft Store 內的 WSL 是默認版本。不要啟用 "Windows Subsystem for Linux" 組件，也不要安裝 WSL 內核或 WSLg 的 MSI 安裝包，因為它們不再被需要。相比於 Windows 組件，使用 Microsoft Store 版本的 WSL 可讓您更快地獲取更新，WSLg 現也已被打包。

### 更新 WSL

要更新到最新穩定版的 WSL 和 WSLg，在具有管理員權限的 Windows 的命令行 Shell 中執行以下命令：

    > wsl --update

要更新到最新的預發行版本，請換用以下命令：

    > wsl --update --pre-release

### 在 WSL 上安裝 Arch Linux

在已安裝了 WSL 2 的 Windows 系統上遵循以下安裝方式之一：

#### 自動安裝

在 Windows 的命令行 Shell 中執行該命令：

    > wsl --install archlinux

然後您可以在開始菜單中通過 `archlinux` 應用程式在 WSL 中運行 Arch Linux，亦可在 Windows 的命令行 Shell 中執行 `wsl -d archlinux`。

如果您不希望使用 WSL 的默認安裝路徑和發行版名稱，可以使用以下命令：

    > wsl --install -d archlinux --name 自定义名称 --location 自定义路径

其中 `--name` 用於設置名稱，`--location` 用於設置安裝路徑，例如：

    > wsl --install -d archlinux --name Arrrrch --location D:\WSLOS\Arch

執行 `wsl --help` 命令以查看 WSL 的更多操作。

#### 手動安裝

下載最新的 Arch Linux `.wsl` 鏡像，然後雙擊以進行安裝或在 Windows 的命令行 Shell 中執行以下命令：

    > wsl --install --from-file WSL_image

直接安裝：

    > wsl --install --from-file C:\Users\用户名\Downloads\archlinux-2025.04.01.121271.wsl

導入式安裝（可自定義位置）：

    > wsl --import archlinux D:\WSL\Arch D:\Download\archlinux-2025.04.01.121271.wsl

提示：這會以默認發行版名稱 `archlinux` 安裝 WSL 鏡像，若您欲以不同名稱導入，請添加 `--name 名稱` 選項。

然後您可以在開始菜單中通過 `archlinux` 應用程式在 WSL 中運行 Arch Linux，亦可在 Windows 的命令行 Shell 中執行 `wsl -d archlinux`。

## 提示和技巧

### 設定默認用戶

要設定 `root` 以外的默認用戶，首先確保該用戶已被創建，然後將以下行添加到 `/etc/wsl.conf`：

    [user]
    default=username

關閉會話前記得為 `root` 用戶設置密碼，如果您被「拒之門外」，請在 Windows 主機的 CMD 中執行：

    > wsl -u root

此更改將在下次會話啟動時生效，要終止當前會話，請在 Windows 的命令行 Shell 中執行以下命令：

    > wsl --terminate archlinux

若您使用 WSL 2.4.10 或更新版本，則可以使用以下命令為您的發行版設定默認用戶：

    > wsl --manage archlinux --set-default-user 用户名

此更改將在下次啟動時生效。

### 用 WSLg 運行圖形界面應用程式

WSLg（Windows Subsystem for Linux GUI）項目致力於讓 WSL 支持 Linux 音頻（PulseAudio）和圖形界面（X11 和 Wayland）。

WSLg 默認啟用，您可在 WSL 配置文件中將 `wsl2.guiApplications` 設為 `false` 以將其關閉。

#### 硬體加速渲染

欲在 WSL 中啟用 GPU 視頻加速渲染，請安裝以下軟體包：

- mesa包 - 包含 OpenGL 所需的 `d3d12` Gallium 驅動
- vulkan-dzn包 - 包含實驗性的 `dzn`（亦作 `microsoft-experimental`）Vulkan 驅動

還需要安裝 vulkan-icd-loader包（要運行 32 位應用程式則亦需安裝 lib32-vulkan-icd-loader包）。

    ~/.bashrc

    export GALLIUM_DRIVER=d3d12

    export LIBVA_DRIVER_NAME=d3d12

若 openGL 依然在英特爾 GPU 上使用 llvmpipe 軟體渲染，則需要為 libedit 創建符號連結：

    # ln -s /usr/lib/libedit.so /usr/lib/libedit.so.2

更多信息參見 Issue 996 和 Gentoo:Gentoo in WSL#OpenGL falling back to llvmpipe software renderer on Intel GPUs。

### WSL 互操作

WSL 支持與 Windows 互操作，這讓您可以從 WSL 運行 Windows 二進制程序。

其默認啟用，您可在 `/etc/wsl.conf` 中將 `interop.enabled` 設定為 `false` 以將其禁用[1]。

有一些工具能讓您在 WSL 內使用 Windows 服務和功能。

#### 從 Windows 橋接 SSH 代理服務

wsl2-ssh-agent 工具允許您在 WSL 內使用 Windows SSH 代理。

當您使用需要物理安全密鑰甚至是 Windows Hello 的 `*-sk` SSH 密鑰時，這會很有用。

安裝 wsl2-ssh-agentAUR 並將以下行添加到您的 `~/.bashrc`：

    eval "$(/usr/sbin/wsl2-ssh-agent)"

重啟 shell，`SSH_AUTH_SOCK` 環境變量應該已正確設置。

#### 使用 Windows Hello 進行 PAM 認證

WSL-Hello-Sudo 是一個使用 Windows Hello 進行用戶身份認證的 PAM 插件。

安裝 wsl-hello-sudo-binAUR 並運行 `/opt/wsl-hello-sudo/install.sh`。安裝程序會複製一個 Windows 可執行程序到您選定的目錄並存儲用於身份認證的證書。

提示：WSL-Hello-Sudo 已經 4 年沒有更新了，因此 wsl-hello-sudo-binAUR 打包了一個分支，合併了一些依賴更新。

欲使用 Windows Hello 進行認證，將 `auth sufficient pam_wsl_hello.so` 行添加到 `/etc/pam.d` 中相應組件的配置文件，例如 Sudo：

    /etc/pam.d/sudo

    #%PAM-1.0
    auth            sufficient      pam_wsl_hello.so
    auth            include         system-auth
    account         include         system-auth
    session         include         system-auth

### 向 WSL 連接設備

WSL 2 是一個 Hyper-V 虛擬機，這使得設備可以從主機（Windows）直連到客戶機（WSL 2）。

#### 掛載磁碟

WSL 2 支持附加並掛載 Windows 可用的磁碟。

欲如此做，首先請用以下 PowerShell 命令獲取磁碟的 `DeviceID`：

    > GET-CimInstance -query "SELECT * from Win32_DiskDrive"

找到欲掛載的磁碟後，請在 Windows 上執行以下命令（需要管理員權限）：

    > wsl --mount DeviceID --bare

警告：這會使相應磁碟在 Windows 上下線，掛載前確保您已關閉所有正在使用該驅動器的應用程式。

附加後，您應當可以用 `lsblk` 看到該磁碟。

要取消掛載，請運行：

    > wsl --unmount DeviceID

欲獲取更多信息，請參閱官方文檔（中文文檔在此）。

#### 連接 USB 設備

usbipd-win 項目可以將本地連接的 USB 共享到其他設備，包括 WSL 2。

首先請在 Windows 上安裝該軟體。您可以選擇運行最新發布的安裝程序（.msi）或使用 Windows 包管理器：

    > winget install usbipd

安裝完成後，請在 Windows 上執行以下命令，找到欲共享的 USB 設備，特別留意其 bus ID：

    > usbipd list

執行以下命令以準備欲共享的 USB 設備（需要管理員權限）：

    > usbipd bind --busid busid

警告：確保您已關閉了所有使用該 USB 設備的應用程式。

然後執行以下命令將 USB 設備連接到 WSL 2：

    > usbipd attach --wsl --busid busid

連接後，您應當可以用 `lsusb` 看到該設備。

要與 USB 設備斷開連接，請執行：

    > usbipd detach --busid busid

欲獲取更多信息，請參閱官方文檔。

### 修改區域設置

WSL 默認會嘗試將區域設置調整為與 Windows 相匹配。欲手動設置，請執行以下命令：

    ln -sf /etc/locale.conf /etc/default/locale

然後像正常安裝一樣設定區域。

## 疑難解答

### systemd 支持

Arch Linux WSL 鏡像支持 systemd。

然而，有一些已知問題可能需要額外操作才能使 systemd 正常工作。

### Docker 容器運行出錯

從 WSL 運行 Docker 容器可能會出現如下報錯：

    Error response from daemon: path / is mounted on / but it is not a shared or slave mount
    Error: failed to start containers

有可能是 `docker run` 之類的命令一直掛起而不輸出。

因為 Docker 需要根目錄（`/`）被掛載為可共享。

欲修復，請運行：

    # mount --make-rshared /

欲持久化該更改，您可以創建一個 systemd 服務，使其在啟動時就執行命令：

    /etc/systemd/system/mount-root-rshared.service

    [Unit]
    Description=Remount / with shared propagation
    Requires=-.mount
    After=-.mount

    [Service]
    Type=oneshot
    ExecStart=/bin/mount --make-rshared /

    [Install]
    WantedBy=local-fs.target

然後啟動/啟用 `mount-root-rshared.service`。

關於該選項的更多信息，請參閱 mount(8) § Shared subtree operations。

## 參見

- Wikipedia:Windows Subsystem for Linux
- Gentoo:Gentoo in WSL
- 官方文檔（英文）
- 官方文檔（中文）
- WSLg GitHub Wiki

分類：​

- 安裝過程
- 虛擬機管理

在 WSL 上安裝 Arch Linux
新增話題