我的文章
linux

对于Mac版VMware Fushion Pro H26虚拟机在安装Ubuntu 22.04系统时卡在开机加载页面的的解决方案

VMware Fusion 中 Ubuntu 22.04 卡在 EFI:通过 SSH 升级内核解决

环境

  • Mac:Apple Silicon(M 系列芯片)
  • 虚拟机:VMware Fusion
  • 系统:Ubuntu Server 22.04.5 ARM64
Apple Silicon 必须使用 ARM64/AArch64 镜像,不能使用 AMD64/x86_64 镜像。

问题描述

Ubuntu 安装完成并重启后,VMware 窗口一直停在下面几行:

EFI stub: Booting Linux Kernel...
EFI stub: EFI_RNG_PROTOCOL unavailable
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services...

image

这里的 EFI_RNG_PROTOCOL unavailable 不一定是致命错误。我的虚拟机其实已经在后台启动,只是 VMware 窗口无法继续显示。

当时系统使用的是 5.15.0-198-generic 内核。这个版本中的 vmwgfx 虚拟显卡驱动与当前 VMware Fusion 的 ARM 图形环境兼容得不好。VMware 官方也建议 Linux ARM 客户机使用 5.19 或更新内核,以获得更好的图形支持。

解决办法

1. 通过 SSH 登录虚拟机

前提是安装 Ubuntu 时已经勾选 Install OpenSSH server,并且知道虚拟机的 IP 地址。

在 Mac 的终端中输入:

ssh 用户名@虚拟机IP

例如:

ssh ubuntu@192.168.x.x

如果能够登录,说明 Ubuntu 本身已经启动,问题主要出在 VMware 的画面显示。

2. 查看当前内核

uname -r

我当时看到的是:

5.15.0-198-generic

3. 安装 Ubuntu 22.04 的 HWE 内核

sudo apt update
sudo apt install -y linux-generic-hwe-22.04

安装完成后重启:

sudo reboot

我这里重启后使用的是 6.8.0-138-generic,VMware 控制台已经可以正常显示。

4. 如果之前屏蔽过 vmwgfx

排查过程中,我曾尝试加入下面这个启动参数:

modprobe.blacklist=vmwgfx

它会阻止 VMware 显卡驱动加载,所以升级内核后必须删除。如果你从来没有加过,可以跳过这一步。

先检查:

grep -n vmwgfx /etc/default/grub

如果有结果,就编辑配置:

sudo nano /etc/default/grub

从 GRUB_CMDLINE_LINUX_DEFAULT 中删除 modprobe.blacklist=vmwgfx,然后执行:

sudo update-grub
sudo reboot

验证结果

重新连接 SSH,检查内核和显卡驱动:

uname -r
lsmod | grep vmwgfx
ls /dev/fb0 /dev/dri/card0

如果能看到 6.8 系列内核、vmwgfx,并且图形设备文件存在,就说明修复生效了。

可选:安装完整桌面

如果和我一样安装的是 Ubuntu Server 镜像,可以继续安装 GNOME 桌面:

sudo apt install -y ubuntu-desktop
sudo systemctl set-default graphical.target
sudo systemctl enable gdm3
sudo reboot

如果安装桌面后只有黑屏,可以编辑:

sudo nano /etc/gdm3/custom.conf

找到下面一行并去掉开头的 #,让系统使用兼容性更好的 Xorg:

WaylandEnable=false

保存后再次重启,最终成功进入 Ubuntu 桌面:

image

小结

这次并不是 Ubuntu 安装失败,而是旧内核下的 VMware 虚拟显卡兼容问题。


升级到 HWE 内核后,VMware 控制台恢复正常.

## 参考

- [VMware:Apple Silicon 上 ARM 客户机的兼容性说明](https://knowledge.broadcom.com/external/article/315602)