在使用Virtualbox启用UEFI并安装Debian后,第二次却无法启动。你刚才还是可以启动的!

結論:

VirtualBox 6.1 で修正されたようだ。最初のバグ報告がVBoxでされてから8年越し。

内容

    • VirutalBoxのUEFI NVRAMのバグ。

 

    • VirtualBoxのUEFIサポートは未だにexperimentalで、バグとしても扱う気はないらしい。

 

    • WindowsやRHEL/CentOS/Fedora/openSUSEはUEFI規格を無視してこのような壊れたUEFI firmwareの挙動を隠蔽する方向で対処している(そして互換性を破壊している)ので、問題が表面化しない。

 

    • 迂回したければ、以下の方法を取る

/boot/efi/EFI/{debian,ubuntu} を/boot/efi/EFI/boot にコピーする
/boot/efi/EFI/startup.nsh に FS0:\EFI\debian\grubx64.efi を記述する

经过、经历

说起来,在Debian的Virtualbox上启用UEFI并安装Debian,第一次可以启动,但从第二次开始就无法启动的现象,我记得很久很久以前我已经提交了一个错误报告。

我们再深入一些吧。

    • 同じDebian vboxイメージをUSBディスクで運んでWindows10のVirtualBox5.1.2で動作するのか

いや、本当はVirtualbox5.0.2xでやったほうが良い気もするんだけども
それとも実はd-iのこのバージョンのバグで、今のだと直ってるかもしれないから、とりあえずstretch alpha5で入れる

同じDebian vboxイメージをvirtualbox.org提供パッケージで動かしたらどうなのか
レポート中に「このパーティション、このフォーマットでいいの?」があるけど、このパーティションタイプを無理やり変えたらどうなのよ?

感想:安裝過程太慢。在stretch alpha5的過程中出錯並停止。為什麼上次進行得很順利?>我
重新開始。好困。想睡…

再一次

    • Virtualbox 5.1.4 on Windows10 での Debian でも同様だった。

 

    Virtualbox 5.0.24 on Debian で作ったイメージを Virtualbox 5.1.{2,4} on Windows10 に持って行っても同じ

只需要一种选择的原生中文来改写以下句子:

    インストール後、VMの電源を一度切らなければ大丈夫

那真是讨厌的呢… (Nà shì de ne…)

通过差分分析来寻找原因

Debian在实体机的UEFI上和Fedora在Vbox的UEFI上都没有问题。唯独Debian在Vbox上有问题。

    • UEFIパーティション情報が違う?

若干違うように見えるが、実質変わらず。

/boot 以下が違う?

ビンゴ。

使用 /boot/efi/EFI/debian/grubx64.efi 从 UEFI shell 启动是可行的。
虚拟机中的 Fedora24 可以不使用 UEFI shell 启动,并且它的 /boot/efi 分区中有不同的文件。

/boot/efi/EFI/BOOT/BOOTX64.EFI
/boot/efi/EFI/BOOT/fallback.efi

一旦删除那些文件,Fedora24将无法引导。可能VirtualBox UEFI寻找的是/boot/efi/EFI/BOOT,而不是/boot/efi/EFI/${distro}。我不知道这种行为是否正常,但在我的观点中,最好在d-i中添加解决方法。

只是将这些文件(/boot/efi/EFI/BOOT/BOOTX64.EFI和/boot/efi/EFI/BOOT/fallback.efi)复制到VirtualBox上的Debian中不会启动,会一直出现错误并重新启动。

根本原因

这是关于在可移动媒体路径上强制安装grub-efi的Debian Wiki页面。

我简洁概括一下:

    • いくつかのUEFI firmware実装が腐ってて、EFI/boot以下しか見ないっぽい。おかしいだろ

 

    • Windowsが腐ったUEFI firmwareに対応する方法として、リムーバブルメディア用に予約されてるディレクトリにEFIなファイルを突っ込むようにして問題を隠蔽した。

これは本来やっちゃいけない

そして、RHEL/CentOS・Fedora・openSUSEはWindowsと同じ挙動をするような実装にしている。お前らもかよ。。。

Debian/Ubuntuはspec守ってるから、VirtualBoxのUEFIのバグを踏んで起動しない。

你能以某种方式解决这个问题吗?

在这个链接中,你可以找到关于如何手动处理的说明,主要是关于强制将grub-efi安装到可移动媒体路径上。

因为这太麻烦了,所以我提出了一个建议,说如果是VirtualBox环境,可以实现自动处理的解决方案。 但是,这个提议被拒绝了。 唉。

VBox的问题所在。

如果能在https://www.virtualbox.org/changeset/43256/vbox附近做些调整就好了,这是一个建议。

广告
将在 10 秒后关闭
bannerAds