Hi, Rick Thomas reported that the boot process of firmware-buster-DI-alpha2-amd64-DVD-1.iso fails with Incorrect CD-ROM detected after it was re-partitioned to GPT.
It seems that the software in the initrd of a Debian isohybrid wants a mountable partition with the ISO 9660 filesystem and file /.disk/info, if the ISO is presented on USB stick. But after replacing the MBR partition table by the GPT, we do not have a mountable ISO 9660 partition. And we cannot make one that fits, because no GPT partition may start at block 0. And even if we force this start, the ISO partition would overlap with the EFI partition. This is explicitely forbidden in UEFI specs. I will think about possibilities to repack the ISO image so that it is representable as GPT partition and that the EFI partition sits outside the ISO partition. Rick, did you already try whether you can force your EFI to start with the unchanged, MBR partitioned firmware-buster-DI-alpha2-amd64-DVD-1.iso ? Currently it seems that only this partition table has hope for success with the later stages of booting in that ISO. ----------------------------------------------------------------------- Reasoning: The initrd works with isohybrid USB stick more or less by accident. Not the isohybrid device is enumerated and inspected, but its partitions. This does not really match the idea of the device on which the isohybrid is to be presented to the computer. (It should look in partitions for FAT and on base devices for ISO 9660.) Confused by this, i wrote about the software in the initrd of firmware-buster-DI-alpha2-amd64-DVD-1.iso: > var/lib/dpkg/info/cdrom-detect.postinst : > devices="$(list-devices cd; list-devices maybe-usb-floppy)" > [...] > either i misunderstand the scripts or script execution should not get > there under normal circumstances. Script bin/list-devices on my running system yields device paths of the USB stick with the unchanged, MBR based firmware-*-DVD-1.iso $ bin/list-devices usb-partition /dev/sdc1 /dev/sdc2 In cdrom-detect.postinst i read: devices="$(list-devices usb-partition)" for device in $devices; do if try_mount $device $CDFS; then db_set cdrom-detect/hybrid true break 2 fi if try_mount $device $FATFS; then db_set cdrom-detect/usb-hdd true break 2 fi done In function try_mount() of cdrom-detect.postinst : try_mount() { local device=$1 local type=$2 local ret=1 if mount -t $type -o $OPTIONS $device /cdrom; then which i replay successfully by # mount -t iso9660 -o ro,exec /dev/sdc1 /cdrom # (Directory /cdrom gets created by cdrom-detect.postinst in line 96 mkdir /cdrom 2>/dev/null || true ) Now there should be log messages. Either CD-ROM mount succeeded: device=/dev/sdc1 fstype=iso9660 or CD-ROM mount failed: device=/dev/sdc1 fstype=iso9660 In case of success, the /cdrom/.disk/info decides whether Debian ISO or not: if [ -e /cdrom/.disk/info ]; then CDNAME=$(cat /cdrom/.disk/info) log "Detected CD '$CDNAME'" In my test it exists and the log should say Detected CD 'Debian GNU/Linux buster-DI-alpha2 "Buster" - Official Snapshot amd64 DVD Binary-1 20171205-15:32' In case of failure there would be: The CD in /dev/sdc1 is not a Debian CD! But because the GPT does not have a mountable partition with the ISO, and the EFI partition was mountable as FAT, we get the slightly misleading message about an unsuitable CDROM. This message can be emitted with isohybrid USB sticks and with "usb-hdd" sticks (which i assume are the ones with the interesting FAT filesystems). ----------------------------------------------------------------------- Have a nice day :) Thomas