home | list info | list archive | date index | thread index

Re: $100 bounty for resolving my issue for creating bootable USB drive

HI Robert,

Thank you for the follow-up. That's a great question.

The solution you found on Reddit is excellent and will work. Both methods
achieve the same goal: creating a proper hybrid-bootable ISO. The
difference is only in the approach.

The Reddit method uses a single, complex command to copy the required boot
data directly from the original ISO during the build process.

My method is more explicit: it first extracts that same boot data into
separate files, and then uses those files to build the new ISO.

The "extra steps" are just a different way of providing xorriso with the
same essential information. Either method will produce the bootable USB
drive you need.

Best regards,
Qingwei

On Fri, Aug 22, 2025 at 5:29 PM Robert P. J. Day via linux <
linux [ at ] linux-ottawa [ dot ] org> wrote:

>
>   i'm about to start testing this possibility, but i'm still curious
> as to why it seems to need a couple extra steps compared to this
> alleged solution:
>
>
> https://www.reddit.com/r/Ubuntu/comments/1g0cq09/how_to_create_a_custom_ubuntu_24041_image_by/
>
> do the steps at that link simply not work?
>
> On Fri, 22 Aug 2025, Qingwei Zhang via linux wrote:
> >
> > HEY ROBERT,
> >
> > SAW YOUR EMAIL ABOUT THE UBUNTU ISO.
> >
> > PLEASE TRY THIS WAY, I THINK IT WILL WORK: [LINK TO THE SOLUTION STEPS]
> >
> > LET ME KNOW.
> >
> > BEST,
> >
> > QINGWEI
> >
> >
> > STEP 1: SET UP YOUR WORKSPACE
> >
> > First, create a workspace, unpack the ISO’s file content, and extract
> the specific boot files needed
> > by xorriso.
> >
> > # 1. Create directories for your work
> > mkdir -p ubuntu-custom/iso_contents
> > mkdir -p ubuntu-custom/boot_files
> >
> > # 2. Define the original ISO path
> > ORIGINAL_ISO="ubuntu-24.04.3-live-server-amd64.iso"
> >
> > # 3. Unpack the ISO contents using bsdtar (it handles rock ridge, etc.
> well)
> > # Using 'mount -o loop' is not sufficient as it doesn't expose the boot
> images.
> > bsdtar -C ubuntu-custom/iso_contents -xf "$ORIGINAL_ISO"
> >
> > # 4. Extract the MBR boot code template from the original ISO
> > dd if="$ORIGINAL_ISO" bs=1 count=432
> of=ubuntu-custom/boot_files/isohdpfx.bin
> >
> >
> ____________________________________________________________________________________________________
> >
> > STEP 2: THE XORRISO COMMAND TO REBUILD THE ISO
> >
> > This is the critical step. The following command tells xorriso to
> rebuild the ISO while embedding
> > all the necessary boot information for BIOS and UEFI systems. Run this
> from the ubuntu-custom
> > directory.
> >
> > # Change into the working directory
> > cd ubuntu-custom/
> >
> > # The magic incantation
> > xorriso -as mkisofs \
> >   -r \
> >   -V "Ubuntu 24.04.3 LTS" \
> >   --grub2-mbr boot_files/isohdpfx.bin \
> >   --protective-msdos-label \
> >   -partition_offset 16 \
> >   --mbr-force-bootable \
> >   -append_partition 2 0xef iso_contents/boot/grub/efi.img \
> >   -appended_part_as_gpt \
> >   -iso_mbr_part_type 0x00 \
> >   -c boot/boot.cat \
> >   -b boot/grub/i386-pc/eltorito.img \
> >   -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \
> >   -eltorito-alt-boot \
> >   -e boot/grub/efi.img \
> >   -no-emul-boot \
> >   -o ../rebuilt-ubuntu-server.iso \
> >   iso_contents/
> >
> >
> ____________________________________________________________________________________________________
> >
> > STEP 3: CREATE THE BOOTABLE USB
> >
> > Once the rebuilt-ubuntu-server.iso is created, write it to your USB
> drive using dd.
> >
> >  1. Identify your USB drive with lsblk. Be absolutely certain of the
> device name (e.g., /dev/sdc).
> >     Using the wrong device will destroy data.
> >  2. Write the ISO to the drive.
> >
> > # Replace /dev/sdX with your actual USB device name
> > sudo dd if=../rebuilt-ubuntu-server.iso of=/dev/sdX bs=4M
> status=progress oflag=sync
> >
> > The oflag=sync flag ensures all data is physically written before the
> command returns. The resulting
> > USB drive should now be recognized as bootable by your appliances.
> >
> >
> ____________________________________________________________________________________________________
> >
> > On Fri, Aug 22, 2025 at 4:45 PM Dnkorovkin via linux <
> linux [ at ] linux-ottawa [ dot ] org> wrote:
> >       Hi Robert.
> > I am quite busy at the moment to try it, but the general idea of it is:
> > 1. mount the disk image with mount -o loop
> > 2. cp -a source to usb
> > 3. Run syslinux to make bootable USB drive.
> >
> > Hope this helps,
> >
> > Dmitriy
> >
> > -------- Original message --------
> > From: "Robert P. J. Day via linux" <linux [ at ] linux-ottawa [ dot ] org>
> > Date: 2025-08-22 16:00 (GMT-05:00)
> > To: OCLUG mailing list <linux [ at ] linux-ottawa [ dot ] org>
> > Subject: [linux] $100 bounty for resolving my issue for creating
> bootable USB drive
> >
> >
> >   i will recap the fight i am currently having in trying to create a
> > bootable USB drive from Ubuntu Server 24.04.3 ["24.04"], and i will
> > interac $100 to the first person who can solve the problem i am about
> > to describe. (i will start writing this up in detail at my
> > crashcourse.ca wiki, but i'll supply enough here that you will have
> > enough information to take a crack at it.)
> >
> >   previously, i described how i want to customize a 24.04 ISO image to
> > add some autoinstall configuration, but the problem here is way
> > simpler -- i just want to take that original ISO and turn it into a
> > bootable USB drive *as is*. but wait ... there's more.
> >
> >   if i just want an equivalent bootable USB drive from the ISO image,
> > well, that's trivial -- just "dd" from the ISO image to the USB drive.
> > that works just fine and, when i do that, the USB drive is recognized
> > by two different appliances i'm playing with when i go into the BIOS
> > on either appliance, go top the "Boot" menu, and i can see that both
> > BIOSes list the USB drive as a boot option. in short, those USB drives
> > are visible as bootable devices. and that's what i'm after.
> >
> >   but i don't just want to use "dd" -- that's too easy. rather, i want
> > to take the 24.04 ISO image and *unpack* it ("mount -o loop",
> > "bsdtar", whatever) to get the directory structure, which is where i
> > would add the autoinstall stuff, but i want to keep it simple, and
> > after i unpack the ISO image, i'm happy to *immediately* pack it up
> > again (unchanged) to get the equivalent bootable ISO image. then i can
> > "dd" that to a USB drive and boot from that.
> >
> >   that's it -- i want to take canonical's 24.04 ISO image, unpack it
> > (however you want), then recreate a bootable ISO image from that (most
> > likely with "xorriso"), dd to USB drive and boot from that. and from
> > my poking around, it seems like the work involves invoking "xorriso"
> > with all of the appropriate options, a good example seen here:
> >
> >
> https://www.reddit.com/r/Ubuntu/comments/1g0cq09/how_to_create_a_custom_ubuntu_24041_image_by/
> >
> > that makefile ostensibly does what i want, except we can ignore all
> > the cloud-init stuff since i don't want to make any changes, and the
> > real work is done by the "ubuntu" target, which runs "xorriso" with a
> > truckload of options in order to recreate a bootable ISO image.
> >
> >   i used something very much like that but, no matter how i tweak it,
> > once i recreate an ISO image and copy to USB drive, neither appliance
> > recognizes that USB drive as a boot option, so i am clearly
> > overlooking something critical.
> >
> >   there's the $100 bounty -- figure out the magic incantation of
> > "xorriso" that allows me to do the above:
> >
> >   1) start with canonical 24.04.3 ubuntu server image
> >   2) unpack into directory structure
> >   3) use xorriso to immediately repack into bootable ISO image
> >   4) copy to USB drive, and boot from that USB drive
> >
> > i've played with those options all morning and haven't succeeded.
> > thoughts?
> >
> > rday
> >
> > To unsubscribe send a blank message to
> linux+unsubscribe [ at ] linux-ottawa [ dot ] org
> > To get help send a blank message to linux+help [ at ] linux-ottawa [ dot ] org
> > To visit the archives: https://lists.linux-ottawa.org
> >
> >
> >