Hahaha. No no no no no. My explanations are becoming more and more abiguous. My bad
I meant the initial loading of the xen.gz
, vmlinuz
and initrd.img
files. The PXE server seems to not be able to serve those files in parallel to multiple machines simultaneously.
Once you serve the ISO over another protocol (I used NFS), thereâs no bottleneck whatsoever
At least, thatâs what I encountered in my testing of getting 6 legacy boot laptops and 6 UEFI boot laptops to PXE boot the Qubes ISO simultaneouslyâŚ
Maybe thereâs a config I havenât set up that allows thisâŚmaybeâŚ
I would respectfully argue that these attacks are just moved to a different placeâŚ
Again, youâd still have the same drive requirements, but they would be in a different place. Instead of being locally connected to the target machine, theyâd be inside another machine.
This means youâd have to accommodate for TWO attack vectors:
- Firmware attacks on TWO devices:
- The drive that is hosting your Qubes OS boot image, as well as the actual machine that this drive is connected to
- Your network stack on both your client and server, as well as any intermediary network infrastructure
Many would argue that this is more cumbersome than connecting a physical drive to a SATA/NVME/PCI slot on a motherboard, but it appears tht this approach better suits your use case.
Just be sure to factor all of this in when you use it
Ok, Iâll give you that one
Another good point
Can be a blessing and a curse simultaneously, but Iâll give you that one too
Assuming the âknown good stateâ Qubes OS install that youâre booting from stays in âmint conditionâ, but yes, Iâll give you that one too
Was about to say this, but you beat me to it
There is potential for VLANs to alleviate some of these issues, allowing you to use a single NIC, but Iâd need to investigate a lot deeper into this than I already haveâŚ
I donât want to give you any wrong information
That would definitely be possible, but if you were to do that to a current Qubes OS install without any modifications, do you realise how much RAM youâd actually needâŚ?
The dom0 partition in the current standard Qubes OS install is at least 24GB.
That means:
- Youâd lose at least 24GB of the clientâs RAM to a dom0 ramdisk
- This would only really be viable on server motherboards with a billion and one RAM slots (mad respect if you have such a motherboard, Iâm super jealous!)
- Your options for doing this are basically including a complete dom0 in the
initrd.img
, essentially making the initramfs 25GB, which would likely take 30-90+ minutes to serve via PXE
- Copying dom0 into RAM via NFS would be quicker, but would require a fair amount of âhacky shenanigansâ to accomplish
- Most of the work has been done with what youâve already tinkered with regarding running Qubes OS entirely in RAM
Excellent.
Ok, so then thatâs a potential methodology for PXE.
Youâre starting to get the hang of PXE. Nice
So then I guess youâve decided that each machine gets their own Qubes OS install on the server
Off the top of my head, I would say:
- PXE serve
xen.gz
,vmlinuz
, andinitrd.img
- Have the
initrd.img
contain a complete read-only dom0
OR
- Have a dom0 served via NFS as an image file once the
initrd.img
was served via PXE, allowing faster boot times of client machines, particularly if multiple clients are booting simultaneously
- Have Templates served via NFS
- Allows on-demand loading/unloading of templates and AppVMs
- Templates can be loaded by multiple clients simultaneously, provided they are read-only, avoiding clients âfighting over control of the templatesâ
- Serve AppVMs (or at least configuration files for AppVMs) via NFS
- Allows each client to have their own persistent configuration
- Serve some AppVMs via VNC
- Allows some AppVMs to run on the server
- Can be useful when running Qubes OS on a very underpowered client, and you need those extra system resources
- Serve a user database via LDAP or PAM
- Would allow all clients to boot from the same Qubes install, log in with their unique username and password, and have all their configs and custom AppVMs load on any client machine
- Optional (and is likely not as straightforward as I am describing it, so donât get your hopes up just yet )
But in any case, you are definitely onto something, and I propose forking this thread to better facilitate this endeavour