Hyper-V Ubuntu 24.04 虚拟机开启增强会话(Enhanced Session)完整指南

📖 引言

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 虚拟机

  1. 打开 Hyper-V 管理器,点击右侧"新建" → "虚拟机"。
  2. 指定名称和位置 :例如 Ubuntu 24.04 Enhanced
  3. 选择代数 :务必选择第二代(支持 UEFI 和增强会话所需的功能)。
  4. 分配内存:建议 4096 MB 或更多,并勾选"为此虚拟机使用动态内存"。
  5. 配置网络:选择已创建的虚拟交换机(如"默认交换机"),确保虚拟机可以联网。
  6. 连接虚拟硬盘:创建新虚拟硬盘,建议大小 50 GB 以上。
  7. 安装选项:选择"从可启动的映像文件安装操作系统",浏览并选中下载的 Ubuntu 24.04 ISO 文件。
  8. 完成创建向导,但不要立即启动虚拟机。

关键调整:关闭安全启动

  1. 在 Hyper-V 管理器中,右键点击刚创建的虚拟机,选择"设置"。
  2. 转到 "安全" 选项。
  3. 取消勾选"启用安全启动"
  4. (可选)在 "固件" 中,确保 DVD 驱动器启动顺序排在硬盘之前。
  5. 点击"确定"保存设置。

三、安装 Ubuntu 24.04

  1. 启动虚拟机,进入 Ubuntu 安装界面。
  2. 按照提示选择语言、键盘布局等。
  3. 在"安装类型"中选择"清除整个磁盘并安装 Ubuntu"(标准安装即可)。
  4. 创建用户时,务必勾选"Require my password to log in" (要求密码登录),并设置一个非空的密码。这是后续 xrdp 正常工作的前提。
  5. 等待安装完成,重启虚拟机。

四、在 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.04linux-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. 优化与清理(可选但推荐)

  • 避免登录黑屏:创建一个模块黑名单文件,可加快登录速度。

    bash 复制代码
    echo "blacklist vmw_vsock_vmci_transport" | sudo tee /etc/modprobe.d/blacklist-vmw_vsock_vmci_transport.conf
  • 解锁系统钥匙环:避免每次登录弹出"解锁钥匙环"提示。

    bash 复制代码
    sudo 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。

六、连接并使用增强会话

  1. 启动 Ubuntu 虚拟机。
  2. 在 Hyper-V 管理器中,右键点击虚拟机,选择 "连接"
  3. 此时应弹出一个新的窗口,而不是传统的 VMBus 控制台。在登录界面:
    • 会话类型 下拉菜单选择 Xorg (或 X11rdp),不要选 Xvnc
    • 输入用户名和密码登录。
  4. 连接成功后,你可以在窗口上方的工具栏中点击 "显示选项" ,配置本地资源:
    • 剪贴板:勾选后可在宿主机和虚拟机间双向复制粘贴。
    • 驱动器:勾选后可将宿主机的磁盘分区或文件夹映射到虚拟机中。
    • 显示器:可调整分辨率或启用多显示器支持。

恭喜!至此,你已经成功为 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 栏应该恢复正常。


参考资料

相关推荐
lbb 小魔仙11 小时前
Ubuntu 22.04 + Windows 本地部署 AI 大模型完全指南:Ollama + Python 调用实战(附国内加速配置)
人工智能·windows·python·ubuntu
萧行之1 天前
Ubuntu+Windows双系统:解决GRUB不显示Windows启动项、一闪而过问题
linux·windows·ubuntu
搬砖的小码农_Sky1 天前
Linux操作系统:Ubuntu和Debian的区别
linux·ubuntu·debian
江湖有缘1 天前
基于Ubuntu系统Docker部署Note Mark:从安装到配置全流程
linux·ubuntu·docker
空中海1 天前
04 工程化、质量体系与 React 生态
前端·ubuntu·react.js
zhangrelay1 天前
云课实践速通系列-基础篇汇总-必修-通识基础和专业基础-2026--工科--自动化、电气、机器人、测控等
linux·笔记·单片机·学习·ubuntu·机器人·自动化
时光之源1 天前
安装WSL2后在其中安装Ubuntu24.04.4再安装OpenClaw全流程傻瓜式教学:WSL2 + Ubuntu 24.04 + OpenClaw
linux·运维·ubuntu·openclaw·龙虾
bellus-1 天前
Ubuntu26.04 部署
ubuntu
具身小佬2 天前
2D激光雷达发送的是什么信息
ubuntu
具身小佬2 天前
#!/usr/bin/env python3是干嘛的
ubuntu