I have a Lenovo Y510P, and it's running Linux (Antergos). I've read that I need to have windows running to update the BIOS. I'm guessing it's a no because it is a sandboxed environment, but I want to be sure because I've had a lot of trouble with the boot menus installing new OSes.
Technically, yes, it is possible. Practically, not with any VM I’ve tried.
The problem is, that you need to
- Know which hardware devices the BIOS updater writes to. (Like some NVRAM device.)
- Make your host OS aware of that hardware. (Like having them as a file in /dev/. A driver is only required for devices it is attached to… like a bus, for example.)
- Make your VM pass these devices through to the guest.
With Linux as the host, steps 1 and 2 should be doable, if the hardware is not something proprietary or very exotic. (E.g. NVRAM is easy.) The problem is that no VM I know of can pass through arbitrary hardware. They can do USB and PCI and drives, etc. But not just any random piece of hardware. Because, and that is my answer: The VM software would also need a kind of “driver” to know how to actually do the passing through while policing what the client is allowed.
So in practice, there are two choices:
- Hardware that Linux can see as “normal” hardware… E.g. NVRAM may be presented as just a normal block device that you can
ddto. You don’t need a VM at all, and can do the update straight from Linux. (Though beware, as the original BIOS updaters usually do some very important checks, like it being actually compatible with the hardware, etc. Otherwise you may end up with a brick.)
- Anything else, where you’d have to contribute to KVM/qemu and add passthrough for your specific hardware.
TL;DR: Everything is possible, if you’ve got all the time to do it. Unless it’s outside of your event horizon. ;)
Or even shorter: No.