Issues
- Issue #6191 - Improve secure installation media preparation process for Windows and Mac users
- Issue #1415 - Make Qubes images compatible with UNetbootin
- Issue #2051 - Consider relaxing installation medium validation check to accommodate Windows
All of the above are more or less the same. How many times people have asked about installation media verification failure on forum (and elsewhere)? Since they used Rufus on Windows to create their media.
Brief rant / ignore this
Telling user to go write the ISO to Flash stick with dd on a Linux/macOS/_nix based machine is far from perfect. Many just bought a PC with Windows preinstalled and do not have access to *nix based OS. And dd is scary not only for people from Windows background, but also for veteran Linux users. A simple typo and you wipe your precious data. Many humorously refer to it as Disk/Drive Destroyer or The Data Destroyer.
Telling them to go buy a certified Laptop with Linux preinstalled is also far from perfect.
We could/should do better.
Analysis
Windows adds “Volume Information” directory to FAT filesystem automatically. What this directory is, its content and how to suppress its creation is discussed in issue #2051 during a detailed conversation between Marek and Pete Batard (creator of Rufus). It is impossible to completely switch to ext4 for installation media as (W)Intel had managed to force FAT in ESP specs.
Solutions
Relaxing Installation Medium Validation
We could reject the above idea. Qubes OS is a security focused project. What we need is more verification. Not less.
Two stage Installation Media Creation
1st ISO is burnt to Flash. It has only one ext4 partition bootable in legacy mode. Verifies itself after boot. Then asks for another USB Flash to burn the actual installation media. This solution is complex and needs two Flash drives. Better to skip it.
Dedicated Media creation tool
It is not rocket science. It should be possible to fork one of the existing ones, make a native one for Qubes OS with advanced checksum verification. Adding Windows policy modification tricks to it to temporarily suppress Volume Information
directory creation. So here are some of the candidates.
- Rufus is open source but Windows only. So unusable.
- UNetbootin code looks horrible. The project Github page is like a graveyard. With many unattended open issues and open pull-requests.
- balenaEtcher has become popular recently. But has Apache License. We could skip it.
- Fedora Media Writer - The best candidate so far. Written in C++ with Qt/QML. Cross-platform. Should be easy to compile and test on the existing templates.
Cross-platform concers
Since Qubes project might obtain a Windows Developer license for QWT, it might be possible to sign the Installation Media creator executable. We could skip macOS users for the time. Since new Macs are not x86-64 based machines and the old ones have dd.