2003-03-27

MetaKern

Eric Auer writes:

Hi all, due to popular demand (?), I hereby release a new MetaKern version!

http://www.coli.uni-sb.de/~eric/stuff/soft/specials/ -> metakern-27mar2003.zip (metakern.zip in the same directory is updated, too)

Please read the explanations at the beginning of the source file carefully in order to learn how to install this. To get hold of a boot sector, you can use FreeDOS SYS for FreeDOS, or my UNDELETE tool or debug for any DOS or Windows.

You can now select either of:
- up to 4 boot sectors which you have to append to the binary file to add ¬them to the menu
- up to 4 primary partitions of C (now also scans C: if you boot from A:, ¬and if this fails, there will be no menu entries displayed... when ¬booting from harddisk, the ACTIVE partition will be hidden) ¬(the hiding is configurable for both cases) ¬whether to show the partition list after booting from A: is configurable)
- the drives A: B: and C: (does not check if they exist in the current version. If they do not, you will get an error message when you try to boot from them)

In addition, the menu and feedback are more verbose. The 1536 bytes are now almost full... As you know, you must add at least one DOS boot sector to that - you can add at most 4 boot sectors.

The idea is that you do something like:

SYS C: freedos.bot BOTH
REN KERNEL.SYS FDKERNEL.SYS
COPY /B METAKERN.SYS + freedos.bot KERNEL.SYS

If you have boot sectors of other DOSes, you can do something like:
1. SYS from other DOS
2. get the boot sector of that DOS
3. SYS again with FreeDOS
4. get the boot sector of that DOS
5. ren kernel.sys fdkernel.sys
6. copy /b metakern.sys + onebootsector + otherbootsector kernel.sys

And so on for more DOS versions. This only works if the kernels have different names, as you can see. Steps 3 and 4 can be done in one, using SYS with the BOTH option. If you need several different FreeDOS kernels, you have to do something like:
4b. copy the freedos.bot to freedos2.bot
4c. edit freedos2.bot to contain "FD1234  SYS" rather than "KERNEL  SYS"
4d. copy the other FreeDOS kernel to fd1234.sys
...
6. copy /b metakern.sys + onebootsector + freedos.bot + freedos2.bot kernel.sys

I think that you now understand, or are able to figure out, everything that you need to create a MetaKern boot menu. If you fail, however, you have to SYS again to be able to boot again (because if you fail, you have probably the wrong boot sector and / or a broken kernel.sys file). It is good to know that running SYS of one DOS makes you unable to boot whatever other DOS you had on the same drive before. Only keeping a backup of the boot sector and including it with MetaKern or another boot manager will bring the other DOS back into reach. If both DOSes use the same names for the kernel files, you have to do something like 4b ... 4d, otherwise you are screwed up. Certain DOS / Windows versions may get hosed even with 4b .. 4d. Of course, you must be INTELLIGENT and ADJUST the 4b .. 4d steps for other DOS versions, and probably do them at ANOTHER step of the 1..6 list.

Hm. I cannot think of anything that I forgot. Read the comments at the top of the source code as well (you need NASM to "roll your own" binary if you do not want to use the included binary).

-Eric.

PS: If I failed to find any interesting bug, please tell me. I did some tests, but not all tests that you could imagine.