I'm setting up an automated system that runs scripts on a single physical machine using two operating systems: Windows and Ubuntu. Currently, everything's running on Windows 7, and I want to integrate Ubuntu while keeping the same hardware and automating the whole process. I'll set up the Ubuntu environment on a separate server that will serve its image. The plan is to possibly migrate Windows to centralized storage if needed in the future. The main reason for this setup is scalability; I want to be able to reuse the same Ubuntu setup across multiple machines without having to install it locally on each one. I need this to run unattended, ideally scheduling the scripts to execute daily at 6:00 AM with automatic switching between OSes. I'm considering two approaches: using PXE combined with iPXE for a network boot, or PXE with iSCSI for a network-backed system. I'm looking for advice from anyone who has tackled a similar dual-OS automated execution setup, especially regarding boot architecture and potential issues.
4 Answers
You might want to invest in a server-grade motherboard that supports remote management features like ILO, IPMI or similar. This way, you can change the boot drive directly without relying on external services, which may enhance performance.
Having been down a similar path, I recommend against the dual-boot setup. It's pretty outdated. Instead of dual-booting, consider remote access to either OS—like SSH into Linux or RDP into Windows. You could also look into virtualization, like using WSL2 for Windows, which works pretty well. If you're running scripts directly on hardware, I'd suggest keeping the OSs separate or virtualizing them.
Thanks for your input! I get what you're saying, but I'm concerned about whether PCIe and USB devices will perform as expected with virtualization or remote access. My goal is to keep everything as close to native performance as possible.
Just go for virtual machines! It's a lot easier than trying to set up a network-boot system, which can turn into a maintenance headache.
I see your point about simplicity, but radical simplicity isn't the main goal here. I need to interact with PCIe and USB devices that have strict requirements for driver performance. Virtualization can introduce some tricky layers that might mess with timing and low-level interactions.
Both options could work for you, but NFS tends to be simpler if you’re just running one machine. PXE can be handy for managing multiple systems, but if this is for just one with known hardware, there are other ways to automate the boot partition transitions. Also, is this really a classroom thing? It seems vaguely planned.
No, this isn’t for a classroom. The setup involves a machine with multiple connected devices running scripts in both Windows and Ubuntu. For instance, PC A runs scripts on Windows and then boots Ubuntu from PC B to run additional scripts. I'm planning this for only one machine right now, but in a few years I might expand to a few more.

That idea holds for standalone setups, but my goal is to keep Linux external for scalability. I want a central Linux image to use across various machines to keep things consistent and make updates easier. I'll clarify this point in my original post.