0

I have had extremely variable luck with bootable USB sticks, and over time I have become puzzled and wonder what exactly is going on.

In threads such as this one and this one, it seems that I am not alone in having problems making bootable USBs on USB sticks that have already been made bootable. Some suggest that this has to do with Kingston drives, but I've had it with Samsung and SanDisk as well. Even stranger, most of the time I can get two or more bootable USBs out of one stick, but eventually sometimes, after having done it a lot, I get to a point where nothing short of zeroing, and even then, the USB will sometimes be a bit flaky afterwards, with various unpredictable problems arising around its use.

Have I simply had really bad luck with USB stick durability? Are USB sticks not really up to their advertised specs?

Do some disk utilities like Gparted or Startup Disk Creator take some kind of shortcut when overwriting blocks that look similar?

What could USB creation tools be doing that makes their work sometimes possible to delete and sometimes not?

  • Does this occur also when writing raw bootable images to the disk? – grawity Jun 10 at 3:55
  • You mean using dd? That isn't my usual method. I've heard people strongly advise for or against dd, but it all seems like superstition to me. – Stonecraft Jun 10 at 4:18
  • Yes. It doesn't have significant disadvantages as long as the image already supports the desired boot method, and it's deterministic – it will always write the exact same data as the image has (regardless of the actual program, e.g. Linux dd vs Windows dd.exe vs Rufus "DD mode"), so if that still causes differences, you can be 100% sure it's not the program, and you can read back to another image and compare with original. – grawity Jun 10 at 4:28
  • What are the disadvantages? Speed? Otherwise, if it writes the same data, why should it matter? – Stonecraft Jun 10 at 4:31
  • 1
    Or in other words, the whole reason people sometimes want to use the bootable-stick making tools is that they do not always write the same data: they try to interpret the image's contents and re-do certain things in their own way. (I think I'll just post that as the final answer.) – grawity Jun 10 at 4:43
1

There are several ways of making a bootable disk:

  • You have a pre-made disk image of any OS, and you write it in "raw mode" (using dd, Win32DiskImager, or similar). This process is fully deterministic – if you write a 500 MB image, you will get exactly the same 500 MB of data written to disk every time. The image includes its own partition table, its own bootloader, and all that's needed.

    (Usually the disk is a bit larger than that, and the remaining area is untouched. However, the image's partition table doesn't map that area either, so the operating system should never use it and it should not cause any differences.)

    (Downside: this only works with disk images that are already bootable from regular disks. "ISO" files are traditionally primarily for CDs, which use a different boot method, so the image author has to use e.g. 'isohybrid' to turn it into a multi-purpose image.)

  • You have a Linux disk image and you use a special bootable-stick-making program such as UNetBootin; Rufus (with its "ISO mode" selected); etc. In this method, the program interprets the image and writes its contents in its own way. The partition table is usually created by the program itself.

    This process depends a lot on how each program works; different tools will make different USB sticks from the same original image.

    • For example, you need to know whether the program erases the whole partition table before generating a new one; or whether it deletes partitions but leaves the rest as is; or whether it just reformats the existing partition.
    • You also need to know whether the program uses the existing bootloader, or whether it installs its own, and if it does – whether it installs the same type or whether it tries to e.g. replace Syslinux with GRUB. (UNetBootin was at one time infamous for doing these replacements very badly.)

    So the process depends on quite a lot of variables – the program you're using, the version you're using, the type of bootloader already in the .iso, and possibly even what you already have in the USB stick from last time.

  • You have a disk image, but manually extract just the files into the USB stick – after partitioning it and installing a bootloader according to the OS-provided instructions.

    As in the previous option, this has many variables – differences in partitioning tools, differences in bootloader versions, differences in how the files were extracted from image and copied to the USB stick.

  • Thanks. So it sounds like I just want to use dd to keep things consistent. That way any differences would have to be due to either the source ISO or the USB stick itself, right? Because it seems like the variations in partition table strategy and what is included in the ISO are not well documented (or at least are hard to find for someone who doesn't know exactly what they are looking for). – Stonecraft Jun 10 at 7:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.