![我可以在虚拟机内更新 BIOS 吗?](https://linux22.com/image/1552539/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%9C%A8%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%86%85%E6%9B%B4%E6%96%B0%20BIOS%20%E5%90%97%EF%BC%9F.png)
我有一台联想 Y510P,它运行的是 Linux(Antergos)。我读到我需要运行 Windows 才能更新 BIOS。
我猜答案是否定的,因为它是一个沙盒环境,但我想确定一下,因为我在启动菜单安装新操作系统时遇到了很多麻烦。
答案1
从技术上来说,是的,这是可能的。实际上,我尝试过的任何 VM 都无法做到这一点。
问题是,你需要
- 了解 BIOS 更新程序写入哪些硬件设备。(例如某些 NVRAM 设备。)
- 让您的主机操作系统了解该硬件。(就像将它们作为 /dev/ 中的文件一样。驱动程序仅适用于所连接的设备……例如总线。)
- 让您的虚拟机将这些设备传递给客户机。
使用 Linux 作为主机,如果硬件不是专有的或非常奇特的东西,步骤 1 和 2 应该是可行的。(例如 NVRAM 很容易。)问题是,据我所知,没有虚拟机可以通过随意的硬件。它们可以处理 USB、PCI 和驱动器等。但不是任何随机硬件。因为,这就是我的答案:VM 软件会还需要一种“司机”来知道如何实际通过,同时监督客户允许做什么。
因此在实践中有两种选择:
- Linux 可以视为“正常”硬件的硬件……例如,NVRAM 可能只是您可以访问的正常块设备
dd
。您根本不需要 VM,可以直接从 Linux 进行更新。(但要小心,因为原始 BIOS 更新程序通常会进行一些非常重要的检查,例如它是否与硬件真正兼容等。否则,您可能会得到一块砖头。) - 其他任何事情,您都必须为 KVM/qemu 做出贡献并为您的特定硬件添加直通。
TL;DR:一切皆有可能,只要你有足够的时间去做。除非它在你的事件视界之外。;)
或者更简短地说:不。