WSL2 虚拟机 其他盘安装(非C盘)及调试(含填坑)

4dBmk Linux 686 次阅读 发布于 2024-02-26 最后更新于 2024-02-26 1510 字 预计阅读时间: 7 分钟


1.电脑设置

1.1 虚拟化设置

Windows11环境下安装WSL2非常简单,首先确保虚拟化选项开启。这个如果没有开启的话,需要进电脑的BIOS设置里开启,因为intel和AMD平台的不一样,具体可以搜索下。一般都是默认开启的

image-20240214202345380

1.2 系统设置

控制面板->程序->启用或关闭 windows 功能,开启 Windows 虚拟化和 Linux 子系统(WSL2)以及Hyper-V

勾选完成后,Windows11 会自己下载些东西,并提示你重启。等电脑彻底重启完以后,进行后续操作

image-20240214204104856

打开Power Shell 以管理员命令输入下方代码:

bcdedit /set hypervisorlaunchtype auto

可能因我的系统版本是22H2,安装后wsl版本是早期wsl2版本,需要在Powershell中执行wsl更新命令(win10(11) 2022.3 之后,直接跳过这一步。)

wsl --updat
image-20240214204624226

2. 系统安装

安装方式选择一个就行了

2.1 手动本地安装(支持其他盘安装,推荐!)

在微软这个wiki中下载发行版 ,下载你所需要的发行版文件,下载下来是一个zip压缩包,解压后是这样

image-20240214212716886

我们选择对应平台的包(Ubuntu_2004.2021.825.0_x64.appx),将后缀名.appx改为.zip再进行解压,之后点击exe文件开始安装(这里是ubuntu.exe)

image-20240214212939701

随后该目录下会出现一个ext4.vhdx,这个是WSL2的特性之一,不再以WSL1直接访问windows文件系统的方式存储数据,而是改成单独新建一个磁盘镜像文件存储数据

2.2 命令行安装法(默认C盘安装)

命令行微软商店哪个安装方式都可以,选一即可。

使用PowerShell,以管理员权限启动,输入下方命令执行:

这个就是下载的是Ubuntu的系统镜像

wsl --install -d Ubuntu

2.3 微软商店安装法(默认C盘安装)

打开 Microsoft Store,并选择你偏好的 Linux 分发版安装

3.导出虚拟机文件(用于所有安装方法迁移)

安装后,想改为其他盘符存放,可根据接下来导出导入方式迁移!

3.1 查看虚拟机

安装好并初始化设置了用户后,在PowerShell中查询有哪些虚拟机

wsl -l --all -v
image-20240214205915285

3.2 关闭WSL虚拟机

关闭WSL虚拟机(一定要关闭虚拟机之后再导出! 否则数据可能丢失!)

wsl -t <你选择的虚拟机名称>
image-20240214210127836

3.3 导出(备份)虚拟机文件

导出(备份)虚拟机文件(一定要关闭虚拟机之后再导出! 否则数据可能丢失!)

wsl --export <你选择的虚拟机名称> <导出文件的路径>
#例如:
wsl --export Ubuntu-20.04 E:\wsl_data\Ubuntu-20.04.tar
image-20240214210736875
image-20240214210959834

然后新建一个文件夹用于一会导入虚拟机存放数据使用

3.4 卸载原虚拟机

现在我们可以把原来C盘的虚拟机卸载了(WSL2卸载同时会删除原虚拟机数据!)

注意:高危操作! 请确保已完整导出虚拟机文件!

wsl --unregister <你选择的虚拟机名称>
#例如:
wsl --unregister Ubuntu-20.04
image-20240214212127728
image-20240214214017986

4.导入虚拟机

4.1导入虚拟机

wsl --import <虚拟机名称> <新数据镜像文件的存放文件夹路径> <导出的备份文件路径>
#例如:
wsl --import Ubuntu-20.04 E:\wsl_data\Ubuntu_20.04 E:\wsl_data\Ubuntu_20.04\Ubuntu-20.04.tar
image-20240214213901951

4.2查看虚拟机

wsl -l --all -v
image-20240214214729238

如果是多虚拟机子系统,可能会发现默认虚拟机变成了其他虚拟机

4.3 修改默认子系统虚拟机

wslconfig /setdefault <选定的虚拟机名称>
#例如
wslconfig /setdefault Ubuntu-20.04
image-20240214214926909

4.4 修改默认登录用户

迁移后登录可能会发现使用的是root登录,而非安装时设置的用户

这里我们需要设置wsl.conf文件,一般存储在/etc/wsl.conf,具体可看官方wiki WSL 中的高级设置配置

sudo nano /etc/wsl.conf

添加以下内容

[user]
default = 你安装设置的普通用户名

保存配置并退出,重启wsl

wsl --list --running
wsl --shutdown
wsl

便会发现默认用户已经修改了

需要注意的是 wsl.conf 配置优先级要高于Ubuntu2004.exe config --default-user,因此如果两个都配置了的话,会以 wsl.conf 中的配置优先。

(但是使用导入方式的虚拟机子系统无法使用Ubuntu2004.exe config --default-user方式设置用户,故无需考虑)


可能会遇到的问题:

Q:使用wsl --update更新,报错:

"正在安装: 适用于 Linux 的 Windows 子系统
部署操作被阻止,因为某个根据程序包系列的策略不允许部署到非系统卷。根据策略,该应用必须安装到系统驱动器,但是系统驱动器未设置为默认值。请在存储设置中,将系统驱动器设置为新内容的默认保存位置,然后重试安装。"

A:参考这个issues帖子在管理员权限的powershell中运行以下命令

Get-AppxPackage MicrosoftCorporationII.WindowsSubsystemforLinux -AllUsers | Remove-AppxPackage
wsl --update --web-download

参考资料:

WSL 常用命令

Windows 11 安装 WSL2

自定义WSL的安装位置,别再装到C盘啦

旧版 WSL 的手动安装步骤

WSL 修改默认安装目录到其他盘

win10 wsl2修改默认安装目录到其他盘

为WSL2做快照与回滚

简单到极致!Windows 10 Ubuntu子系统的备份/还原教程来了

如何对WSL2进行备份与还原

WSL 修改默认用户

关于WSL2迁移系统、配置默认系统&用户的补充

WSL 中的高级设置配置

After updating to 2.0.14, there is no wsl --update --pre-release command?

The Windows Subsystem for Linux in the Microsoft Store is now generally available on Windows 10 and 11

A preview of WSL in the Microsoft Store is now available!

是一名喜欢每天折腾的咸鱼!
也是一名半退役的算竞摸鱼选手,参与过icpc,天梯赛,蓝桥等比赛.
---------------------------------------------------
百度 飞桨领航团-团长
Datawhale -鲸英助教团成员
上海人工智能实验室 书生·浦语实战营- 助教
---------------------------------------------------
认证类:
华为 Harmony OS应用开发者高级认证,
NISP 一级认证,
H3C NE-RS网络工程师认证
---------------------------------------------------
荣获奖项荣誉:
第十八届“挑战杯”全国大学生课外学术科技作品竞赛 “揭榜挂帅”专项赛-全国特等奖、
“美亚杯”第八届中国电子取证大赛 三等奖、
“蓝桥杯”国优、
中国高校计算机大赛-团体程序天梯赛 省高校一等奖、
“蓝桥杯”省一等奖、
H3C新华三杯 省三等奖、
中国移动“梧桐杯”大数据创新大赛 省三等奖、
百度 飞桨领航团 金牌团长
最后更新于 2024-02-26