You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
initrd: add ISO boot detection and USB filesystem validation
Add runtime detection to warn users when their ISO doesn't support
boot from ISO file on USB stick.
Changes:
- Add detect_iso_boot_method() to scan initrd for boot quirks
(findiso, iso-scan, live-media, boot=casper, inst.stage2, nixos)
- Detect USB stick filesystem type (ext4/vfat/exfat) from blkid
- Use strings on initrd binary directly (works when cpio fails)
- Validate ISO initrd supports reading USB filesystem
- Show warning when FS not supported
- Filter out installer initrds from detection
- Show warning dialog when boot may fail
- Add distro-specific kernel params for Ubuntu, Debian, Tails,
Fedora, NixOS, PureOS, Arch
- Detect inst.stage2= as anaconda-specific (Fedora Silverblue)
Tested ISOs (2026-04):
Working:
- Ubuntu Desktop (iso-scan/filename)
- Debian Live kde/xfce (findiso)
- Tails standard (live-media=removable, ext4/vfat)
- Tails exfat-support ISO (exfat)
- Fedora Workstation (boot=casper)
- NixOS (findiso)
- PureOS (boot=casper)
Not working (use dd or alternate):
- Debian DVD (CD-only design)
- Fedora Silverblue (anaconda, inst.stage2=)
References:
- https://a1ive.github.io/grub2_loopback.html
- https://wiki.archlinux.org/title/ISO_Spring_(%27Loop%27_device)
- https://wiki.debian.org/DebianInstaller/CreateUSBMedia
Signed-off-by: Thierry Laurion <insurgo@riseup.net>
| Qubes OS R4.3+ | inst.repo=hd:LABEL= | ext4/vfat | works |
146
+
| NixOS | findiso | ext4/vfat/exfat | works |
147
+
| PureOS | boot=casper | ext4/vfat/exfat | works |
148
+
149
+
### Known Incompatible ISOs
150
+
151
+
| Distribution | Reason | Workaround |
152
+
|--------------|--------|------------|
153
+
| Debian DVD | CD-only design, no USB boot |`dd` or use Debian netinst |
154
+
155
+
**Fedora Silverblue / Qubes OS**: These use Anaconda installer with `inst.stage2=` or `inst.repo=` parameters. The initrd includes Dracut's iso-scan module which can find ISO files on USB when the correct LABEL/UUID is provided. Works with ISO file boot when USB has matching label.
156
+
157
+
### References
158
+
159
+
-[GRUB2 loopback ISO boot](https://a1ive.github.io/grub2_loopback.html)
160
+
-[Arch Linux ISO Boot](https://wiki.archlinux.org/title/ISO_Spring_(%27Loop%27_device))
161
+
-[Debian USB creation](https://wiki.debian.org/DebianInstaller/CreateUSBMedia)
162
+
163
+
---
122
164
123
165
Called from the boot menu. Responsible for final verification and OS handoff.
"ISO boot from USB file may not work.\n\nThis ISO does not have iso-scan/findiso/live-media in its initrd - it was designed for CD/DVD or dd-to-USB.\n\nKernel parameters passed externally may not be sufficient.\n\nTry:\n- Use distribution-specific ISO (e.g., Debian hd-media)\n- Write ISO directly to USB with dd\n- Use a live USB image\n\nDo you want to proceed anyway?" \
152
+
0 80;then
153
+
DIE "ISO boot cancelled - unsupported ISO on USB file"
154
+
fi
155
+
else
156
+
NOTE "This ISO does not have iso-scan in initrd"
157
+
NOTE "Try: dd ISO to USB, or use live USB image"
158
+
INPUT "Proceed with boot anyway? (y/N):" -n 1 response
159
+
if [ "$response"!="y" ] && [ "$response"!="Y" ];then
160
+
DIE "ISO boot cancelled - unsupported ISO on USB file"
161
+
fi
162
+
fi
163
+
fi
164
+
fi
165
+
166
+
# Detect USB stick filesystem and validate initrd supports it
0 commit comments