label memdisk
kernel memdisk
append ramdisk_size=100000 network load_ramdisk=1 prompt_ramdisk=0 initrd=/images/x vga=788 root=/dev/ram
--------------------------------------------------------------------------------
MEMDISK
#syslinux.cfg/pxelinux.cfg/isolinux.cfg
label dos
kernel memdisk
append initrd=dosboot.img
MEMDISK is meant to allow booting legacy operating systems via PXE,
and as a workaround for BIOSes where ISOLINUX image support doesn't
work.
MEMDISK simulates a disk by claiming a chunk of high memory for the
disk and a (very small - 2K typical) chunk of low (DOS) memory for the
driver itself, then hooking the INT 13h (disk driver) and INT 15h
(memory query) BIOS interrupts.
To use it, type on the SYSLINUX command line:
memdisk initrd=diskimg.img
Note the following:
a) The disk image can be uncompressed or compressed with gzip or zip.
b) If the disk image is one of the following sizes, it's assumed to be a
floppy image:
368,640 bytes - 360K floppy
737,280 bytes - 720K floppy
1,222,800 bytes - 1200K floppy
1,474,560 bytes - 1440K floppy
1,720,320 bytes - 1680K floppy (common extended format)
1,763,328 bytes - 1722K floppy (common extended format)
2,949,120 bytes - 2880K floppy
3,932,160 bytes - 3840K floppy (extended format)
For any other size, the image is assumed to be a hard disk image,
and should typically have an MBR and a partition table. It may
optionally have a DOSEMU geometry header; in which case the header
is used to determine the C/H/S geometry of the disk. Otherwise,
the geometry is determined by examining the partition table, so the
entire image should be partitioned for proper operation (it may be
divided between multiple partitions, however.)
You can also specify the geometry manually with the following command
line options:
c=# Specify number of cylinders (max 1024[*])
h=# Specify number of heads (max 256[*])
s=# Specify number of sectors (max 63)
floppy[=#] The image is a floppy image[**]
harddisk[=#] The image is a hard disk image[**]
# represents a decimal number.
[*] MS-DOS only allows max 255 heads, and only allows 255 cylinders
on floppy disks.
[**] Normally MEMDISK emulates the first floppy or hard disk. This
can be overridden by specifying an index, e.g. floppy=1 will
simulate fd1 (B:). This may not work on all operating systems
or BIOSes.
c) The disk is normally writable (although, of course, there is
nothing backing it up, so it only lasts until reset.) If you want,
you can mimic a write-protected disk by specifying the command line
option:
ro Disk is readonly
d) MEMDISK normally uses the BIOS "INT 15h mover" API to access high
memory. This is well-behaved with extended memory managers which load
later. Unfortunately it appears that the "DOS boot disk" from
WinME/XP *deliberately* crash the system when this API is invoked.
The following command-line options tells MEMDISK to enter protected
mode directly, whenever possible:
raw Use raw access to protected mode memory.
bigraw Use raw access to protected mode memory, and leave the
CPU in "big real" mode afterwards.
safeint Use INT 15h access to protected memory, but invoke
INT 15h the way it was *before* MEMDISK was loaded.
e) MEMDISK by default supports EDD/EBIOS on hard disks, but not on
floppy disks. This can be controlled with the options:
edd Enable EDD/EBIOS
noedd Disable EDD/EBIOS
Some interesting things to note:
If you're using MEMDISK to boot DOS from a CD-ROM (using ISOLINUX),
you might find the generic El Torito CD-ROM driver by Gary Tong and
Bart Lagerweij useful:
http://www.nu2.nu/eltorito/
Similarly, if you're booting DOS over the network using PXELINUX, you
can use the "keeppxe" option and use the generic PXE (UNDI) NDIS
network driver, which is part of the PROBOOT.EXE distribution from
Intel:
http://www.intel.com/support/network/adapter/1000/software.htm