Now cos i dont have w2000, changing it to that platform may be difficult. Because Microsoft is always giving conflicting advice on what is compatible with wot. So the only way to test is to try it on 2000.
If i manage to update it, i hope there will be some willing 2k testers
You can count on me for that.
It still does not work, giving me an error when starting.
If it helps, I can send you a dump of Regmn/Filemon or just tell me what kind of info you could need.
Looks like he used the HP utility. That enables FAT16X. I heard a lot of bioss dont like it. But for compatabilities sake i added an LBA option that will make the format just like the HP utility one.
Yep, I can confirm that many BIOS' like the CHS formatting, NOT the LBA one, i.e:
Also, you might be interested in the "special" MBR that comes with MAKEBOOTFAT (mbrfat.bin):
Following is an exert from the small guide I am jolting down for the use of makebootfat:
I spent some time experimenting with it finding it to be a very good program, that NEVER failed (in my limited testing) in making an USB pendrive bootable with FAT16, so that I do recommend it.
The command line sintax used is a bit complex, expecially to Windows users, so here is an explained example:
(please note that though it is not at all clear in the original info, supplying a sub-directory name is compulsory, so even if you just want to copy system files to the key, you need to input an existing directory name, it does not matter if directory is empty):
E:\USBKEY\mkbootfat>makebootfat -h
makebootfat v1.4 by Andrea Mazzoleni
Usage: makebootfat [options]dir
Options:
-o Select the output device
-b Select the boot sector image
-m Select the mbr sector image
-c Copy a file in the root directory
-x Exclude files
-X Enforce syslinux 2.xx limitations
-Y Enforce syslinux 3.xx limitations
-Z Enforce ZIP-Drive compatibility if possible
-F Change the MBR to imitate a FAT boot sector
-L Volume label
-O Volume oem
-S Volume serial
-E Drive BIOS number
-v Verbose
-h Help
-V Version
Now let's try to make it, the following must be on the same line, here is split just for the sake of commenting it:
makebootfat <-this is the command
-o usb <-this is the output
-b win41.bin <-this is the bootsector to be written
-m mbrfat.bin <-this is the MBR to be written (included in the package)
-c COMMAND.COM <-this is a file to be copied to the ROOT of the USB stick
-c MSDOS.SYS <-this is a file to be copied to the ROOT of the USB stick
-c IO.SYS <-this is a file to be copied to the ROOT of the USB stick
-v <-this prints verbosely report
C:\dummy < this is a NEEDED (empty) directory (or you could use a "good" one)
makebootfat -o usb -b win41.bin -m mbrfat.bin -c COMMAND.COM -c MSDOS.SYS -c IO.SYS -v C:\dummy
device_start 0 [sectors]
device_size 256000 [sectors], 125 [MB]
device_geometry 15/255/63 [cylinders/heads/sectors]
bios_drive HDD
fat_start 63 [sectors]
fat_size 255937 [sectors]
fat_bit 16
fat_sectorpercluster 4
Notes:
mbrfat.bin is included in the package, it is a kind of "Universal" MBR, it can be used, according to the MAKEBOOTFAT docs it is possible with it even to make a format compatible with all the three standards (NOT YET FULLY TESTED):
"The BIOS USB boot support is generally differentiated in three categories: USB-HDD, USB-FDD and USB-ZIP.
The USB-HDD (Hard Disk Drive) standard is the preferred choice and it requires the presence of a partition table in the first sector of the disk. You can create this type of disk using the -m option.
The USB-FDD (Floppy Disk Drive) standard requires the presence of a filesystem starting from the first sector of the disk without a partition table. You can create this type of disk without using the -m option.
The USB-ZIP (ZIP Drive) standard requires the presence of a device with a very specific geometry. Specifically, it requires a geometry with 32 sectors and 64 heads. It also requires the presence of a partition table with only a bootable partition in the fourth entry. You can create this type of disk using the -m and -Z option.
Generally these standards are incompatible, but using the -m, -F and -Z options you can create a disk compatible with all of them.
To use the -F option, the MBR image specified must follow the constrains:
It must start with a standard FAT 3 bytes jump instruction.
It must have the bytes from address 3 to 89 (included) unused.
And example of such image is in the `mbrfat.bin' file."
win41.bin is a Windows 98 FAT16 bootsector I made with bootpart:
http://www.winimage.com/bootpart.htm(by Gilles Vollant, the same author of Winimage)
It can be also extracted by any hex editor or debug.exe from a FAT 16 disk formatted from within Win98, makebootfat will replace the partition info with the correct ones.
To get it from bootpart the syntax is following:
bootpart <OS> <filename>
Where OS can be (case insensitive):
DOS622
MSDOS MS-DOS 6.22 I.D. MSDOS5.0
WIN95 Windows 95 I.D. MSWIN4.0
WIN95OSR2
WIN95SR2
WIN95OEMSR2 Windows 95 OEMSR2 I.D. MSWIN4.1
WIN98
WINME Windows 98 or Windows ME I.D. MSWIN4.1
NT
WINNT
WIN200
WIN2K
WINXP Windows NT/2K/XP and 2003
VISTA
WINVISTA Windows VISTA (BOOTMGR instead of NTLDR)
OPENDOS OpenDos I.D. NWDOS7.0
In my case I entered:
bootpart win98 c:\bootfiles\win41.bin
the "-b" switch it is a "generic" switch:
"-b, --boot FILE
-1, --boot-fat12 FILE
-2, --boot-fat16 FILE
-3, --boot-fat32 FILE
Specify the FAT boot sector images to use. The -b option uses the same sector for all the FAT types. The other options can be used to specify a different sector for different FAT types. The FAT types for which a boot sector is not specified are not used. This option is always required."
if you try it with USB Pendrives bigger than 32 M and up to 256 Mb (I think) it will default to FAT16 (same as switch "-2") with 512 Mb it will switch to FAT32(same as switch "-3"), what I got running:
makebootfat -o usb -b win41.bin -m mbrfat.bin -c COMMAND.COM -c MSDOS.SYS -c IO.SYS -v C:\dummy
on a 512 Mb stick was:
device_start 0 [sectors]
device_size 1024000 [sectors], 500 [MB]
device_geometry 63/255/63 [cylinders/heads/sectors]
bios_drive HDD
Invalid code start 3E in the boot sector (for fat32 it must be at least 5A).
re- running as:
makebootfat -o usb -2 win41.bin -m mbrfat.bin -c COMMAND.COM -c MSDOS.SYS -c IO.SYS -v C:\dummy
I got:
device_start 0 [sectors]
device_size 1024000 [sectors], 500 [MB]
device_geometry 63/255/63 [cylinders/heads/sectors]
bios_drive HDD
fat_start 63 [sectors]
fat_size 1023937 [sectors]
fat_bit 16
fat_sectorpercluster 16
which is allright, as the win41.bin was a FAT16 bootsector, and the key resulted formatted as FAT16, re-running it as follows, with win4132.bin ( a FAT32 bootsector):
makebootfat -o usb -b win4132.bin -m mbrfat.bin -c COMMAND.COM -c MSDOS.SYS -c IO.SYS -v C:\dummy
I got, exactly as if I used the "-3" switch a FAT32 formatted USB keydrive:
device_start 0 [sectors]
device_size 1024000 [sectors], 500 [MB]
device_geometry 63/255/63 [cylinders/heads/sectors]
bios_drive HDD
fat_start 63 [sectors]
fat_size 1023937 [sectors]
fat_bit 32
fat_sectorpercluster 8
Please note that this option (FAT32 on a 512 Mb USB key) did NOT make a bootable volume. I suspect that there is something not right in the FAT32 identifier (hex 0b) and structure. By running (in Qemu) sys.com, it changed (between other things) the identifier to LBA mappped (hex 0c) and the volume booted.
On the other hand, running:
makebootfat -o usb -3 win4132.bin -m mbrfat.bin -c COMMAND.COM -c MSDOS.SYS -c IO.SYS -v C:\dummy
on a 128 Kb stick, I got an error:
device_start 0 [sectors]
device_size 256000 [sectors], 125 [MB]
device_geometry 15/255/63 [cylinders/heads/sectors]
bios_drive HDD
Unsupported disk size.
Be warned that if you try to install a FAT32 bootsector with the "-b" switch:
makebootfat -o usb -b win4132.bin -m mbrfat.bin -c COMMAND.COM -c MSDOS.SYS -c IO.SYS -v C:\dummy
on a 128 Kb stick, you will have:
device_start 0 [sectors]
device_size 256000 [sectors], 125 [MB]
device_geometry 15/255/63 [cylinders/heads/sectors]
bios_drive HDD
fat_start 63 [sectors]
fat_size 255937 [sectors]
fat_bit 16
fat_sectorpercluster 4
i.e. a FAT16 volume with a FAT32 bootrecord (NOT very useful!)
http://www.mdgx.com/secrets.htm#FDISKFDISK /FPRMT bypasses the FDISK startup screen, but enables interactive FAT16/FAT32 support. This can be used to force FDISK to create FAT32 partitions smaller than 512 MB, normally not possible by default.
Sorry for the lenghty post, but maybe as the source code is freely available, you could get some ideas on the functions you need (it works perfectly under win2k):