WSL2常用操作
常用操作
在CMD输入 wsl -h可以获取到常用指令信息,如:
- 列出分发:
wsl -l - 运行指定分发:
wsl -d <分发> - 更改新分发的默认安装版本:
wsl --set-default-version <Version> - 将分发设置为默认值:
wsl -s <分发> - 更改指定分发的版本:
wsl --set-version <分发> <版本> - 立即终止所有运行的分发及 WSL2:
wsl --shutdown - 终止指定的分发(相当于关机):
wsl -t <分发> - 注销分发并删除根文件系统:
wsl --unregister <分发> - 将指定的 tar 文件作为新分发导入:
wsl --import <Distro> <InstallLocation> <FileName> - 将分发导出到 tar 文件:
wsl --export <Distro[分发]> <FileName[文件名,包含文件全路径]>
例如:把分发CentOS7导出命令:wsl --export CentOS7 E:\CentOS7\rootfs.tar
WSL2开机启动
WSL2开机启动服务有两种实现方式(效果和方式不同):
-
方式一:
-
前提条件:需在WSL2的CentOS中启用systemctl命令,具体参考请另一篇文章:Win10 WSL2-CentOS7开启systemctl命令
-
和正常linux一样,在WSL2的CentOS中使用
systemctl enable 服务名命令对服务启用开机启动;当WSL2开机后,已启用开机启动的服务会陆续启动,但是启动速度较慢;实测docker用这种方式开机启动大约需要6分钟左右; -
使WSL2随windows开机启动:
-
新建文件:linux-start.vbs
-
文件内容为(其中CentOS7为WSL2实例名,根据实际修改):
Set ws = WScript.CreateObject("WScript.Shell") ws.run "wsl -d CentOS7 -u root",vbHide '静默启动WSL2;此命令为开机运行WSL2分发,并隐藏命令行窗口在后台运行,进程名为wsl.exe;如需前台弹窗运行,去掉vbHide参数即可 -
把linux-start.vbs放到C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup目录下以实现WSL2随Windows开机启动
优缺点备注:
- 优点:开机启动基本和正常linux一样,使用
systemctl enable 服务名命令实现; - 缺点:启动用时较长。
-
-
-
方式二:
-
首先创建后缀为wsl的文件 文件创建到/etc/目录下 命令sudo vim /etc/init.wsl
-
编辑wsl文件 wsl文件支持shell脚本,这里只演示一个宝塔面板启动
示例(宝塔开机启动):
/etc/init.d/bt start #宝塔开机启动;不能使用systemctl命令,会报错 -
授予init.wsl写入权限:
sudo chmod 777 /etc/init.wsl -
到这里liunx里的配置就完事了,但你会发现重启电脑后,liunx docker并没有启动,需要利用window的自启动shell脚本来实现docker启动,步骤如下:
-
新建文件:linux-start.vbs
-
文件内容为(其中CentOS7为WSL2实例名,根据实际修改):
Set ws = WScript.CreateObject("WScript.Shell") ws.run "wsl -d CentOS7 -u root /etc/init.wsl",vbHide '静默执行init.wsl中的命令;并隐藏命令行窗口在后台运行,进程名为wsl.exe;如需前台弹窗运行,去掉vbHide参数即可 -
把linux-start.vbs放到C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup目录下以实现开机启动
优缺点备注:
- 优点:直接调用程序启动命令,启动速度快;
- 缺点:不能使用
systemctl start 服务名或service 服务名 start命令实现;即使是按照文章Win10 WSL2-CentOS7开启systemctl命令在WSL2中启用systemctl命令也不行;猜测可能是因为刚开机,wsl2没有完成环境初始化的原因;这也从侧面解释了为什么方式一的开机启动需要五六分钟的原因。
-
-

浙公网安备 33010602011771号