因为想升级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", 保存项目.