无法在 Windows 10 上的 Hyper-V 中运行 ubuntu-frame

无法在 Windows 10 上的 Hyper-V 中运行 ubuntu-frame

我正尝试通过 Windows 虚拟化运行 ubuntu-frame,就像在物理硬件 (NUC) 上一样。但是,对于 Ubuntu Core-22 和 Ubuntu 22.04 LTS(服务器),ubuntu-frame 在 Hyper-V 下作为虚拟系统运行时无法启动。我从 Core-22 开始,但切换到服务器以在故障排除和解决方案选项方面提供更大的灵活性。

作为参考,下面是我部署每个方法的方法。

对于 Core-22,我使用 WSL2 + qemu-img(qemu-utils)将默认 img 转换为 vhdx,然后手动创建虚拟机。

qemu-img convert ubuntu-core-22-amd64.img -O vhdx -o subformat=dynamic ubuntu-core-22-amd64.vhdx

对于 Ubuntu 22.04 LTS,我使用 Multipass + cloud-init

multipass launch -n "ubuntu-kiosk" -m 4G -c 4 -d 20G --cloud-init ubuntu-kiosk.yaml 22.04

核心和服务器实例均已成功安装,我可以通过 SSH 连接到每个实例。但是,在安装 ubuntu-frame(为服务器添加 daemon=true)时,VT 4 显示黑屏,左上角闪烁着咒语。经检查,ubuntu-frame 已退出。我怀疑该问题与虚拟机管理程序虚拟图形适配器不受本机支持有关,但我不知道如何解决它。似乎以前就体验过在 Hyper-V 中运行的能力。

当我检查 NUC 上的日志时,我看到以下内容:

2023-10-12T19:01:17Z ubuntu-frame.daemon[1114]: [2023-10-12 19:01:17.379684] <information> gbm-kms: DRM device details:
2023-10-12T19:01:17Z ubuntu-frame.daemon[1114]: [2023-10-12 19:01:17.379725] <information> gbm-kms: /dev/dri/card0: using driver i915 [Intel Graphics] (version: 1.6.0 driver date: 20201103)

当我检查核心和服务器虚拟实​​例下的日志时,看到以下内容:

2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: [2023-10-12 20:29:59.056802] <information> eglstream: Failed to query DRM node for EGLDevice: Failed to determine DRM device node path from EGLDevice: EGL_BAD_PARAMETER (0x300c)
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: [2023-10-12 20:29:59.056812] < - debug - > eglstream: EGLDeviceEXTs found, but none are suitable for Mir
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: [2023-10-12 20:29:59.056817] <information> mirserver: (Unsupported by system environment)
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: [2023-10-12 20:29:59.056822] <information> mirserver: Found display driver: mir:gbm-kms (version 2.15.0)
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: [2023-10-12 20:29:59.056945] <information> gbm-kms: Unsupported: No DRM devices detected
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: [2023-10-12 20:29:59.056989] <information> mirserver: (Unsupported by system environment)
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: [2023-10-12 20:29:59.057027] <information> mirserver: Found display driver: mir:x11 (version 2.15.0)
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: [2023-10-12 20:29:59.057045] <information> mirserver: (Unsupported by system environment)
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: ERROR: ./src/server/graphics/default_configuration.cpp(233): Throw in function virtual const std::vector<std::shared_ptr<mir::graphics::DisplayPlatform> >& mir::DefaultServerConfiguration::the_display_platforms()
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: Dynamic exception type: boost::wrapexcept<std::runtime_error>
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: std::exception::what: Exception while creating graphics platform
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: ERROR: ./src/server/graphics/platform_probe.cpp(190): Throw in function std::vector<std::pair<mir::graphics::SupportedDevice, std::shared_ptr<mir::SharedLibrary> > > {anonymous}::modules_for_device({anonymous}::ModuleType, const std::vector<std::shared_ptr<mir::SharedLibrary> >&, const mir::options::ProgramOption&, const std::shared_ptr<mir::ConsoleServices>&)
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: Dynamic exception type: boost::wrapexcept<std::runtime_error>
2023-10-12T20:29:59Z ubuntu-frame.daemon[2803]: std::exception::what: Failed to find any platforms for current system
2023-10-12T20:29:59Z systemd[1]: snap.ubuntu-frame.daemon.service: Main process exited, code=exited, status=1/FAILURE
2023-10-12T20:29:59Z systemd[1]: snap.ubuntu-frame.daemon.service: Failed with result 'exit-code'.

目标是通过 ubuntu-frame 为 Ubuntu-Core 提供一个开发环境。为此目的,回退到服务器可能没问题,甚至仅为开发目的更新内核快照。我希望,因为这是 Hyper-V,所以复制起来会很容易。任何帮助都将不胜感激。

答案1

我找到了 2021 年的几篇文章,其中提到 Hyper-V DRM 显示驱动程序将包含在 Linux 5.14 内核中。Ubuntu 22.04 LTS 内核是 5.15,但显然没有包含预期的 Hyper-V 支持。我认为最简单的方法是升级到 Ubuntu 22.04 LTS 的 HWE 内核,即 6.2。进行此更改后,ubuntu-frame 即可按预期启动。

sudo apt-get install linux-image-generic-hwe-22.04

相关内容