Compatibility with older computers |
Top Previous Next |
Ideally, all computers should support LBA interface for accessing boot USB storage devices, present bootable USB thumbdrive as first storage device, and provide full access to all its data, without remapping and shifting sectors in firmware.
But unfortunately, many real world BIOSes, especially on older computers, have bugs and quirks in implementation of this interface for USB boot devices. For specific formatting scenarios (related to Windows XP and DOS), when compatibility with older computers really matters, FlashBoot goes great length to take care of these issues by installing special stage1 and stage2 loaders.
At boot time, stage1 and stage2 loaders execute the following algorithm:
1) Stage1 loader loads stage2 loader via CHS or LBA interface in slow (single-sector transfer) mode and verifies its checksum. If something does wrong at this step, then the following error message is displayed:
Boot from USB disk failed, status <000000000>. Press Ctrl+Alt+Del to reboot.
Each status digit corresponds to certain BIOS disk.
x x x x x x x x x | | | | | | | | | | | | | | | | | +----- Status digit of boot disk DL | | | | | | | +------- Status digit of disk 0x80 | | | | | | +--------- Status digit of disk 0 | | | | | +----------- Status digit of disk 0x81 | | | | +------------- Status digit of disk 1 | | | +--------------- Status digit of disk 0x82 | | +----------------- Status digit of disk 2 | +------------------- Status digit of disk 0x83 +--------------------- Status digit of disk 3
Meaning of each status digit:
2) FlashBoot stage2 loader tries to read first 128 sectors of the File Allocation Table via CHS and LBA interfaces. If either fails, stage2 loader switches to single-sector transfer mode and retries. If that interface fails again, stage2 loader prints "LBA not available" or "CHS not available". If LBA was unavailable in stage1, it is not tried here again, then only CHS is tried.
3) If both interfaces have failed, stage2 loader prints "Press Ctrl+Alt+Del to reboot" and softly halts machine.
4) Once FAT#1 and FAT#2 is loaded into the memory via CHS and/or LBA, stage2 loader compares FAT#1 versus FAT#2 to verify each BIOS interface. If FAT#1 does not match FAT#2 for LBA-originated data, stage2 loader prints "FAT#1 != FAT#2 for LBA on this BIOS". If FAT#1 does not match FAT#2 for CHS-originated data, FlashBoot prints "FAT#1 != FAT#2 for CHS on this BIOS".
5) If both interfaces have failed, stage2 loader prints "Press Ctrl+Alt+Del to reboot" and softly halts machine.
6) stage2 loader chooses LBA if available, otherwise it falls back to CHS. Then it prints either "LBA mode" or "CHS mode". If single-sector transfer mode is active, it adds " (slow)".
7) If BIOS hides MBR track, then stage2 loader prints the following message: BIOS hides MBR track of USB boot disk (emulating)
|