DRMK

From Syslinux Wiki
Jump to: navigation, search

This page is to document the rather peculiar loading of DRMK (Dell Real Mode Kernel). It's close to MS-DOS and PC-DOS (from the use from chain.c32) with some more advanced differences. It has been used in the Dell Utility Partition on Dell systems and in their diagnostics images. DRMK is copyright of Dell, Inc.

COPYRIGHT

DRMK (Dell Real Mode Kernel) is copyright of Dell, Inc. and subject to Dell's Software License Agreement. Information provided herein is intended to assist in utilizing software in a more versatile manner while maintaining compliance with the appropriate licensing.

CHAIN

Comboot/chain.c32, as of Syslinux-4.03, has a special option "drmk=" for loading dellbio.bin to boot DRMK. See also #DIFFERENCES

VERSIONS

First, there are multiple released versions of DRMK. Some versions are more flexible and compatible than others. Different versions will be identified herein by the first 4 bytes of DELLBIO.BIN (as it is the file loaded by chain.c32) with information on variants also included. Previously, the version numbers listed herein were purely my own for distinguishing differing and similar versions.

Version Info

Different pieces of the version info are reported in different system calls. The calls may also be refered to by a short form (21h/30h for INT 21h AH 30h; 21h/3306h for INT 21h AX 3306h).

INT 21h AH 30h

DOS Version. I've used AX 3000h (equivalent except for special functions like AX 3301h). On return, AL = Major Version, AH = Minor Version, BL:CX = 24-bit serial number (DRMK reports 0), BH = OEM Number (DRMK 0DEh).

INT 21h AX 3306h

Extended/True DOS version. Only applicable to DOS major version greater than 5 (and supposedly only MS-DOS but others return info too). On return, BL = Major Version, BH = Minor Version, DL = revision (DRMK DELLRMK.BIN build), DH = version flags.

INT 21h AX 4412h

DOS type. Deprecated in favor of 21h/4452h.

INT 21h AX 4452h

DR-DOS version. On return, AX = "OS version" (DRMK 1080h), DX = "patch version" (same as 21h/3306h DX).

INT 21h AX 4458h

Get private data pointer. On return, AX contains a 16-bit DOS date (b15-9 = years since 1980, b8-5 = month, b4-0 = day), [ES:BX] is the pointer to the private data.

Version Info Sources

Certain developers at Dell contacted me personally and informed me about 21h/4452h and 21h/4458h. I then experimented and found that the others returned the typical responses.

Version List

I'll recognize different versions by their DELLRMK.BIN build number with (possibly) an a/b to recognize versions that can be distinguished by chain and (possibly) a 0/1 to show other variations (indistinguishable by chain).

b7-a

E9 31 37 00. Recognized in operation as "8.00 [Build 00007]" (statically in command.com). This version/variant I've only seen in Dell Utility partitions from the factory. Patch version is 0x0000 and build date is 1987-15-04.

df63fe59fe1d9b39c25b8763c85c22cb  b7-a/dellbio.bin
	2005-07-25 16:48:28
01fd5689f7d0da9013e777b688daf549  b7-a/dellrmk.bin
	2005-06-21 16:54:44
9e00a3019ea6172c3c24e7381f91a6ea  b7-a/command.com
	2005-06-21 16:54:42

b7-b

E9 31 37 00. This variant I've only noticed on several CDs from Dell for their servers in reference to recreating the Dell Utility Partition on these systems. All user-visible version data is the same as b7-a (same dellrmk.bin/command.com) and is only distinguished by its dellbio.bin.

1f802a60d1663622447c5bfaed7c2df6  b7-b/dellbio.bin
01fd5689f7d0da9013e777b688daf549  b7-b/dellrmk.bin
9e00a3019ea6172c3c24e7381f91a6ea  b7-b/command.com
	2005-09-06 18:00:41

b9-a

