WSL,Windows Subsystem for Linux 的缩写,意为适用于 Linux 的 Windows 子系统。可让开发人员按原样运行 GNU/Linux 环境,包括大多数命令行工具、实用工具和应用程序,且不会产生传统虚拟机或双启动设置开销。
如何在 Windows 10 版本 2004 及更高版本或 Windows 11 上安装 WSL,可以参考微软的官方文档。
Microsoft Store 上已存在一些 Linux 发行版,比如 Ubuntu 等,基本上寥寥无几,或者版本比较古老。
微软官方有文档示例,通过使用 tar 文件导入任何 Linux 发行版。通过使用 Docker 容器获取 Linux 发行版的 tar 文件来将它导入 WSL。
本文则是介绍另一种制作适用于 WSL 的任意 Linux 镜像的方法,基于各个 Linux 发行版官方提供的 qcow2 镜像来制作。
下面以 Rocky Linux 8 作为示例,介绍具体制作过程。
1. 下载官方提供的 qcow2 文件
Rocky Linux 提供最新版的 qcow2 文件下载地址:
https://download.rockylinux.org/pub/rocky/8/images/Rocky-8-GenericCloud.latest.x86_64.qcow2
其他常见发行版的 qcow2 文件下载地址(节选)
CentOS 7.9
CentOS 8.4
AlmaLinux 8
Fedora 36
Debian 10
Debian 11
Ubuntu 18.04
Ubuntu 20.04
Amazon Linux 2
2. 制作 rootfs.tar.gz
以下所有的操作依赖的命令有:kpartx
、qemu-img
、losetup
、fdisk
、mount
、umount
,如果命令不存在,请自行安装之。
转换 qcow2 文件到 raw 文件
qemu-img convert -f qcow2 -O raw Rocky-8-GenericCloud.latest.x86_64.qcow2 Rocky8.raw
使用 losetup 将 raw 文件虚拟成块设备
losetup /dev/loop1 Rocky8.raw
使用 kpartx 挂载虚拟文件系统
kpartx -a /dev/loop1
使用 fdisk 查看挂载的分区情况
fdisk -l /dev/loop1
返回如下信息
Disk /dev/loop1: 10 GiB, 10737418240 bytes, 20971520 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: dosDisk identifier: 0x2cc9c27eDevice Boot Start End Sectors Size Id Type/dev/loop1p1 * 2048 16386047 16384000 7.8G 83 Linux
此处的/dev/loop1p1
就是等下要 mount 的块设备具体的名称。
挂载块设备到本机路径
mount /dev/mapper/loop1p1 /mnt
进入挂载点 /mnt,查看文件
cd /mnt ls -la
返回如下信息
total 16dr-xr-xr-x. 17 root root 224 Nov 15 03:17 .dr-xr-xr-x. 18 root root 256 Nov 17 09:09 ..lrwxrwxrwx. 1 root root 7 Oct 11 08:48 bin -> usr/bin dr-xr-xr-x. 6 root root 4096 Nov 15 03:24 boot drwxr-xr-x. 2 root root 6 Nov 15 02:50 dev drwxr-xr-x. 94 root root 8192 Nov 15 03:24 etc drwxr-xr-x. 2 root root 6 Oct 11 08:48 home lrwxrwxrwx. 1 root root 7 Oct 11 08:48 lib -> usr/lib lrwxrwxrwx. 1 root root 9 Oct 11 08:48 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 Oct 11 08:48 media drwxr-xr-x. 2 root root 6 Oct 11 08:48 mnt drwxr-xr-x. 2 root root 6 Oct 11 08:48 opt drwxr-xr-x. 2 root root 6 Nov 15 02:50 proc dr-xr-x---. 2 root root 114 Nov 15 03:47 root drwxr-xr-x. 2 root root 6 Nov 15 02:50 run lrwxrwxrwx. 1 root root 8 Oct 11 08:48 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 Oct 11 08:48 srv drwxr-xr-x. 2 root root 6 Nov 15 02:50 sys drwxrwxrwt. 2 root root 84 Nov 15 03:47 tmp drwxr-xr-x. 13 root root 158 Nov 15 03:01 usr drwxr-xr-x. 20 root root 262 Nov 15 03:00 var
打包压缩 /mnt 整个目录为 rootfs.tar.gz,保存到 /root
tar zcf /root/rootfs.tar.gz *
查看打包后的文件,确认文件存在,大小一般是在几百 MB
ll -h /root/rootfs.tar.gz
至此,Rocky Linux 8 的文件系统基本上就制作完成了。
3. 后续
卸载挂载点
cd ~umount /mnt
使用 kpartx 卸载虚拟文件系统
kpartx -d /dev/loop1
使用 losetup 卸载虚拟块设备
losetup -d /dev/loop1
4. 搭配 wsldl 使用
wsldl,Advanced WSL launcher / installer,是一个用 Go 编写的多功能和高级 WSL/WSL2 启动器和安装程序。它可用于安装任何 rootfs 软件包或充当现有已安装发行版的启动器。
项目地址:https://github.com/yuk7/wsldl
下载最新版 Release 的 icons.zip 文件
解压 icons.zip 后,你会发现一系列的 Linux 发行版的 exe 文件。如下图:
找到 Rocky.exe 文件,再将上一步打包压缩好的 rootfs.tar.gz 文件下载回本地。将这 2 个文件放到同一个目录下。
双击 Rocky.exe 即可安装 Rocky Linux 8,具体过程参考另一篇文章《在 Windows 10 上安装 Rocky Linux 系统》
其余发行版的制作过程大同小异。嫌麻烦的可以直接下载我已经制作好的一些常用的 Linux 发行版。
5. 已制作好的 Linux 发行版
下载链接如下:
CentOS 7.9
CentOS 8.4
Fedora 35
Fedora 36
AlmaLinux 8
AlmaLinux 9
Rocky Linux 8.5
Alpine 3.15
Ubuntu 18.04
Ubuntu 20.04
Ubuntu 22.04
Debian 10
Debian 11
Amazon Linux 2
留言评论
暂无留言