Table of Contents
Here you will find a description of setup for FreeDOS to boot over SAN. I've tested it successfully using SCST target and exporting an iSCSI disk to my workstation for the setup of the DOS system. Please note that floppy images won't work since the initiator sets up SCSI harddisk semantics.
Required tools
sys
utility source code from http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/sys/2037.unstable/
makebootfat
from http://advancemame.sourceforge.net/boot-download.html
freedos odin image
from http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img
Preparing the environment
Unpack and build the latest makebootfat
release. The source directory contains the file mbrfat.bin
which will be installed as MBR to the target disk. You could use any other bootloader, or just install-mbr
from mbr
package of your distribution.
The source code of sys
utility from FreeDOS contains the needed FreeDOS Bootsectors. Unpack it and find the files
- fat12.bin
- fat16.bin
- fat32lba.bin
Get the kernel.sys
and command.com
files from the freedos image. These files shall not be moved on the target filesystem since they have a special location. Loop-mount the freedos image and get the files from there. You probably want to include some of the other files at later point.
Prepare the target device
From your san storage export a LUN and get it to the workstation you have the tools on. The target should be exported with 512 byte block size.
Once you have the device in place, create the filesystem.
Example command:
# ./makebootfat -v \
-o /dev/sdb \
-E 255 \
-1 fat12.bin \
-2 fat16.bin \
-3 fat32lba.bin \
-m mbrfat.bin \
-c kernel.sys \
-c command.com \
image
Note that you need to change the device accordingly. Also, the directory image
must exist for this command to succeed. It doesn't carry any special meaning here. Now you've got a bootable FreeDOS image.
Adding files
When makebootfat
runs, the system doesn't notice the partition table change on that device. To be able to mount the newly created filesystem you need to run
# blockdev –rereadpt /dev/sdb
Now you can mount sdb1
and add other dirs and files. Take care not to move the kernel.sys
and command.com
files.