E9 F6 36 00. Recognized in operation as "8.0017.10 [Build 00009]" "Nov 10, 2005". This version has been noticed on several Dell Diagnostics CD Images that contain a hard drive emulation image with geometry C,H,S 5,64,32. The FAT16 file system is configured for 5070 1k clusters but only has space in the FAT for 4350. Patch version is 0x000A and build date is 1980-00-00.

3ed84e0ea2be1db999d1242910c36021  b9-a/dellbio.bin
226f6f98a6301d5c90d5146f0cecb0ea  b9-a/dellrmk.bin
43a6025652571d85b7d2d396493462eb  b9-a/command.com

b9-b0

E9 D1 36 00. Recognized in operation as "8.0020.11 [Build 00009]" "Nov 28, 2005". This version was only noticed on several CDs from Dell for their servers in reference to recreating the Dell Utility Partition on these systems. Patch version is 0x000B and build date is 2006-01-11.

9dfa3404299de85bc2895efab498bd95  b9-b0/dellbio.bin
b320b39278aff136b6f5f56681507cea  b9-b0/dellrmk.bin
436513b05615e40efd6b05c09874c529  b9-b0/command.com

b9-b1

E9 D1 36 00. Recognized in operation as "8.0023.11 [Build 00009]" "Jan 11, 2006". Found in several Dell Diagnostic image builders and indistinguishable from b9-b0 in chain.c32.

9dfa3404299de85bc2895efab498bd95  b9-b1/dellbio.bin
b320b39278aff136b6f5f56681507cea  b9-b1/dellrmk.bin
e630e98980abcecaef68a09301602b7f  b9-b1/command.com

b15

E9 CD 22 00. Recognized in operation as "COMMAND.COM Build 37 - Jul 28, 2008" "DRMK KERNEL Build 15 - Aug 8, 2008" (It seems almost a reversal of the version numbers). This is found on more recent system Dell Utility Partitions from the factory and the newer Dell Diagnostics image builders. Patch version is 0x000F and build date is 2008-08-08.

a9011d6f7013bdafe67e9f7827f9db27  b15/dellbio.bin
4c28d79895b6e017f007add769cec483  b15/dellrmk.bin
4afdaf202c34d9912cc6cd8806a66014  b15/command.com

Version Testing

Ver S-0 S-1 S-1a S-1b S-1c
b7-a 1 1 1 - -
b7-b 1 1 1 - -
b9-a 1 1 0 0 0
b9-b0 1 1 0 0 0
b9-b1 1 1 0 0 0
b15 1 1 0 1 0
Scenarios
  • S-0: bochs-2.4.5 from source with internal debugger; C,H,S 40,16,63 HDD; Syslinux mbr.bin; FAT16 from 0,1,1 to 9,16,63; Syslinux & chain.c32 from commit e6b2efeead92156dc75cf83267520b0a6a6d033f
  • S-1: As S-0 but with FAT16 from 1,0,1 to 10,16,63
  • S-1a: As S-1, but FAT BIOS Parameter Block (BPB) fields SectorsPerTrack (SPT), Heads, and HiddenSectors (HS) zeroed; If this test passed, I didn't bother with the next two.
  • S-1b: As S-1, but FAT BPB field HS zeroed
  • S-1c: As S-1, but FAT BPB fields SPT and Heads zeroed
Table Values
  • 1: Tested and passed
  • 0: Tested and failed
  • -: Skipped

DIFFERENCES

Differences to MS-DOS/PC-DOS, especially as it pertains to chain.c32

Component Filenames

As always, key files are named differently. Comparing to MS-DOS, IO.SYS is replaced by DELLBIO.BIN. MSDOS.SYS is replaced by DELLRMK.BIN. COMMAND.COM remains the same.

DELLBIO.BIN entry

DELLBIO.BIN requires certain differences when loaded. Most notably, it expects the boot sector to be in memory at DS:BP. At this time, it is only used to load the value of HiddenSectors (offset 0x001C).

Certain things are, however, maintained. DL is equal to the BIOS drive number. CS is 0x0070. SS is 0x0000.

REFERENCES

COMMENTS

Here