Hi Bob,

not sure about your plans but... How about installing
DOS directly to some disk / SD / USB / CF without ISO?

To boot DOS with isolinux, you have to use memdisk, a
bootable ramdisk which initially loads a diskimage and
which boots as if it would be a Linux kernel with some
initrd image from the view of isolinux. You can do the
same with syslinux from any FAT drive and you can boot
DOS directly from any FAT drive, too. To put a FreeDOS
on a FAT drive from within Linux, you can use my Perl
script which compiles and puts the boot sector for you
as described by Alain. Do not forget to put the files
as well, just the usual way: Mount the disk, copy some
kernel.sys + config.sys + autoexec.bat + command.com
and all other files that you would like on the disk...

I guess you can also install isolinux as a package on
Fedora to get the isolinux files somewhere where you
can copy them from, or download from the syslinux page.

In general, you can get info about individual FreeDOS
tools on http://www.freedos.org/software/ including
URLs. All tools come, among other packagings, as ZIP
with binary (and in newer ZIPs, source: In older ZIPs
the source is a separate ZIP download) in a directory
structure which allows you to unzip all tools in one
c:freedos tree and still have them nicely organized.

>> 1) Program needed: NASM, which I got from Debian
>> $ sudo apt-get install nasm
>> 2) program from Eric for the boot sector:
>> <http://ericauer.cosmodata.virtuaserver.com.br/soft/specials/sys-freedos-linux.zip>
>> create a directory ./sys-freedos-linux and expand it there

This program contains the various FreeDOS boot sectors
(FAT12, 16 or 32, LBA or CHS) and compiles and installs
them for you on any disk or diskimage of your choice.

>> 3) create file of the right size. 5760k was ok for me, there is some
>> magic in the size and not everything will be ok. (more studies needed)
>> $ dd if=/dev/zero of=FreeDOS.img count=11520
>> 11520+0 records in
>> 11520+0 records out
>> 5898240 bytes (5.9 MB) copied, 0.408512 s, 14.4 MB/s

You can also use any existing FAT drive or diskimage here.

>> 4) Prepare it with a FAT file system
>> $ sudo mkdosfs -v FreeDOS.img

If you use an existing drive or diskimage, you do not
HAVE to format it. Of course you can, if you want to
have a fresh start...

>> mkdosfs 3.0.1 (23 Nov 2008)
>> FreeDOS.img has 64 heads and 32 sectors per track,
>> logical sector size is 512,
>> using 0xf8 media descriptor, with 11520 sectors;
>> file system has 2 12-bit FATs and 4 sectors per cluster.
>> FAT size is 9 sectors, and provides 2867 clusters.
>> Root directory contains 512 slots.
>> Volume ID is 0cbb7ca7, no volume label.
>> 5) compile and write a suitable boot sector. This is a smart script by
>> Eric Auer that configures it with the appropiate parameters
>> $ ./sys-freedos-linux/sys-freedos.pl --disk=FreeDOS.img
>> DOS boot sector for FreeDOS.img will be created by:
>>            nasm -o /dev/stdout -dISFAT12
>> ./sys-freedos-linux/bootsecs/boot.asm
>> Using FAT12. Partn offset 0, CHS *x64x32  Drive 0, (0x0, 0x29),
>> SerNo CBB-7CA7, Strings '           ',  'FAT12   '.
>> Boot sector successfully updated.

NOTE: If you use a PARTITION instead of an unpartitioned
drive which only contains the filesystem, the OFFSET of
that partition must be set properly. This is usually the
case for partitions formatted by DOS or Windows and for
e.g. pre-formatted FAT32 USB sticks and similar, but not
always for partitions formatted with mkdosfs, depending
on whether mkdosfs can access enough context information.
Not sure about partitions made and formatted by GPARTED.

You can also use my script to manually change the offset
if you KNOW that it was NOT already set right, but that
involves extra manual calculations by you.

>> 6) mount it in a directory
>> $ mkdir bootimg
>> $ sudo mount -v -o loop,uid=you,gid=you FreeDOS.img bootimg

If you use a physical HDD/CF/USB/SD, just re-connect it or similar
if you do not want to use mount manually...

>> 7) copy into it KERNEL.SYS, COMMAND.COM and all other files

All other files means at least config.sys and autoexec.bat :-)

>> 8) use it just the same way then the image made from a floppy, memdisk
>> will recognize it. I used isolinux, here is how I created the iso:
>> $ mkisofs  -R -v -A "FreeDOS big boot CD" -V FreeDOS-V1.x     \
>>        -b isolinux/isolinux.bin -c isolinux/boot.cat             \
>>        -no-emul-boot -boot-load-size 4 -boot-info-table          \
>>        -o /mnt/dados/Segurver/FreeDOS-V1.x.iso                   \
>>        /mnt/dados/CDROM

In this example, you provide isolinux.bin to mkisofs as boot menu.
I think the boot.cat is automatically created by mkisofs. The file
after -o is the output ISO image and the directory at the end is
where you take the files to put on the CD / DVD / BD ISO from. You
can experiment much easier when you use a rewriteable CD or DVD.

An ALTERNATIVE method is to create or modify a boot FLOPPY image.
Only certain sizes (1.2M, 1.44M, 2.88M) are possible then. You can
use a real floppy as template or an image. If you do not want to
mount the image, or are not root and cannot, just use "mtools" to
"mcopy" files around etc. Many graphical CD/DVD burning tools let
you select a boot floppy image for making a disk bootable. Note
that your boot floppy then has to contain all CD / ... drivers if
you want to use not only the files on the "floppy" but also those
on the "outer" CD / ... after you boot the whole thing to DOS.

Regards, Eric

Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
Freedos-user mailing list

Reply via email to