手动安装 Ubuntu 18.04 到 WSL(即使官方列表里没有它)

1. 引言
当你在 PowerShell 中运行 wsl --list --online 时,可能会发现 Ubuntu 18.04 已不在列表中。这是因为 Ubuntu 18.04(Bionic Beaver)的标准支持已于 2023 年 5 月结束,微软因此将其移出了默认的在线安装源。然而,许多开发者和运维人员因为旧项目兼容性或特定环境需求,仍需要继续使用 Ubuntu 18.04。本文将详细介绍如何通过手动导入 rootfs 的方式,在 WSL 中安装 Ubuntu 18.04,并完成基础配置。
2. 前提条件
在开始之前,请确保你的 Windows 系统满足以下要求:
- Windows 10 版本 2004 及以上(内部版本 19041 及以上)或 Windows 11。
- WSL 功能已启用,且已设置为 WSL 2 版本。
-
如果尚未启用,请以管理员身份打开 PowerShell,执行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart然后重启计算机。
-
将 WSL 2 设为默认版本:
wsl --set-default-version 2
-
3. 下载 Ubuntu 18.04 的根文件系统(rootfs)
Ubuntu 官方提供旧版本的基础系统镜像,我们需要下载 Ubuntu 18.04 的 rootfs 压缩包。
- 访问 Ubuntu 旧版本发布页:
http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/ - 对于大多数 64 位 PC,选择
ubuntu-base-18.04.5-base-amd64.tar.gz文件。 - 如果上述链接访问困难,也可直接使用以下稳定链接下载:
ubuntu-base-18.04.5-base-amd64.tar.gz
将下载的文件保存到一个你方便的位置,例如 E:\wsl\ubuntu-base-18.04.5-base-amd64.tar.gz。
4. 将 rootfs 导入为 WSL 发行版
打开 PowerShell,使用 wsl --import 命令将下载的 rootfs 压缩包导入为 WSL 的发行版。此命令允许你自定义发行版的名称和安装位置。
示例命令(假设你希望将发行版命名为 Ubuntu1804,安装到 E:\WSL\Ubuntu-18.04,且 rootfs 文件位于 E:\wsl\ubuntu-base-18.04.5-base-amd64.tar.gz):
wsl --import Ubuntu1804 E:\WSL\Ubuntu-18.04 E:\wsl\ubuntu-base-18.04.5-base-amd64.tar.gz --version 2
参数说明:
Ubuntu1804:你为这个发行版指定的名称(可任意,如Ubuntu18、MyOldUbuntu等)。E:\WSL\Ubuntu-18.04:你希望系统文件存放的目录路径(如果目录不存在,命令会自动创建)。E:\wsl\ubuntu-base-18.04.5-base-amd64.tar.gz:下载的 rootfs 文件的完整路径。--version 2:指定使用 WSL 2(推荐,性能优于 WSL 1)。
等待命令执行完毕(通常只需几秒钟),你的 Ubuntu 18.04 就已成功安装在指定位置。
5. 创建普通用户并设为默认登录用户
通过 --import 安装的发行版默认以 root 用户登录。从安全和使用习惯考虑,我们应该创建一个普通用户,并设置为默认登录用户。
5.1 以 root 身份启动系统
wsl -d Ubuntu1804 -u root
进入 root 的 shell 环境。
5.2 更新包管理器并安装 sudo
apt update
apt install sudo -y
5.3 创建新用户(例如 ubuntu)
useradd -m -s /bin/bash ubuntu
passwd ubuntu # 按照提示设置用户密码
usermod -aG sudo ubuntu # 将用户加入 sudo 组
5.4 配置默认登录用户
创建或编辑 /etc/wsl.conf 文件,添加以下内容:
[user]
default=ubuntu
如果你熟悉命令行,可以直接执行:
echo -e "[user]\ndefault=ubuntu" >> /etc/wsl.conf
(如果文件已存在,请手动编辑添加上述内容)
5.5 退出并重启 WSL
exit # 退出 WSL 回到 PowerShell
# 重启 WSL 以应用配置
wsl --shutdown
wsl -d Ubuntu1804
现在你应该会自动以 ubuntu 用户登录。
6. 修复软件源(解决 EOL 后的归档问题)
由于 Ubuntu 18.04 已结束标准支持,其官方软件包仓库已迁移至 old-releases.ubuntu.com。如果不修改软件源,apt update 将会失败。
在 WSL 中执行以下命令替换源:
# sudo sed -i 's/archive.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
# 安装根证书
apt-get install ca-certificates -y
# 设置清华源
cat > /etc/apt/sources.list <<'EOF'
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# 无外网访问不到
# deb http://security.ubuntu.com/ubuntu bionic-security main restricted universe multiverse
EOF
然后更新软件源:
sudo apt update
此后即可正常安装软件包。
7. 验证安装并更新系统
检查 Ubuntu 版本信息:
lsb_release -a
预期输出类似:
Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic
建议进行一次完整的系统升级:
sudo apt upgrade -y
8. 常见问题解答
Q1: 执行 wsl --import 时提示"系统找不到指定的路径"?
A: 请检查 rootfs 文件的路径是否正确,路径中是否包含空格或特殊字符。建议将路径用双引号括起来,例如 "E:\wsl\my file.tar.gz"。
Q2: 导入后运行 wsl -d Ubuntu1804 卡住或闪退?
A: 可能是下载的 rootfs 文件损坏或架构不匹配。请重新下载,并确认选择的是 amd64 版本(适用于 Intel/AMD 64 位 CPU)。
Q3: 如何卸载这个手动安装的发行版?
A: 使用命令 wsl --unregister Ubuntu1804 即可注销并删除该发行版的所有文件。
Q4: 为什么必须使用 rootfs 而不是直接 wsl --install?
A: 因为官方在线源已不再提供 Ubuntu 18.04,所以只能通过离线方式(如 rootfs)安装。rootfs 是 Linux 系统的最小根文件系统,非常适合这种场景。
9. 备注
通过手动导入 rootfs 的方法,你可以绕过官方在线列表的限制,在 WSL 中运行任何自己需要的 Linux 发行版或特定版本。本文以 Ubuntu 18.04 为例,完整演示了从下载、导入、用户配置到源修复的全过程。即使未来其他版本进入 EOL 阶段,你依然可以用同样的方法继续使用它们。
附:常用 WSL 命令速查
- 列出所有已安装的发行版及状态:
wsl --list --verbose - 设置默认发行版:
wsl --set-default <发行版名> - 终止所有 WSL 实例:
wsl --shutdown - 导出现有发行版为 tar 文件:
wsl --export <发行版名> <文件名.tar> - 从 tar 文件导入新发行版:
wsl --import <新发行版名> <安装目录> <文件名.tar> --version 2