最初只是想着在win11系统下挂载ext4盘符,方便使用。
目录
0. 简介
1.安装WSL子系统
1.1 环境确认
1.1.1 虚拟化设置
虚拟化选项开启。这个如果没有开启的话,需要进电脑的BIOS设置里开启。
任务管理器->CPU->(右下方)虚拟化:已启用
将星x17Promax,F2进入Bios,Utility中,VT-d开启
1.1.2 系统设置
启用或关闭windows功能->开启“windows虚拟机监控程序平台”,“适用于Linux的Windows子系统”,“虚拟机平台”
完成后需要重启电脑
1.1.3 开启开发者模式(此项有必要?)
「开发者选项」→「开发人员模式」,打开开关
1.1.4 安装WSL子系统
step1:打开Microsoft Store,商店内直接搜索Ubuntu,选择需要的版本
点击获取Ubuntu,等待下载即可
step2:下载完成后,在桌面搜索栏搜索“Ubuntu”并打开
如果报以下错误
按Win + r输入cmd打开控制台,再输入wsl --update等待安装
再次打开ubuntu即可
step3:系统登陆
首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。
开始设置默认账户和密码。
该账户默认为该Linux系统的管理员,具备和root相同的权限。(root已经有了不能起重复的账户名)
按照指示填入用户名和密码即可成功
(用户名首字母不能大写)
2.WSL操作指令
2.0 WSL相关命令
- 升级WSL内核 :wsl --update
- 重启WSL内核 :wsl -l -shutdown
内核升级完成以后,电脑重启才会生效,这个可以用命令重启 - 查看本系统WSL情况 :wsl -l -v
2.1 WSL重置
2.1.1 WSL重置报错
WSL重置,打开就报错LocalState\ext4.vhdx‘找不到
解决办法:
wsl --list 查看现在安装的发行版
wsl --unregister Ubuntu
这样再次打开,就重新安装了。
3.WSL挂载ext4磁盘
Step1:获取待加载的磁盘信息
win+R cmd
在命令行中输入以下命令:
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
得到如下磁盘列表:
找到其中的磁盘,这里为\.\PHYSICALDRIVE1
如何确认是哪一个磁盘还需研究。
Step2:将磁盘挂载到wsl环境中
在命令行下面,输入以下命令:
wsl.exe --mount \\.\PHYSICALDRIVE4 --bare
如果显示:操作完成
那么我们知道已经成功将磁盘挂载到了wsl环境下面了,接下去可以由wsl中的linux进行加载了。
Step3: wsl中linux加载
在wsl命令行环境中查看磁盘列表
lsblk
得到如下磁盘列表:
其中sdd1正式我们要mount的磁盘
在wsl命令行下面用mount命令挂载磁盘
假设我们把磁盘挂载到/data目录,并且在wsl里面已经创建了/data目录,
mount -t ext4 /dev/sdd1 /data
再次用lsblk查看
加载完毕后,可以通过windows的资源浏览器看到该磁盘上的内容了
Step4:卸载步骤
安全的卸载步骤如下:
1.在wsl下面先umount挂载的磁盘
沿用上面的例子,把/data目录卸载掉,命令如下:
umount /data
2.windows卸载给wsl提供的磁盘
wsl.exe --unmount \\.\PHYSICALDRIVE1
当然,我们也可以直接通过shutdown wsl来间接卸载磁盘
wsl.exe --shutdown
或者关闭一个指定的wsl实例,如:
wsl.exe --terminate Ubuntu-22.04
在wsl中配置分区自动加载
每次挂载磁盘都需要敲命令比较麻烦,我们可以在wsl的linux环境中配置自动加载ext4分区。首先,如第1节中的步骤1到步骤3一样,在powershell中还是需要手工将磁盘挂载到wsl环境中。然后可以配置wsl环境中的linux,让wsl运行linux的时候自动挂载上ext4磁盘分区。
不过我发现每次启动wsl的时候,磁盘的设备名称经常会变化,因此,自动加载不能用设备名称,我们可以用待挂载的磁盘的设备UUID进行配置。操作步骤如下:
查看待挂载磁盘的uuid
在wsl环境下面的linux命令行中输入:blkid
其中/dev/sdd1正是我们要挂载的磁盘,对应的UUID为08563222-2560-2d49-a14a-6b3339615402,
配置 fstab实现自动挂载:
用vim打开/etc/fstab文件,添加如下配置: