Skip to content
Program for writing Microsoft compatible boot records
C Makefile
Branch: master
Clone or download
Henrik Carlqvist and pbatard v2.5.2
Latest commit 4de6d5d Jan 16, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
inc v2.5.2 Jan 18, 2016
man v2.5.2 Jan 18, 2016
CHANGELOG v2.5.2 Jan 18, 2016
COPYING v0.9 Jan 5, 2014
FAQ v2.1.2 Jan 5, 2014
README v2.3.0 Jan 5, 2014


1. General

This program is used to create Microsoft compatible boot records. It is able
to do the same as Microsoft "fdisk /mbr" to a hard disk. It is also able to
do the same as Microsoft "sys d:" to a floppy or FAT partition except that
it does not copy any system files, only the boot record is written.
Specifications of boot records is taken from

The program is useful when using Linux to restore a backup of a reference
Microsoft Windows installation.

Author of this program is Henrik Carlqvist (, it
is available for download from

2. Installation

Step 1, unpack the archive:

tar -xzvf ms-sys*.tgz

Step 2, compile:

cd ms-sys

Step 3, become root and install

su (and give password)
make install

3. Examples

Please note that Windows ME is not useful for making standalone bootable
floppies. However, Win9x and DOS works fine with example 1 and example 3.

Example 1, creating a 1.68 MB bootable floppy:
This example assumes that you have your windows installation mounted at /dosc
and also have mtools and fdformat installed.

fdformat /dev/fd0u1680
mformat a:
ms-sys -w /dev/fd0
mcopy /dosc/io.sys a:
mcopy /dosc/msdos.sys a:
mcopy /dosc/ a:

Example 2, restoring a backup to a fresh hard disk:

Step 1, use GNU parted to create your FAT32 partition and file system:

parted (then create partition and file system)

Step 2, write the MBR:

ms-sys -w /dev/hda

Step 3, write the FAT32 partition boot record:

ms-sys -w /dev/hda1

Step 3b, write partition info and drive id to partition:

ms-sys -p /dev/hda1

This step might be needed depending on which program was used to format the
partition. If the program was formatted with gnu parted this step could be
skipped. It is also possible to combine this flag with the previous step
like this: ms-sys -wp /dev/hda1

Step 4, mount your new filesystem:

mount /dev/hda1 /mnt

Step 5, read your backup

cd /mnt; tar -xzvf /path/to/my_windows_backup_file.tgz

Example 3, creating a bootable 2.8 MB floppy image for use with an el-torito
bootable CD:

dd if=/dev/zero of=floppy288.img bs=1024 count=2880
/sbin/mkdosfs floppy288.img
ms-sys -1 -f floppy288.img
mount -o loop floppy288.img /mnt
cp msdos.sys /mnt/
cp io.sys /mnt/
cp /mnt/
(it might also be a good idea to add a config.sys and autoexec.bat with
 CDROM support)
umount /mnt
cp floppy288.img cd-files/eltorito.img
mkisofs -b eltorito.img -c -o cdimage.iso cd-files
(burn the file cdimage.iso to a CD with cdrecord or another program)

4. Documentation

There is a man-page for ms-sys, and you will get some help by typing:

ms-sys --help

5. Known problems

There have been reports about unbootable FAT32 partitions created with
"mformat -F c:". One workaround is to use gnu parted to create the
partition instead. Since version 1.1.3 ms-sys has the switch -p which
is supposed to fix this problem. The problem has also been reported on
partitions formatted with mkdosfs and mkfs.vfat.

There have been yet another problem reported about the -p switch and gnu
parted together with Linux kernel 2.6. The problem is that kernel 2.6 might
report a geometry incompatible with other operating systems. There is a
detailed description of the problem at
As a workaround for this ms-sys now has the switch -H to manually set the
number of heads. The next problem is to find out what value for number of
heads to give. If the system was booted by LILO this can be shown by
"lilo -T geom".

There have been reports about problems when compiling against uClibc. More
problem reports or suggestions of fixes are welcome!

Writing Windows 7 NTFS boot records with ms-sys is probably not useful if
the intention is to get a bootable partition.
You can’t perform that action at this time.