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

David Christensen dpchrist at holgerdanske.com
Sat Mar 18 13:56:41 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.


> _ 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:

2017-03-18 13:02:01 root at cd2533 ~
# fdisk -l /dev/sdc

WARNING: GPT (GUID Partition Table) detected on '/dev/sdc'! The util
fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sdc: 4004 MB, 4004511744 bytes
255 heads, 63 sectors/track, 486 cylinders, total 7821312 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x59f54072

    Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           0     1325055      662528    0  Empty
/dev/sdc2            8524        9131         304   ef  EFI (FAT-12/16/32)

2017-03-18 13:02:08 root at cd2533 ~
# parted /dev/sdc u s p
Warning: /dev/sdc contains GPT signatures, indicating that it has a GPT
table.  However, it does not have a valid fake msdos partition table, as
it should.  Perhaps it was
corrupted -- possibly by a program that doesn't understand GPT partition
tables.  Or perhaps you deleted the GPT table, and are now using an
msdos partition table.  Is this a GPT
partition table?
Yes/No? no

2017-03-18 13:02:20 root at cd2533 ~
# parted /dev/sdc u s p
Warning: /dev/sdc contains GPT signatures, indicating that it has a GPT
table.  However, it does not have a valid fake msdos partition table, as
it should.  Perhaps it was
corrupted -- possibly by a program that doesn't understand GPT partition
tables.  Or perhaps you deleted the GPT table, and are now using an
msdos partition table.  Is this a GPT
partition table?
Yes/No? yes
Error: Both the primary and backup GPT tables are corrupt.  Try making a
fresh table, and using Parted's rescue feature to recover partitions.


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 (?).


> _ In the dd command, verify that you are _not_ using a partition as
> destination device but rather the whole device. For example, if the
> USB device is identified as '/dev/sdc' in your OS, then the dd
> command should _not_ include 'of=/dev/sdc1' but rather
> 'of=/dev/sdc'.
>
> _After executing the dd command, wait enough time before extracting
> the USB device. After the dd command has finished, sometimes using a
> 'sync' command is suggested before extracting the USB device.

Yes, I do those things.


I burned the ISO to the USB flash drive again and documented the
process:

2017-03-18 12:06:12 root at cd2533 ~
# dmesg | tail -n  15
[ 5659.928036] usb 1-2: new high-speed USB device number 8 using ehci_hcd
[ 5660.060872] usb 1-2: New USB device found, idVendor=0781, idProduct=5575
[ 5660.060878] usb 1-2: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[ 5660.060882] usb 1-2: Product: Cruzer Glide
[ 5660.060885] usb 1-2: Manufacturer: SanDisk
[ 5660.060889] usb 1-2: SerialNumber: <redacted>
[ 5660.061955] scsi6 : usb-storage 1-2:1.0
[ 5661.067791] scsi 6:0:0:0: Direct-Access     SanDisk  Cruzer Glide
  1.26 PQ: 0 ANSI: 5
[ 5661.070450] sd 6:0:0:0: Attached scsi generic sg3 type 0
[ 5661.076526] sd 6:0:0:0: [sdc] 7821312 512-byte logical blocks: (4.00
GB/3.72 GiB)
[ 5661.084642] sd 6:0:0:0: [sdc] Write Protect is off
[ 5661.084649] sd 6:0:0:0: [sdc] Mode Sense: 43 00 00 00
[ 5661.085390] sd 6:0:0:0: [sdc] Write cache: disabled, read cache:
enabled, doesn't support DPO or FUA
[ 5661.115648]  sdc: unknown partition table
[ 5661.120771] sd 6:0:0:0: [sdc] Attached SCSI removable disk

2017-03-18 12:07:21 root at cd2533 ~
# time dd if=/dev/zero of=/dev/sdc bs=1M; sync
:195,dd: writing `/dev/sdc': No space left on device
3820+0 records in
3819+0 records out
4004511744 bytes (4.0 GB) copied, 911.198 s, 4.4 MB/s

real	15m11.204s
user	0m0.000s
sys	0m7.888s

2017-03-18 12:40:31 root at cd2533 ~
# cd /var/local/data/dpchrist/iso/debian/8.7.1/i386/

2017-03-18 12:40:50 root at cd2533
/var/local/data/dpchrist/iso/debian/8.7.1/i386
# grep debian-8.7.1-i386-xfce-CD-1.iso SHA256SUMS
a258af89540a64e6d16d6a546ec554a07ef0d46168d74bfc2073cc60d6a9ecde
debian-8.7.1-i386-xfce-CD-1.iso

2017-03-18 12:41:06 root at cd2533
/var/local/data/dpchrist/iso/debian/8.7.1/i386
# ll debian-8.7.1-i386-xfce-CD-1.iso
-rw-r--r-- 1 dpchrist dpchrist 678428672 2017/03/04 17:02:57
debian-8.7.1-i386-xfce-CD-1.iso

2017-03-18 12:41:30 root at cd2533
/var/local/data/dpchrist/iso/debian/8.7.1/i386
# sha256sum debian-8.7.1-i386-xfce-CD-1.iso
a258af89540a64e6d16d6a546ec554a07ef0d46168d74bfc2073cc60d6a9ecde
debian-8.7.1-i386-xfce-CD-1.iso

2017-03-18 12:41:54 root at cd2533
/var/local/data/dpchrist/iso/debian/8.7.1/i386
# time dd if=debian-8.7.1-i386-xfce-CD-1.iso of=/dev/sdc bs=1M; sync
647+0 records in
647+0 records out
678428672 bytes (678 MB) copied, 161.132 s, 4.2 MB/s

real	2m41.135s>

user	0m0.012s
sys	0m1.640s

2017-03-18 12:51:52 root at cd2533
/var/local/data/dpchrist/iso/debian/8.7.1/i386
# time dd if=/dev/sdc bs=1M count=647 | sha256sum
647+0 records in
647+0 records out
a258af89540a64e6d16d6a546ec554a07ef0d46168d74bfc2073cc60d6a9ecde  -
678428672 bytes (678 MB) copied, 33.1367 s, 20.5 MB/s

real	0m33.141s
user	0m5.992s
sys	0m1.948s


The result is the same -- "isolinux.bin missing or corrupt" when booting
USB flash drive in any USB port in an older PC, but USB flash drive 
boots fine in newer PC's.


> _ In the problematic computer(s), are there several USB ports? Have
> you tried using another USB port when booting with this device (USB
> ports in the front can frequently be a suspect, but not only those)?
>
Same result for 4 rear ports and 2 front ports on old PC.


> Is the USB device connected directly to the USB port?

Yes.


> Or instead, is there some USB hub or similar device in between?

No.


> _ Which type of USB device is this? Are you using a USB flash drive,
> a HDD connected by USB, or some kind of (SD) card connected by USB?

SanDisk Cruzer Glide 4 GB (USB flash drive).


> _ 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.


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".


> _ 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.


> _ 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.


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?


David



More information about the Syslinux mailing list