[toc]
如何在WSL2.0里面使用任意版本的Linux发行版
参考:https://docs.microsoft.com/en-us/windows/wsl/use-custom-distro
之前提到了:
- 如何使用wsl2.0安装ubuntu子系统并安装docker和设置开机启动
- 如何使用wsl2.0安装centos子系统
今天带来了的是在WSL2.0里安装任意Linux发行版
一、基本的操作步骤如下
- 1、docker run一个任意版本的Linux发行版
- 2、docker export将容器导出为tar包
- 3、wsl --import将tar包导入为一个linux子系统
- 4、wsl -d xxx启动这个linux子系统,并安装ssh等工具连接
- 5、wsl export可以再次将某个Linux子系统导出为tar包,导出到别的地方使用
- 6、不想用了就使用wsl --unregister移除某个Linux子系统
二、使用alpine镜像作为Linux子系统
之前我写了一篇文章,在alpine镜像里面使用ssh,现在刚好派上了用场:Docker 之基于Alpine构建SSH服务
2.1、使用该镜像运行为一个容器
]$ docker run --rm -it alpine-ssh:3.13 sh
2.2、新开窗口,导出容器
[[email protected] ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
01bbf08446bb alpine-ssh:3.13 "sh" 2 minutes ago Up 2 minutes 22/tcp practical_robinson
[[email protected] ~]$ docker export practical_robinson > /mnt/d/wsl2.0/alpine3.13/alpine3.13-ssh.tar
[[email protected] ~]$ ls -lh /mnt/d/wsl2.0/alpine3.13/alpine3.13-ssh.tar
-rwxrwxrwx 1 root root 16M May 7 21:31 /mnt/d/wsl2.0/alpine3.13/alpine3.13-ssh.tar
2.3、在windows下面导入这个tar包
PS D:\wsl2.0\alpine3.13> wsl --import alpine3.13 D:\wsl2.0\alpine3.13 .\alpine3.13-ssh.tar
PS D:\wsl2.0\alpine3.13> wsl --list -v
NAME STATE VERSION
* Ubuntu-18.04 Running 2
CentOS8 Stopped 2
alpine3.13 Stopped 2
2.5、启动这个alpine的Linux子系统
PS D:\wsl2.0\alpine3.13> wsl -d alpine3.13
DESKTOP-R8CAT9L:/mnt/d/wsl2.0/alpine3.13# cat /etc/alpine-release
3.13.5
#启动ssh
DESKTOP-R8CAT9L:/mnt/d/wsl2.0/alpine3.13# /usr/sbin/sshd -D &
#xshell连接
[[email protected] ~]$ ssh [email protected] -p2888
The authenticity of host '[127.0.0.1]:2888 ([127.0.0.1]:2888)' can't be established.
ECDSA key fingerprint is SHA256:gEYqsdMFrFlC10CV5JMhE7p6dg1XaiF+6AqWm/wiybg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[127.0.0.1]:2888' (ECDSA) to the list of known hosts.
[email protected]'s password:
Welcome to Alpine!
The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <http://wiki.alpinelinux.org/>.
You can setup the system with the command: setup-alpine
You may change this message by editing /etc/motd.
DESKTOP-R8CAT9L:~#
2.6、将当前这个子系统导出为tar包
首先先将这个子系统停止
#查看子系统状态
PS D:\wsl2.0\alpine3.13> wsl --list -v
NAME STATE VERSION
* Ubuntu-18.04 Running 2
CentOS8 Stopped 2
alpine3.13 Running 2
#停止alpine3.13这个子系统
PS D:\wsl2.0\alpine3.13> wsl -t alpine3.13
#再次查看子系统状态
PS D:\wsl2.0\alpine3.13> wsl --list -v
NAME STATE VERSION
* Ubuntu-18.04 Running 2
CentOS8 Stopped 2
alpine3.13 Stopped 2
导出子系统为tar包
PS D:\wsl2.0\alpine3.13> wsl --export alpine3.13 D:\wsl2.0\alpine3.13\alpine3.13-20210507.tar
PS D:\wsl2.0\alpine3.13> dir
目录: D:\wsl2.0\alpine3.13
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/5/7 21:41 16250880 alpine3.13-20210507.tar
-a---- 2021/5/7 21:31 16236032 alpine3.13-ssh.tar
-a---- 2021/5/7 21:41 66060288 ext4.vhdx
2.7、不想用了删除这个子系统
#使用wsl --unregister命令移除
PS D:\wsl2.0\alpine3.13> wsl --unregister alpine3.13
正在注销...
#再次查看
PS D:\wsl2.0\alpine3.13> wsl --list -v
NAME STATE VERSION
* Ubuntu-18.04 Running 2
CentOS8 Stopped 2
#磁盘上的虚拟磁盘文件也已经不在了
三、使用fedora系统作为Linux子系统
3.1、运行容器
]$ docker run --rm -it fedora:35 bash
3.2、导出容器
[[email protected] ~]$ docker export busy_blackburn > /mnt/d/wsl2.0/fedora35/fedora-35.tar
[[email protected] ~]$ ls -lh /mnt/d/wsl2.0/fedora35/fedora-35.tar
-rwxrwxrwx 1 root root 183M May 7 21:49 /mnt/d/wsl2.0/fedora35/fedora-35.tar
3.3、wsl导入tar包
#导入
PS D:\wsl2.0\fedora35> wsl --import fedora35 D:\wsl2.0\fedora35 .\fedora-35.tar
#查看当前已有的linux子系统
PS D:\wsl2.0\fedora35> wsl --list -v
NAME STATE VERSION
* Ubuntu-18.04 Running 2
CentOS8 Stopped 2
fedora35 Stopped 2
3.4、启动fedora35
**nice ** 😙
PS D:\wsl2.0\fedora35> wsl -d fedora35
[root@DESKTOP-R8CAT9L fedora35]# cat /etc/fedora-release
Fedora release 35 (Rawhide)
[root@DESKTOP-R8CAT9L fedora35]# uname -a
Linux DESKTOP-R8CAT9L 4.19.104-microsoft-standard #1 SMP Wed Feb 19 06:37:35 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
3.5、移除
PS D:\wsl2.0\fedora35> wsl --unregister fedora35
正在注销...
PS D:\wsl2.0\fedora35> wsl --list -v
NAME STATE VERSION
* Ubuntu-18.04 Running 2
CentOS8 Stopped 2
四、debian
4.1、运行容器
]$ docker run --rm -it --name debian debian:10.9 bash
4.2、导出容器
[[email protected] ~]$ docker export debian > /mnt/d/wsl2.0/debian10.9/debian10.9.tar
[[email protected] ~]$ ls -lh /mnt/d/wsl2.0/debian10.9/debian10.9.tar
-rwxrwxrwx 1 root root 114M May 7 21:58 /mnt/d/wsl2.0/debian10.9/debian10.9.tar
4.3、wsl导入tar包
#导入
PS D:\wsl2.0\debian10.9> wsl --import debian10.9 D:\wsl2.0\debian10.9 .\debian10.9.tar
#查看当前已有的linux子系统
PS D:\wsl2.0\debian10.9> wsl --list -v
NAME STATE VERSION
* Ubuntu-18.04 Running 2
CentOS8 Stopped 2
debian10.9 Stopped 2
4.4、启动debian10.9
**nice ** 😙
PS D:\wsl2.0\debian10.9> wsl -d debian10.9
root@DESKTOP-R8CAT9L:/mnt/d/wsl2.0/debian10.9# cat /etc/issue
Debian GNU/Linux 10 \n \l
4.5、移除
PS D:\wsl2.0\debian10.9> wsl --unregister debian10.9
五、长话短说
- 目前我用的ubuntu20.04,听舒服的,里面可以装个docker套娃继续用
- centos对docker不是很友好,有些错误我解决不了,不过跑跑脚本测试啥的还是不错的
- 有个这个教程,基本上可以告别vmware了(对我而言)