I am trying to boot 386 laptop from a CF card. I've prepared image by installing DOS 6.22 in VirtualBox, and then burning image to a CF card.

  • Image boots just fine in VirtualBox.

  • CF card with the image boots just fine in newer Toshiba Libretto laptop (Pentium-era).

  • 386 laptop is able to read MBR, but displays the following error message "Missing operating system". I know it loads MBR from CF-card as I've modified message in MBR record on CF card, and it did showed altered message.

Tried different CF cards (256Mb, 4Gb - all with small primary partitions of 30-200Mb), and SD->IDE adapters. Same result everywhere.

Any suggestions how to make it boot?

  • 3
    The BIOS reads the MBR; the MBR program presumably issues an INT 13H to read the OS boot record. Maybe the CF card is not accessible through that method. I can't speak to flash, but similar issues used to exist with CD-ROM; the BIOS needed to implement "floppy emulation" for CDs until CD booting became standard. – another-dave Jan 25 at 14:52
  • Does this answer your question? 386 PC: reads MBR, cannot boot DOS 6.22 – Jean-François Fabre Jan 25 at 17:25
  • 1
    What is the CHS geometry of the card? Does your virtualbox generated image have the same geometry? – Justme Jan 25 at 20:30
  • @Justme Virtual box image is linear, it does not have any information about geometry. I don't know CHS geometry of the card. It appeared HDD configuration was driven by presets in the bios without any information of what each selection means. – BarsMonster Jan 25 at 21:44

It looks I got lucky, otherwise it would have been a long road.

Apparently this laptop has a ROM-DOS on board in the socket. Due to bad contact it was not detected at startup. After I reinserted flash chip into the socket, it detected it and booted from ROM to DOS 3.3. It only had FDISK among useful tools there, but that was enough. It appeared, that BIOS is unable to recognize custom HDDs configuration. There were 47 types pre-configured and that's it (no information on what each of these 47 HDDs means). One can figure out meaning only when you're booted and can run something like fdisk. The largest preconfigured one was #47, 61Mb HDD. I selected it, and formatted CF card using this old FDISK on ROM-disk. After that I upgraded CF image to DOS 6.22 in VirtualBox and flashed back. It all worked.

So, in a nutshell - partition on CF should have had exactly the size (or smaller) as preset of HDD in BIOS. There were no way to figure out preset configuration when you're not booted. So partition had to be 61Mb or smaller for selection #47.

Both 256Mb and 4Gb CF cards works this way, with single 61Mb partition. Even when DOS 6.22 is loaded, it does not allow to create extended partitions in the remaining space of the CF. Probably some BIOS mod/driver is needed to override HDD handling. Anyways, 61Mb is good enough for now. If anyone is aware of such driver to override HDD access after DOS is loaded - please let me know in the comments.

| improve this answer | |
  • 1
    (1) no information on what each of these 47 HDDs means: IIRC that's a standard table even across different BIOS, each has a given number of heads/sectors per cylinder etc. (2) BIOS is unable to recognize custom HDDs configuration: this is very unusual, every single BIOS I remember had the option to set a custom HDD configuration. – dirkt Jan 26 at 5:36
  • You may be able to make several partitions on the CF-card using FDISK, the second one can then fill out the rest of the disk. – Thorbjørn Ravn Andersen Apr 15 at 8:26

I think you did a good job of providing relevant details. For instance, the fact that the same image works on a newer machine does indicate that the critical "system files" (IO.SYS and MSDOS.SYS and perhaps the command interpreter, typically COMMAND.COM) may all be in the right locations on the disk (referring to disk sectors, not just filesystem hierarchy). However, I also think we may need even more details to fully resolve this. So, until more are provided, this answer needs to be just a stab in the dark.

Be aware of some size limitations. DOS 6.22 used a signed integer which typically limited FAT16 partitions to 2GB (unlike some Win NT variations which could support 4GB on FAT16). There are a number of other limits that have affected hard drive space, like a limit of around 512 MB (or 528 million bytes) as noted in these resources:

https://www.win.tue.nl/~aeb/linux/Large-Disk-4.html http://web.inter.nl.net/hcc/J.Steunebrink/bioslim.htm https://www.tldp.org/HOWTO/html_single/Large-Disk-HOWTO/#s4 While the code may be loading from the MBR, the code on the MBR may be interpreted differently. The code on the MBR may be relying on the BIOS to read from the disk, and there may be different BIOS capabilities. The "Large Disk" article I mentioned above may discuss some relative limits.

For instance, I remember hitting an 8GB limit on a 486 desktop. Your 386 laptop may be older than that, and the solutions would be to upgrade the BIOS (which typically involved replacing a chip, which might not be attached in an easily removable form) or figure out how to use older equipment.

I suggest that your DOS installation be on a partition using Partition Type/ID 6, not Partition Type/ID E (0xE, 15). 6 will be compatible with more older BIOS versions.

Note: These suggestions are largely based on my knowledge and experience from physically full-sized hard drives. I don't know what complexities get added with using a CompactFlash drive built into a laptop. Systems much newer would often be limited to booting from a hard drive or a floppy drive, and trying to boot from a drive connected to a parallel port, or a USB port, might not work so well. The ability to boot from some other sources, including a USB port, didn't get resolved until some BIOS updates after the Pentium chips were out. I think that booting from a second hard drive may have been hit-or-miss. So maybe your BIOS isn't as cooperative (even though it did find some code to start on the MBR). Unplugging any other disk (like a hard drive) might actually be helpful.

If none of the above helps, I suggest posting more details, like how big your partitions are, what partition types you're using, and whether you get similar results when trying another operating system (FreeDOS sounds like an interesting one to compare to).

| improve this answer | |

If you have a modern PC with a floppy drive, i would suggest downloading Ontrack Disk Manager here: https://www.philscomputerlab.com/ontrack-disk-manager.html (download 9.57 .exe file). Then:

  1. Go into 386 bios and set HDD to "Not Installed"
  2. Run Ontrack Disk Manager from floppy
  3. Let it detect your harddrives
  4. install it (I don't remember it very well, but ther should be an option to partition or install or something like that)
  5. After it's done, reboot your computer
  6. It should now boot from the HDD with the full capacity
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.