[syslinux] "isolinux.bin missing or corrupt" when booting USB flash drive in old PC

Ady Ady ady-sf at hotmail.com
Sat Mar 18 16:15:51 PDT 2017


> On 03/18/2017 01:18 AM, Ady Ady via Syslinux wrote:
> > Some of the things you should / could (re)test / (re)try:
> >
> > _ Verify the md5sum of the ISO image.
> 
> SHA256 verified for downloaded image and for contents of USB flash drive
> (see below).
> 
> 
> > _ Is this particular USB device _still_ capable of booting newer
> > computers?
> 
> Yes.
> 
> 
> > What happens if you would try _again_ to boot a newer computer?
> 
> It boots.
> 
> 
> > If the error message is seen now (while it was booting OK before such
> > newer systems), then it might be a sign that the USB device is now
> > failing.
> 
> The USB flash drive shows no indication of failure.
 
 
In some cases, failure to boot is a sign of failure in the USB device.
 
 
> 
> 
> > _ Before executing dd in order to write the ISO image to the USB
> > deice, verify that you UNmount the filesystem volumes located in the
> > USB device.
> 
> My systems do not have automount enabled.
> 
> 
> I use this USB flash drive for bootable installer images; I do not
> attempt to mount it.  I don't know that I could, even if I wanted to:
> 
 
 
 (snip)
 
> 
> I assume dd will encounter a write error and exit if some file system on
> the USB flash drive is mounted when I attempt to burn the ISO file to
> the device (?).
 

Not necessarily. Might, or might not.


 (snip)
 
 
> 
> 
> > _ With the USB device connected to (one of) the problematic
> > computer(s), power up the system and get into the BIOS setup. In the
> >  BIOS setup screen(s), change the boot order in such way that the USB
> >  device is recognized as first boot device. Other devices such as
> > CD-ROM and your local HDD should be listed after the USB device in
> > the boot order (as second/third boot devices). Then save the BIOS
> > settings and try booting with the USB device.
> 
> I have adjusted the boot order in BIOS setup, but it is unnecessary --
> the only other drive is a CD/DVD-RW drive, and it does not contain a disc.
> 
 
 
You probably mean in addition to a HDD, right?



> 
> Furthermore, if the BIOS did not attempt to boot from the USB flash
> drive, I would not see the error message "isolinux.bin missing or corrupt".
> 
 
 
This is part of the troubleshooting steps, and there are valid reasons 
for the suggestion / request. BIOS implementations are not always 
"perfect". For instance, one USB-AUTO device might boot in one system 
and not in another, and by changing (or imposing) the way it is 
recognized, the result / behavior might change (e.g. "USB-HDD", device 
0x80 vs. 0x81 and so on).
 
 
> 
> > _ If the BIOS setup includes some "fast (POST) boot" or "quick (POST)
> >  boot" (or similar) option, disable it.
> 
> Already done.
> 
> 
> > _ If the above changes in the BIOS setup are not enough for a
> > successful boot with your USB device, then boot back into the BIOS
> > setup screen(s) and change the way your USB is being detected at boot
> >  time. Sometimes a USB device in a specific computer cannot boot when
> > it is detected as "USB-AUTO", but it can succeed when it is
> > specifically selected as "USB-HDD", or as "USB-FLOPPY", or as
> > "USB-ZIP'. This is usually selected when pressing a specific key
> > during boot time and selecting a specific device type as boot device
> > - the specific key (F1/F2/F12/DEL/ESC or some combination of keys)
> > depends on your particular computer.
> 
> Advanced -> USB Configuration:
> 
> - USB Function -- Enable or Disable.  When disabled, the BIOS does not
> boot the USB flash drive.  Therefore, this setting is, and must be, enabled.
> 
> - High-Speed USB -- Enable or Disable.  The problem is the same with
> either setting.
> 
> - Legacy USB Support -- Enable or Disable.  When disabled, the BIOS does
> not boot the USB flash drive.  Therefore, this setting is, and must be,
> enabled.
> 
> - USB 2.0 Legacy Support -- Full-Speed or High-Speed.  The problem is
> the same with either setting.
> 
 
 
What exactly was "done"? Which USB modes this BIOS supports? USB-AUTO? 
USB-HDD?...

