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 栏应该恢复正常。


参考资料

相关推荐
ZHECSDN2 小时前
Ubuntu内存优化实战:告别卡死,让Linux内存管理更智能
linux·ubuntu
唐朝板栗丶TDC2 小时前
Windows下使用WSL2创建Ubuntu子系统(更改安装位置与启动图形桌面)
linux·windows·经验分享·ubuntu
明月夜&2 小时前
Ubuntu 20.04 Docker 部署 Ollama + DeepSeek-Coder:本地 AI 编程助手实战
git·vscode·ubuntu·docker·大语言模型·智能体
blog.pytool.com3 小时前
Ubuntu + VSCODE +aarch64 +qt +qmake +clangd
linux·qt·ubuntu
弹简特3 小时前
【Linux命令饲养指南】Ubuntu 安装 MySQL【AI辅助实现】
linux·mysql·ubuntu
web守墓人4 小时前
【linux】Mubuntu发布,将完整的ubuntu arm装进手机应用中
linux·arm开发·ubuntu
the sun344 小时前
NFS 配置全指南 —— 从踩坑到手动挂载的完整落地
linux·运维·服务器·ubuntu
知识浅谈18 小时前
OpenClaw保姆级安装教程:基于ubuntu系统
linux·ubuntu·node.js
青花瓷21 小时前
ubuntu22.04的ibus中文输入法的安装
运维·ubuntu