导入要与 WSL 一起使用的任何 Linux 分发版

可以使用适用于 Linux 的 Windows 子系统(WSL)内的任何 Linux 分发版(即使它在 Microsoft 应用商店中不可用),方法是使用 tar 文件导入它。

本文介绍如何导入 Linux 发行版 CentOS,以便通过 Docker 容器获取其 tar 文件来与 WSL 一起使用。 此过程可以应用于导入任何 Linux 分发版。

获取用于分发的 tar 文件

首先,需要获取包含分发的所有 Linux 二进制文件的 tar 文件。

可以通过多种方式获取 tar 文件,其中包括:

  • 下载提供的 tar 文件。 可以在 Alpine Linux 下载 站点的“微型根文件系统”部分找到 Alpine 的示例。
  • 查找 Linux 分发容器,并将实例导出为 tar 文件。 以下示例将使用 CentOS 容器显示此过程。

获取 CentOS 示例的 tar 文件

在此示例中,我们将使用 WSL 分发中的 Docker 获取 CentOS 的 tar 文件。

先决条件

从容器导出 tar 文件

  1. 打开已从 Microsoft 应用商店(此示例中的 Ubuntu)安装的 Linux 分发版的命令行(Bash)。

  2. 确保 Docker Desktop 正在运行(或者,如果在 WSL 发行版中安装了 Docker,请使用 sudo service docker start 以下命令启动服务)

  3. 在 Docker 中运行 CentOS 容器:

    docker run -t --name wsl_export centos ls /
    
  4. 将容器 ID 导出到装载的 c 驱动器上的 tar 文件:

    docker export wsl_export > /mnt/c/temp/centos.tar
    
  5. 清理容器

    docker rm wsl_export
    

运行上述命令的示例

此过程从 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 检查已安装的分发版。

    在 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]$ 基于此示例的输出。

在 WSL 中运行的上述代码示例

若要详细了解如何配置 WSL 设置,请参阅 使用 .wslconfig 和 wsl.conf 配置设置

使用自定义 Linux 分发版

可以创建自己的自定义 Linux 分发版(打包为 UWP 应用),该分发版的行为与 Microsoft 应用商店中提供的 WSL 分发版完全相同。 若要了解如何作,请参阅 为 WSL 创建自定义 Linux 分发版。