[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