前因
因为下学期的计组课程需要用到ISE,然而ISE这样13年的软件和win11自然是不兼容了(经过网上大佬们的各种尝试,最终也只能安装到92%),所以在水群大佬的推荐下,我可以尝试使用WSLG(Windows Subsystem for Linux GUI)来运行ISE,于是我就先安装官网教程更新了wsl2,这个流程不太难,就不赘述了。
由于ISE体量巨大,所以不得不将WSL迁移到D盘以防止C盘爆炸。
过程
迁移WSL需要使用工具LxRunOffline
GitHub网址:https://github.com/DDoSolitary/LxRunOffline/releases
如果迁移中遇到以下错误,则应该改用:https://ddosolitary-builds.sourceforge.io/LxRunOffline/LxRunOffline-v3.5.0-11-gfdab71a-msvc.zip
[ERROR] Couldn't set the case sensitive attribute of the directory "\\?\C:\Users\toby2\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\".
Reason: Indicates that the directory trying to be deleted is not empty.
2024/6/25更新:上述链接已失效,可参考DDoSolitary/LxRunOffline#205;省流,先移动磁盘文件,再运行程序。
操作步骤
注意:建议使用管理员身份运行powershell
查看已安装的子系统
./LxRunOffline list
查看子系统所在目录
./LxRunOffline get-dir -n [xxx]
xxx
是你在步骤1中查询到的子系统版本迁移系统
./LxRunOffline move -n [xxx] -d [ddd]
xxx
是你在步骤1中查询到的子系统版本ddd
是你期望移动到的路径如果迁移系统中出现以下错误
[ERROR] The distro "Ubuntu-20.04" has running processes and can't be operated. "wsl -t <name>" or "wsl --shutdown" might help.
则使用快捷键
Win+x
再按g
打开计算机管理
重启服务LxssManager
(也可以直接停止服务,迁移结束后再打开)如果迁移后Ubuntu报错“拒绝访问”
使用下列指定为目录授权
icacls [ddd] /grant "[user]:(OI)(CI)(F)"
ddd
为移动后的路径user
为你的用户名授权后建议重启
LxssManager
服务
Q&A
如果Ubuntu报错“另一个程序正在使用此文件,进程无法访问”
以管理员身份运行以下指令
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
然后按照要求重启电脑
造成此错误的原因估计为在未开启WSL的情况下使用资源管理器尝试打开WSL的磁盘镜像文件(.vhdx文件)
关于wslg的分辨率
目前wslg似乎只支持整数倍缩放,这非常不友好,但是可以手动启用非整数倍缩放
在wsl终端输入
sudo vi /mnt/c/ProgramData/Microsoft/WSL/.wslgconfig
新建一个文件(或者在Windows中找到C:\ProgramData\Microsoft\WSL
,并在其中新建文件.wslgconfig
),文件内容如下:[system-distro-env] WESTON_RDP_DISABLE_FRACTIONAL_HI_DPI_SCALING=false
然后关闭wsl终端,打开powershell,输入
wsl --shutdown
即可只不过150%缩放确实有点糊……
2024/6/25更新:参见microsoft/wslg#23