WSL2 导入并配置定制版 Ubuntu (以 18.04.2 为例) 的完整教程
引言:在日常开发中,许多工具或交叉编译环境对特定的系统版本(如 Ubuntu 18.04)有严格要求。随着 WSL2 的普及,它为我们提供了极大的便利。然而,官方支持通过 wsl --install 命令直接下载的往往是只包含较新版本的 Linux 系统。如果我们需要旧版本或特定版本,只能从官方或镜像站下载 .iso 镜像文件。由于 WSL2 导入自定义系统需要 .tar 格式的根文件系统压缩包,本教程将详细演示如何从 ISO 镜像中提取根文件系统,并将其导入到 WSL2 中运行。
1. 下载 ISO 系统镜像
首先,我们需要下载目标系统的 ISO 镜像。本文以 Ubuntu 18.04.2 为例。
访问旧版镜像归档站点:old-releases.ubuntu.com/releases/18…,下载 ubuntu-18.04.2-server-amd64.iso。
注意:请务必下载 Server(服务器)版本。在 WSL2 中我们主要使用命令行环境,无需安装臃肿的桌面环境。
2. 提取特定的 squashfs 文件
下载完成后,双击挂载或解压我们下载好的 .iso 文件。
进入 install 文件夹:
在其中找到 filesystem.squashfs 文件,将其复制并粘贴到你电脑上的一个临时文件夹中(例如 D:\Temp)。
3. 提取根文件系统打造 tar 包
为了将 squashfs 转换为 WSL2 需要的 .tar 压缩包,我们首先需要借助一个临时的 Linux 环境。
打开终端(建议使用 PowerShell),输入以下命令查看当前所有支持直接下载的 Linux 系统:
wsl --list --online
这里我们直接下载一个最新的临时环境(如 Ubuntu-24.04)用来做提取工作:
wsl --install -d Ubuntu-24.04
等待安装完成并设置好初始用户名和密码。
成功进入这个临时的 Linux 环境后,我们需要挂载刚才提取出的 filesystem.squashfs 文件。假设该文件存放在 Windows 系统的 D:\Temp 目录下,那么在 WSL 访问的路径就是 /mnt/d/Temp(如果是C盘则是 /mnt/c/...)。
在 /mnt/ 目录下创建一个文件夹作为挂载点(截图里我多创建了一个iso文件夹,这个用不到,不用创建):
sudo mkdir /mnt/squashfs
接着,将 .squashfs 文件挂载到刚才创建的目录中:
sudo mount -t squashfs /mnt/d/Temp/filesystem.squashfs /mnt/squashfs/
进入挂载目录并使用 ls 查看,此时你就能看到完整的 Ubuntu 18.04 根文件系统了:
cd /mnt/squashfs
ls
最后一步,在当前目录下(/mnt/squashfs),将所有文件打包压缩并存放到我们的临时目录中:
sudo tar --numeric-owner -p -cvf /mnt/d/Temp/ubuntu18.04.2.tar .
⚠️ 关键提示: 上述命令最后的点
.代表当前目录,千万不要漏掉!
等待打包结束返回 Windows,进入 D:\Temp 文件夹,你就能看到打包好的 .tar 文件了。
4. 将提取的文件系统导入 WSL2
首先,我们需要在之前的临时 Linux 环境中取消挂载,并退出该环境(因为我忘记取消挂载了,所以截图里没有这条命令):
sudo umount /mnt/squashfs
exit
回到 Windows PowerShell 终端,使用 wsl --import 命令将刚才打包的 .tar 环境导入为全新的 WSL2 实例。
命令语法:wsl --import <自定义实例名称> <实例安装目录> <tar文件绝对路径> --version 2
wsl --import Ubuntu D:\Temp\WSL_Ubuntu18 D:\Temp\ubuntu18.04.2.tar --version 2
导入完成后,查看现有的 WSL 环境列表,确认名为 Ubuntu 的环境已存在:
wsl -l -v
启动并进入我们刚创建的 Ubuntu 环境:
wsl -d Ubuntu
(可选) 为了防止系统内核被意外升级破坏兼容性,可以锁定内核相关包的更新:
sudo apt-mark hold linux-image-generic linux-headers-generic
5. 配置软件源并安装常用工具
因为我们提取的是一个最小化的服务器根文件系统,包含的内容极其精简,通常连 git 和 vim 都没有。
ls /usr/bin
如果直接查看当前的软件源 /etc/apt/sources.list 并尝试下载包,可能会遇到源失效或无法解析的问题:
我们需要一键替换为兼容的官方镜像源。直接在终端执行以下命令覆写配置:
sudo bash -c 'cat << EOF > /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
EOF'
替换完成后,必须先执行更新软件列表命令,然后再安装我们需要的工具:
sudo apt-get update
sudo apt-get install git vim -y
安装完毕后,验证一下是否安装成功:
git --version
vim --version
6. 清理临时环境与收尾
既然我们的目标环境已经调优完毕,之前用于提取文件的 Ubuntu-24.04 临时环境就可以删除了。
退出当前的 WSL 环境:
exit
先关闭所有运行中的 WSL 实例:
wsl --shutdown
注销并清理临时环境(注意数据无价,确认名称不要打错):
wsl --unregister Ubuntu-24.04
确认清理结果:
wsl --list
最后,你可以将刚配置好的系统设置为 WSL 的默认启动环境。这样日后只需要在终端敲击 wsl即可直接进入:
wsl --set-default Ubuntu
进入系统通过 lsb_release -a 查看版本,确认一切正常:
lsb_release -a
🎉 好了,至此我们的定制化 Ubuntu 18.04.2 环境就已经全部配置完成了!