因为想升级wsl2的Ubuntu20而引发的一系列问题.
删除最后一个 WSL 子系统后,我重新安装新的 Linux 发行版时发现安装进度一直卡住。
安装 WSL 发行版时,系统需要依赖 VirtualMachinePlatform(虚拟机平台) 功能。可以按下 Win + R,输入:
optionalfeatures
打开“启用或关闭 Windows 功能”,确认已经勾选 VirtualMachinePlatform。
不过在我的电脑上,勾选后按确定进行windows功能安装也会卡住,原因和之前一样。
经过排查,发现系统中 VBS(基于虚拟化的安全性) 处于运行状态。理论上,关闭“内存完整性”后 VBS 通常会被关闭,但在我的 Windows 11 24H2 系统中,即使关闭内存完整性,VBS 仍然保持运行状态。
部分资料建议进入 BIOS 关闭 CPU 虚拟化(Intel VT-x / AMD SVM),但我的主板 BIOS 中没有相关选项,因此无法尝试这种方法。
最终我选择使用 Hyper-V 直接运行 Linux 虚拟机来代替 WSL。
安装 Debian
我选择的是 Debian 网络安装版(Netinst),镜像大小约 700MB,占用资源较小,适合作为开发服务器。
安装时选择“图形化安装(Graphical Install)”即可。
在软件选择界面,建议取消勾选桌面环境,只保留:
- SSH Server
- Standard System Utilities
这样安装完成后就是一个纯命令行服务器,占用内存更低。
安装 SSH
进入 Debian 后安装并启动 SSH:
sudo apt update
sudo apt install openssh-server
查看 IP:
ip a
然后在 Windows 终端连接:
ssh 用户名@IP地址
此时可以正常连接,但如果使用 Hyper-V 默认网络,虚拟机重启后 IP 可能发生变化,因此可以配置固定 IP。
创建 Hyper-V 内部网络
打开:
Hyper-V 管理器
→ 虚拟交换机管理器
→ 新建虚拟交换机
→ 内部网络(Internal)
例如命名为:
VM-Internal
创建完成后,还需要进入虚拟机设置,将网卡切换到这个新的虚拟交换机。
注意:
切换网络后原来的 SSH 连接会立即失效,因此建议先完成 Windows 端网络配置,再切换虚拟机网络。
配置 Windows NAT
以管理员身份打开 PowerShell:
为 Hyper-V 创建的虚拟网卡配置网关地址:
New-NetIPAddress `
-IPAddress 192.168.100.1 `
-PrefixLength 24 `
-InterfaceAlias "vEthernet (VM-Internal)"
创建 NAT:
New-NetNat `
-Name "VM-NAT" `
-InternalIPInterfaceAddressPrefix "192.168.100.0/24"
配置 Debian 固定 IP
查看网卡名称:
ip a
常见名称:
eth0
ens160
enp0s3
编辑配置:
sudo nano /etc/network/interfaces
将:
iface eth0 inet dhcp
修改为:
iface eth0 inet static
address 192.168.100.10
netmask 255.255.255.0
gateway 192.168.100.1
dns-nameservers 1.1.1.1 8.8.8.8
重启网络:
sudo systemctl restart networking
确认 IP:
ip a
此时应显示:
192.168.100.10
测试网络:
ping 1.1.1.1
ping google.com
如果能够正常访问互联网,说明 NAT 和 DNS 配置已经生效。
之后即可固定使用:
ssh 用户名@192.168.100.10
连接虚拟机,而不用担心 IP 变化。
配置免密连接
- 在Windows生成ssh密钥对, 如果以前生成过就不用再生成了.
ssh-keygen -t rsa -b 4096 - 复制密钥到debian:
cat ~/.ssh/id_rsa.pub | ssh 用户名@服务器IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
vscode快速打开项目
- vscode可以通过左下角的"连接到远程主机"连接到项目. 如果在"最近打开的文件"里没有历史记录, 想要快速打开项目, 可以安装扩展"Project Manager", 保存项目.