Introduction
Introduction Statistics Contact Development Disclaimer Help
View source
# 2025-02-22 - Install SvarDOS In Virtual Machine
I recently read an article about SvarDOS:
SvarDOS: DR-DOS Is Reborn As Open Source Operating System
DR-DOS on Wikipedia
SvarDOS web page
I installed SvarDOS both on real hardware and in two virtual
machines, and it went pretty well. I loved the minimal but highly
functional default configuration.
In this log entry, i will walk through the process of installing
SvarDOS in qemu and dosbox-x running on Slackware64 15.0. I am
using dosbox-x-2025.02.01 and qemu-9.2.0, which are the latest
versions from SlackBuilds at the time of writing this log entry.
I also use kpartx from multipath-tools to mount the disk images.
dosbox-x-2025.02.01 SlackBuild
qemu-9.2.0 SlackBuild
multipath-tools-0.8.7 SlackBuild
Download the SvarDOS stable build (20240915) and package ISO.
SvarDOS 1.44M floppy disk
SvarDOS package repository ISO
I placed these in ~/dist/dos/os/svardos/20240915/ and unzipped the
floppy image.
# Install SvarDOS using Qemu
SvarDOS supports FAT32, but i avoid it because it can be
pathologically slow to repair using the free dosfsck.exe. I accept
the limitations of FAT16B as a trade-off for better compatibility and
maintenance. This limits partition sizes to 2G using the SvarDOS
installer.
There's a lot of FAT filesystem lore on the Internet. For example, i
read that keeping the partitions slightly under 1G results in a
smaller cluster size, which greatly reduces disk space overhead,
resulting in more space available for data. Since i am using a
virtual machine with practically limitless storage, i consider this
a micro-optimizations.
Below is a table of FAT16 cluster size vs disk space efficiency.
Cluster Size Efficiency FAT16 Partition Size
------------ ---------- --------------------
2K 98.4% 0-127 MB
4K 96.6% 128-255 MB
8K 92.9% 256-511 MB
16K 85.8% 512-1023 MB
32K 73.8% 1024-2047 MB
64K 56.6% > 2047 MB
http://www.project9.com/fat32/
I believe Windows NT could format FAT16 partitions up to 8G using 64K
cluster sizes, but DOS was limited to 2G using 32K clusters.
* * *
Later in these instructions i answer "Y" to permit fdisk to create a
partition with the maximum size. With the 2G disk image, this uses
a 32K cluster size, which is compatible with other versions of DOS.
With a larger disk, it might use a 64K cluster size, which is
not compatible with some versions of DOS. I might need to answer "N"
and enter 2000 as the partition size, to keep the partition under 2G.
I can verify the cluster size of a FAT16 filesystem using the
CHKDSK command.
C:\>chkdsk c: /s | find "every cluster"
32.768 bytes in every cluster
32.768 means the c: drive has the more compatible 32K cluster size.
* * *
My first DOS hard disk was 80M. In comparison, 2G should be more than
enough. I use the raw disk image format for maximum compatibility
with various virtual machine software. I use a sparse file to
conserve space on the host system.
$ mkdir -p Qemu/svardos
$ cd Qemu/svardos
$ truncate -s 2G svardos.raw
The last truncate command creates the 2G sparse raw disk image.
Note, I didn't have to use the truncate command! Alternatives
are the dd or fallocate commands.
* dd if=/dev/zero of=svardos.raw bs=1 count=0 seek=2G
* fallocate -l 2G svardos.raw
Create a shell script and run it to start qemu. I use new-style qemu
configuration options rather than the easier compatibility options.
This allows a greater degree of control.
$ cat >qemu-svardos.sh <<__EOF__
#!/bin/sh
DISK="/home/ben/Qemu/svardos/svardos.raw"
CDROM="/home/ben/dist/dos/os/svardos/20240915/sv-repo.iso"
FLOPPY="/home/ben/dist/dos/os/svardos/20240915/disk1.img"
MACH="pc-i440fx-9.2,dump-guest-core=off,mem-merge=off,usb=off"
SAND="on,obsolete=deny,elevateprivileges=deny,spawn=deny"
SAND="${SAND},resourcecontrol=deny"
SDL_AUDIODRIVER=alsa qemu-system-i386 \
-accel kvm \
-machine "$MACH" \
-machine pcspk-audiodev=1 \
-overcommit mem-lock=off \
-no-user-config \
-sandbox "$SAND" \
-msg timestamp=on \
-cpu max \
-m 32M \
-global i8042.kbd-throttle=on \
-audiodev alsa,id=1 \
-device sb16,audiodev=1 \
-device VGA \
-drive format=raw,file="$FLOPPY",if=none,id=floppy1 \
-device floppy,unit=0,drive=floppy1 \
-global isa-fdc.bootindexA=0 \
-drive format=raw,file="$DISK",if=none,id=disk1 \
-device ide-hd,drive=disk1,bootindex=1 \
-drive file="$CDROM",media=cdrom,if=none,id=cd1 \
-device ide-cd,drive=cd1,bootindex=2 \
-display sdl,gl=on,grab-mod=rctrl \
-rtc base=localtime
__EOF__
$ chmod a+rx qemu-svardos.sh
$ ./qemu-svardos.sh
At the welcome screen, I press Enter to select English.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At the keyboard layout screen, I press Enter to select English (US).
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At the installation screen, I press Enter to Install SvarDOS.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At the partition screen, I select Run the FDISK partitioning tool,
then press Enter.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At FDISK introduction, I press N to disable FAT32,
then press Enter.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At FDISK Options, I press Enter to Create DOS partition or
Logical DOS Drive.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At Create DOS Partition or Logical DOS Drive, I press 1 to
Create Primary DOS Partition, then press Enter.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At Create Primary DOS Partition, I press Enter to use the maximum
available size for a Primary DOS Partition and make the partition
active.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At the partition screen, I press ESC to continue.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At FDISK Options, I press ESC to exit FDISK.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At You MUST restart your system for your changes to take effect,
I press ESC to exit FDISK.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At Your computer will reboot now, I press Enter.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At the welcome screen, I press Enter to select English.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At the keyboard layout screen, I press Enter to select English (US).
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At the installation screen, I press Enter to Install SvarDOS.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At the disk screen, I press Enter to select C: [2047 MiB, hda0]
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At the format screen, I press Enter to Format drive C:
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
At the installation of SvarDOS to C: screen, I press Enter
to Install SvarDOS.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
It installs 32 packages. When it is done, it shows a screen
Your computer will reboot now.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I close the QEMU window to power off the virtual machine.
This is equivalent to turning off the power while a PC is running.
By default, SvarDOS does synchronous I/O and does not use a cache.
When at the prompt, the data is already written to disk, so it is OK
to abruptly power off the machine.
I edit the shell script to make the floppy the last boot option.
$ ed qemu-svardos.sh
1798
/bootindexA/s/=0/=9/
w
1798
q
I run the shell script to start qemu again:
$ ./qemu-svardos.sh
It takes a moment to do the post-install steps. When finished,
it shows SvarDOS has been installed. Restart your computer now.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I run FDAPM to do a cold boot.
C:\TEMP>\SVARDOS\FDAPM COLDboot
It boots to the Welcome to SvarDOS screen.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
The first thing i would like to do is enable access to the optical
drive. Unfortunately, the driver is not included on the install
floppy. I will need to copy it in place from the Linux host. I
close the QEMU window to power off the virtual machine.
I create scripts to mount and unmount the disk image on the Linux
host. My uid and gid are both 1000. Adjust the script to match
yours.
$ cat >mount-svardos.sh <<__EOF__
#!/bin/sh
disk="/home/ben/Qemu/svardos/svardos.raw"
log="/mnt/fuse/svardos.log"
dir="/mnt/svardos"
part="1"
# truncate log
cat /dev/null >"$log"
losetup -f "$disk"
# wait a second, then probe the partitions
sleep 1
loop=$(losetup -j "$disk" | cut -d : -f 1)
kpartx -av "$loop" >"$log" 2>&1
# find the loop device
loopdev=$(awk -v p=$part '
/^add map / {
i++
parts[i] = $3
}
END {
print parts[p]
}' "$log")
loopdev="/dev/mapper/$loopdev"
# mount it
mount -o uid=1000,gid=1000 "$loopdev" "$dir"
__EOF__
$ chmod a+rx mount-svardos.sh
$ cat >unmount-svardos.sh <<__EOF__
#!/bin/sh
disk="/home/ben/Qemu/svardos/svardos.raw"
dir="/mnt/svardos"
# unmount the filesystem
umount "$dir"
# find loop device
loop=$(losetup -j "$disk" | cut -d : -f 1)
# detach loop device
kpartx -d "$loop"
losetup -d "$loop"
__EOF__
$ chmod a+rx unmount-svardos.sh
To actually mount this disk image, i need to run these scripts as
user root. The first time around i need to create directories for
the mount point and log file.
$ su -
# mkdir -p /mnt/svardos
# mkdir -p /mnt/fuse
Next i mount the disk image, the package ISO, copy the CD driver
package, unmount everything, and exit the root shell.
# /home/ben/mount-svardos.sh
# mount -o loop,ro -t iso9660 \
/home/ben/dist/dos/os/svardos/20240915/sv-repo.iso /mnt/cdrom
# cp /mnt/cdrom/videcdd.svp /mnt/svardos/
# umount /mnt/cdrom
# /home/ben/unmount-svardos.sh
# exit
I boot SvarDOS to the welcome screen again.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I install the CD driver packages.
C:\>pkg install videcdd.svp
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I use the excellent SVED editor to enable the CD driver in CONFIG.SYS.
C:\>copy CONFIG.SYS CONFIG.BAK
C:\>sved CONFIG.SYS
I use the arrow keys to navigate to the ;DEVICE=C:\DRIVERS\VIDECDD...
line.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I press Backspace to delete the leading ; character, uncommenting line
DEVICE=C:\DRIVERS\VIDECDD\VIDE-CDD.SYS /D:SVCD0001
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I press Esc to open the SVED menu, press Down to select Save, and
press Enter.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I press Esc to open the SVED menu, press Up to select Quit, and
press Enter.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I use SVED to enable the CD driver in AUTOEXEC.BAT.
C:\>copy AUTOEXEC.BAT AUTOEXEC.BAK
C:\>sved AUTOEXEC.BAT
I use the arrow keys to navigate to the REM SHSUCDX ... line.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I press the Backspace key 4 times to remove the "REM " prefix.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I press Esc to open the SVED menu, press Down to select Save, and
press Enter.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I press Esc to open the SVED menu, press Up to select Quit, and
press Enter.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I use FDAPM to do a cold boot.
C:\>SVARDOS\FDAPM COLDboot
I install the unzip program from CD.
C:\>pkg install D:\unzip.svp
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I get the disk geometry from FDISK.
C:\>FDISK /INFO
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
Note the text "geometry 520/128/63" in the output.
I close the QEMU window to power off the virtual machine.
# Configure SvarDOS in DOSBox-X
I run dosbox-x to create an initial default configuration.
$ dosbox-x
This opens an initial DOSBox-X window.
gopher://tilde.pink/I/~bencollver/log/2025-02-22-install-svardos-in-virtual-mac…
I exit DOSBox-X.
Z:\>exit
I make a backup copy of the DOSBox-X default configuration.
$ cp .config/dosbox-x/dosbox-x-2025.02.01{,-orig}.conf
I make the SvarDOS specific DOSBox-X configuration.
$ cp .config/dosbox-x/dosbox-x-2025.02.01{,-svardos}.conf
I edit the SvarDOS specific DOSBox-X configuration. I change the
memory size from 16 to 32M to match the qemu virtual machine.
DOSBox-X needs the geometry for the raw disk image. Note that FDISK
in qemu reported "geometry 520/128/63" and that the sector size is
512 bytes. Thus the parameters "-size 512,63,128,520".
$ ed .config/dosbox-x/dosbox-x-2025.02.01-svardos.conf
104643
/^memsize = 16/s/16/32/
$
a
imgmount c /home/ben/Qemu/svardos/svardos.raw -size 512,63,128,520
imgmount d /home/ben/dist/dos/os/svardos/20240915/sv-repo.iso -t iso -fs iso
boot c:
.
w
104814
q
I create a shell script and run it to start dosbox-x.
$ cat >dosbox-svardos.sh <<__EOF__
#!/bin/sh
dosbox-x -conf /home/ben/.config/dosbox-x/dosbox-x-2025.02.01-svardos.conf
__EOF__
$ chmod a+rx dosbox-svardos.sh
$ ./dosbox-svardos.sh
That's it!
# Configure SvarDOS Real Mode (16-bit)
I can optionally configure dosbox-x to emulate a 16-bit 8086 processor.
To do so, it is necessary to disable HIMEMX.SYS in CONFIG.SYS because it
requires a 32-bit processor. For the same reason it is also
necessary to disable the CDROM driver in CONFIG.SYS and AUTOEXEC.BAT.
Then i edit the dosbox-x-2025.02.01-svardos.conf file, changing
memsize = 1 and cputype = 8086 to specify an 8086 processor with 1M of
memory.
Below is an article about CD-ROM drives on retro hardware. The CD-ROM
drives on 8086 and 80286 PCs were typically single-speed drives using
proprietary controllers and drivers.
CD-ROM Drives In 286 And 386 PCs
# Notes
These steps create two virtual machines, one using dosbox-x and the
other using qemu. These both use the same disk image. Make sure to
power off one before powering on the other.
The qemu virtual machine is accelerated using Linux KVM, which runs
faster.
The dosbox-x virtual machine provides a more accurate BIOS. If your
keyboard has a Num Lock key, then you can use Alt Codes to enter
special characters in DOSBox-X.
Alt code
Alt codes do not work in qemu nor VirtualBox because of BIOS bugs.
VirtualBox BIOS bug that breaks Alt codes
On a tangent, the calvin editor suffers screen corruption because of
a bug in VirtualBox's CGA BIOS, INT 10, AH 05h,
SELECT ACTIVE DISPLAY PAGE.
VirtualBox CGA BIOS bug and calvin workaround
I intentionally avoided network configuration in order to
"keep it simple."
The SvarDOS shell is brutally minimal. The package CD includes 4dos
for a more full-featured shell.
tags: bencollver,retrocomputing,technical
# Tags
bencollver
retrocomputing
technical
You are viewing proxied material from tilde.pink. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.