A hunch: somehow, the CHS values for isohybrid are starting to sound as 
an issue in this case.
 
 
> 
> > _ Some older computers might not be able to detect "big" USB devices
> >  correctly. Using a USB flash drive of 1GB might succeed while a
> > bigger one might fail. There are too many reasons for this behavior
> > and thus, too many possible workarounds / solutions; trying a smaller
> > USB device is just one of many.
> 
> I have 128 MB and 4 GB USB flash drives, and nothing in between.
> 
> 
> > There are alternative ways to boot from USB devices, and they depend
> > on how the ISO image was transferred onto the USB device. If you find
> > that your current boot device cannot boot these old systems, then the
> > "dd method" might not be a good choice for these old computers, but
> > an alternative method might work.
> >
> > Considering that the other USB device (the one with memtest) is
> > booting correctly, you might want to describe here how exactly you
> > transferred memtest to this other USB device, and what is different
> > from it in comparison to the one that is having problems.
> 
> The memtest USB flash drive was created using the same method as above.
> 
> 
> I also have a FreeBSD 11.0 i386 USB flash drive created using the same
> method as above, and it boots fine in the older computers.
> 
 
 
This kind of diverse behavior is somewhat similar to the way different 
BIOS implementations are (or were) capable (or not) of booting optical 
media: some are capable of using El Torito no-emulation with no 
problems, while some might need a floppy-emulation mode.

Back on topic, there are too many reasons for these systems to fail 
with this Debian ISO image. For example, some BIOS implementations 
don't "like" when the bootloader file, "isolinux.bin", is bigger than 
32KiB. Others don't like when the bootloader file is located on LBA 
values over a certain limit. Incidentally, Debian 8.7 is using ISOLINUX 
6.03+, which happens to be bigger than 32KiB, whereas isolinux.bin 
version 4.xx was much smaller than 32KiB.

We could even mention partition alignment issues in a BIOS from 2003 
(63 sectors offset for the first partition vs. 2048) and appropriate 
CHS values in the isohybrid command. The potential list of 
incompatibilities and troubleshooting is not short. Whether the 
incompatibilities are a matter of reason or a capricious BIOS' 
developer, we probably won't ever know.

If I were to recommend a solution for your case, I would _not_ be 
choosing to rebuild the ISOhybrid image in a different way. Instead, 
either I would simply use optical media, or I would be partitioning and 
formatting the USB device (these are _not_ complete detailed 
instructions):

_ MBR (aka "msdos" partition) scheme
_ create one partition
_ set the partition as "bootable" (aka "active" flag)
_ dd mbr.bin
_ mount the partition; format it as FAT32
_ copy the _content_ of the ISO image to the FAT32 partition
_ install SYSLINUX on the FAT32 partition (and replace .c32 modules 
with a matching version, if needed)

Beware: I am not describing each step in detail, but some details are 
very important for the success (or not) of the procedure. Someone else 
might want to write detail step-by-step instructions.

Booting with SYSLINUX (instead of dd'ing the ISO image) should avoid 
the limitations / incompatibilities between the BIOS, ISOLINUX (6.03) 
and ISOhybrid.

There might be some additional steps needed, such as renaming the 
"isolinux" directory to "syslinux" and editing "isolinux.cfg" (et. al.) 
in a similar way. Such steps vary, depending on the content of each ISO 
image.

There are several auxiliary tools available for Linux and/or Windows 
that are capable of performing at least part of the steps, if not all 
of them.

As you can see, inserting optical media and booting from it is simpler, 
especially when the alternative is for the user to learn the details of 
the procedure, just for 2 computers.

Other participants of the Syslinux Mailing List might suggest other 
alternatives, or might have experience with auxiliary tools (there are 
many) and would recommend a specific one (in which case, posting the 
specific OS(s) in which you (can) perform the procedure is very 
relevant). Under Windows, I would suggest RUFUS for this case.
 
 
> 
> I need a debugging version of whatever program is generating the error
> message "isolinux.bin missing or corrupt".  What binary and/or source
> packages do I need to install?  What document do I need to read to
> create a debugging build of this program?  What document do I need to 
> read to build a hybrid ISO containing my debugging version of the program?
> 
 
 
Isohybrid does not support "isolinux-debug.bin".
 
 
> 
> David
> 
 
 
Regards,
Ady.

> _______________________________________________
> Syslinux mailing list
> Submissions to Syslinux at zytor.com
> Unsubscribe or set options at:
> http://www.zytor.com/mailman/listinfo/syslinux





More information about the Syslinux mailing list