Hyper-V 启动 openSUSE 失败

我前两天把我的两个 Linux 重新装了一遍,还是 Ubuntu 和 openSUSE

我大部分时候用 Windows,当我懒的重启的时候我会用 Windows 自带的 Hyper-V 去启动实体盘里的 Linux

但我发现一直以来用 Hyper-V Ubuntu 都能正常启动,而 openSUSE 不能???

进入 initramfs 后我看了一下 log,什么明显的错误都没报,但突然dracut-initqueue timeout刷屏了,大概刷了一屏幕后提示 can’t boot,之后就进入了 initramfs


顺便放一下分区表:

  • EFI
  • LUKS/LVM2
    • ext4: Ubuntu-root
    • btrfs: openSUSE-root
    • btrfs: harmony-home

感觉只能解压缩 initramfs
手动改里面的启动脚本 来调试
然后重新压缩回去测试

@marguerite 你怎么看?
我最不理解的就是为什么 Ubuntu 能在 hyper-v 下启动而 openSUSE 不行

Hyper-V 启动的是 VHD,你启动实体 Linux 应该把你的 workaround 说的更详细。

我启动的不是 VHD,我是挂载的实体盘


我还有另外一个 Ubuntu 的虚拟机配置和这个一样,这两个虚拟机唯一差别就是启动项顺序

我感觉是 kernel 差异,也许是在 firmware。排查起来比较困难,思路就是你 minimal install 一个 VHD 的 openSUSE 和一个全新的硬盘 openSUSE,就是那种连 Xorg 都没有的。导出软件包列表比较。看看 VHD 的多装了什么,对应装上应该就可以了。Ubuntu 也许没弄那么细。更简单的方法是去 opensuse-kernel 列表问,但是我感觉不拿出点东西证明你做了功课,那帮人也许不会回复你。

我 Hyper-V 里装了一个对照用的 openSUSE,这两个系统只差一个hyper-v包。
装完之后也没提示更新 initramfs,上 Hyper-V 试一下果不其然是不好使的。

Windows 10 2004 开始 Hyper-V 能和 VMWare 共存了,我试着用了一下 VMWare,竟然能用

试试:

Set-VMFirmware -VMName “VMname” -EnableSecureBoot Off

官网扒来的

早就关了
我在 reddit 发帖子问了,要是没有人知道的我再去英文论坛问一问

哈哈哈完全没人鸟我
https://forums.opensuse.org/showthread.php/544630-Why-openSUSE-Tumbleweed-installed-on-bare-metal-cannot-boot-from-Hyper-V

超时停在 initramfs 状态, 多数情况是在等 rootfs 挂载失败,进去看,看看 initramfs 状态中,blockdev 是怎样的。 lsblk , /sys/block/ 目录等