📖 引言
Hyper-V 的增强会话模式(Enhanced Session)允许虚拟机与宿主机之间共享剪贴板、驱动器、USB 设备等资源,并能自动调整分辨率,极大提升使用体验。然而,Ubuntu 24.04 默认的远程登录并不支持这一功能,需要手动配置 xrdp 服务并启用 HvSocket 通信。本文将详细介绍从零开始为 Ubuntu 24.04 虚拟机开启增强会话的完整步骤,并解决配置后可能出现的桌面无图标、右键菜单异常的问题。
一、环境准备
- 宿主机:Windows 10/11 专业版/企业版 或 Windows Server(已启用 Hyper-V 角色)
- 虚拟机系统 :Ubuntu 24.04 Desktop 镜像(下载地址)
- 网络:确保虚拟机能够访问互联网(用于安装软件包)
二、创建并配置 Hyper-V 虚拟机
- 打开 Hyper-V 管理器,点击右侧"新建" → "虚拟机"。
- 指定名称和位置 :例如
Ubuntu 24.04 Enhanced。 - 选择代数 :务必选择第二代(支持 UEFI 和增强会话所需的功能)。
- 分配内存:建议 4096 MB 或更多,并勾选"为此虚拟机使用动态内存"。
- 配置网络:选择已创建的虚拟交换机(如"默认交换机"),确保虚拟机可以联网。
- 连接虚拟硬盘:创建新虚拟硬盘,建议大小 50 GB 以上。
- 安装选项:选择"从可启动的映像文件安装操作系统",浏览并选中下载的 Ubuntu 24.04 ISO 文件。
- 完成创建向导,但不要立即启动虚拟机。
关键调整:关闭安全启动
- 在 Hyper-V 管理器中,右键点击刚创建的虚拟机,选择"设置"。
- 转到 "安全" 选项。
- 取消勾选"启用安全启动"。
- (可选)在 "固件" 中,确保 DVD 驱动器启动顺序排在硬盘之前。
- 点击"确定"保存设置。
三、安装 Ubuntu 24.04
- 启动虚拟机,进入 Ubuntu 安装界面。
- 按照提示选择语言、键盘布局等。
- 在"安装类型"中选择"清除整个磁盘并安装 Ubuntu"(标准安装即可)。
- 创建用户时,务必勾选"Require my password to log in" (要求密码登录),并设置一个非空的密码。这是后续
xrdp正常工作的前提。 - 等待安装完成,重启虚拟机。
四、在 Ubuntu 中安装和配置增强会话支持
虚拟机重启后,进入系统,打开终端(可按 Ctrl+Alt+T)。
1. 更新软件包并安装必要组件
bash
sudo apt update
sudo apt install -y linux-tools-virtual-hwe-24.04 linux-cloud-tools-virtual-hwe-24.04 xrdp
linux-tools-virtual-hwe-24.04和linux-cloud-tools-virtual-hwe-24.04:提供 Hyper-V 集成服务驱动,支持剪贴板共享等。xrdp:远程桌面服务器,负责处理增强会话的连接。
2. 修复服务链接(避免日志报错)
bash
sudo mkdir -p /usr/libexec/hypervkvpd/
sudo ln -s /usr/sbin/hv_get_dhcp_info /usr/libexec/hypervkvpd/hv_get_dhcp_info
sudo ln -s /usr/sbin/hv_get_dns_info /usr/libexec/hypervkvpd/hv_get_dns_info
3. 配置 xrdp 监听 vsock
Hyper-V 增强会话通过 vsock 与虚拟机通信,我们需要修改 xrdp 配置文件,使其同时监听 TCP 3389 和 vsock 通道。
bash
sudo sed -i -e 's/^port=3389$/port=3389 vsock:\/\/-1:3389/g' /etc/xrdp/xrdp.ini
4. 创建 Ubuntu 会话启动脚本
创建一个脚本,确保 xrdp 能够正确启动 Ubuntu 的 GNOME 桌面环境。
bash
# 创建脚本文件
sudo tee /etc/xrdp/startubuntu.sh << 'EOF'
#!/bin/sh
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
exec /etc/xrdp/startwm.sh
EOF
# 添加执行权限
sudo chmod a+x /etc/xrdp/startubuntu.sh
然后修改 sesman.ini,让 xrdp 使用这个脚本:
bash
sudo sed -i -e 's/startwm/startubuntu/g' /etc/xrdp/sesman.ini
5. 优化与清理(可选但推荐)
-
避免登录黑屏:创建一个模块黑名单文件,可加快登录速度。
bashecho "blacklist vmw_vsock_vmci_transport" | sudo tee /etc/modprobe.d/blacklist-vmw_vsock_vmci_transport.conf -
解锁系统钥匙环:避免每次登录弹出"解锁钥匙环"提示。
bashsudo sed -i 's/^auth\toptional\tpam_gnome_keyring.so/auth\toptional\tpam_gnome_keyring.so\nsession\toptional\tpam_gnome_keyring.so auto_start/' /etc/pam.d/xrdp-sesman
五、在 Windows 宿主机上启用 HvSocket
关闭 Ubuntu 虚拟机(可执行 sudo poweroff)。然后在 Windows 中以管理员身份 打开 PowerShell,执行以下命令(将 "你的虚拟机名称" 替换为实际的名称,例如 "Ubuntu 24.04 Enhanced"):
powershell
Set-VM -VMName "你的虚拟机名称" -EnhancedSessionTransportType HvSocket
此命令指定虚拟机使用 HvSocket 作为增强会话的传输类型,而不是默认的 TCP。
六、连接并使用增强会话
- 启动 Ubuntu 虚拟机。
- 在 Hyper-V 管理器中,右键点击虚拟机,选择 "连接"。
- 此时应弹出一个新的窗口,而不是传统的 VMBus 控制台。在登录界面:
- 会话类型 下拉菜单选择
Xorg(或X11rdp),不要选Xvnc。 - 输入用户名和密码登录。
- 会话类型 下拉菜单选择
- 连接成功后,你可以在窗口上方的工具栏中点击 "显示选项" ,配置本地资源:
- 剪贴板:勾选后可在宿主机和虚拟机间双向复制粘贴。
- 驱动器:勾选后可将宿主机的磁盘分区或文件夹映射到虚拟机中。
- 显示器:可调整分辨率或启用多显示器支持。
恭喜!至此,你已经成功为 Ubuntu 24.04 虚拟机开启了增强会话。
通过Ctrl+C和Ctrl+V在宿主机和虚拟机中间方便快捷的拷贝文件了。

七、常见问题:登录后桌面无图标、右键菜单异常
部分用户在按照上述步骤配置并连接后,发现桌面没有"主文件夹"、"回收站"等图标,右键菜单也很简陋。这是 xrdp 未能正确加载完整 GNOME 桌面环境的表现。以下是解决方法。
1. 确认会话类型为 Xorg
在登录界面,确保选择的是 Xorg 而非 Xvnc。如果问题依旧,继续下一步。
2. 配置用户级别的桌面环境变量
通过创建 ~/.xsessionrc 文件,强制指定完整的 GNOME 会话。
在 Ubuntu 虚拟机中(可以通过当前简陋的远程会话,或直接在本地登录)打开终端,执行:
bash
nano ~/.xsessionrc
粘贴以下内容:
bash
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
按 Ctrl+O 保存,按 Ctrl+X 退出。
然后重启 xrdp 服务:
bash
sudo systemctl restart xrdp
或者直接关闭虚拟机再启动。重新连接后,桌面图标和 Dock 栏应该恢复正常。
参考资料