NAME
dosminix, mkfile - Running MINIX 3 under DOS
SYNOPSIS
C:\MINIX> boot disk0.mnx (Typical example)
C:\MINIX> mkfile size disk
DESCRIPTION
This text describes running MINIX 3 under DOS. The DOS ver-
sion of the Boot Monitor, described in monitor(8), grabs as
much memory as DOS is willing to give, loads MINIX 3 into
that memory from the active partition of a "file as disk",
and jumps to the MINIX 3 kernel to let MINIX 3 take control.
As far as DOS is concerned MINIX 3 is just a part of the
boot.com program.
In the example above disk0.mnx is the "file as disk". It is
a file of many megabytes that is used by MINIX 3 as a disk
of four partitions. These partitions will normally be
/dev/dosd1 through /dev/dosd4, with /dev/dosd0 for the whole
"disk". The Boot Monitor will set the dosd0 boot variable
to the name of the disk (its first argument), the root file
system will be the active partition, usually dosd1. It is
better to use the special name bootdev to indicate this dev-
ice, usually in the setting rootdev=bootdev.
Once MINIX 3 is running it will operate the same as if
started from a regular disk partition until it is shut down.
On shutdown from protected mode it will return to the Boot
Monitor prompt, and with the exit command you leave the Boot
Monitor and return to DOS. Shutting down from real mode
will reboot the machine, just like when run from a disk par-
tition. (This more or less crashes DOS, but DOS is used to
such abuse.)
EMM386
MINIX 3 can't run in protected mode (286 or 386 mode) if DOS
is using a memory manager like EMM386. You can either tem-
porarily comment out EMM386 from CONFIG.SYS, or you can
press F8 on startup to bypass CONFIG.SYS. This is only pos-
sible with the later DOS versions.
Windows 95
Press F8 at startup to make the boot menu visible. Choose
"Command prompt", or "Safe mode command prompt" to run DOS.
Use the "safe mode" if EMM386 is started in CONFIG.SYS.
Typing F8 at the right moment isn't easy, so you may want to
change the way Windows boots by editing the MSDOS.SYS file
found in the root directory of your Windows system. This is
alas not trivial. Open a window on your main drive, click
on "View" and choose "Options." In the Options window
choose "View" and enable "Show all files". The MSDOS.SYS
file should now be visible, among several other hidden
files. Right-click on the MSDOS.SYS icon, choose "Proper-
ties" and disable "Read-only". Bring MSDOS.SYS into a sim-
ple text editor such as Notepad. In the [Options] segment
add the following lines (or change existing lines into):
BootMenu=2
BootMenuDelay=5
The first setting makes the Windows boot menu always visi-
ble, and the second line changes the delay before booting to
5 seconds. Take care not to change anything else, or things
will go horribly wrong. Save MSDOS.SYS and exit. Don't
forget to make MSDOS.SYS read-only again, and also hide all
the hidden files again, unless you like it this way.
DOS compatibility box
The 16-bit version of standard MINIX 3 can be run in real
mode in a DOS box. This is somewhat surprising, because it
means Windows 95 simulates devices like the keyboard, timer,
and interrupt controller well enough to fool MINIX 3 into
thinking that all is well. Alas it doesn't work as well
under Windows NT. Keypresses get lost if you type to fast,
and using the floppy occasionally locks MINIX 3 up. This is
a bit disappointing, because it is the only way to run MINIX
3 under NT. Under Windows 95 one is better off putting the
system in DOS at boot and then to run MINIX 3 in protected
mode.
One thing that is better under NT is that the Boot Monitor
is able to get a so-called "Upper Memory Block", thereby
raising useful memory to about 750K. Windows 95 however
hogs leftover UMB memory in a process named vmm32, whatever
that may be. To get some of this memory you can put BOOT /U
at the start of autoexec.bat. The monitor will grab a 64K
UMB if it can get it, and keep that memory safe for use by
MINIX 3 when it is later started from Windows.
The easiest way to start MINIX 3 is to give all MINIX 3 disk
files the suffix MNX. Doubleclick on the disk you want to
run to make the "Open With" window appear. Click on "Other"
and browse to the BOOT.COM program. Set the name of the
.mnx files to "MINIX 3 "disk" file" in the description box
if you want everything right. In the future you can just
click on a MINIX 3 disk file to run it, you don't have to
start a DOS box first. (To make it perfect use "View",
"Options", "File Types", choose "MINIX 3 "disk" file",
"Edit", "Change Icon", "Browse", select MINIX.ICO.)
When MINIX 3 shuts down it will try to reboot what it thinks
is a PC. Windows seems to assume that the DOS session has
exited. Right-click on the BOOT.COM program, "Properties",
"Program", and enable "Close on exit" to make the DOS box
disappear automatically when MINIX 3 thinks it reboots. You
may also want to lock the font to 7x12, or any other font
that isn't ugly.
MINIX 3 disk files are opened in a write-exclusive mode. A
second MINIX 3 session can only open it read-only, which may
lead to a "can't open root device" error.
Mkfile
MINIX 3 disk files can be created or resized with the mkfile
utility. Its two arguments are the size and name of the
disk file. The size is a number optionally followed by the
letter k, m or g to specify kilobytes, megabytes, or even
gigabytes. So the call
mkfile 50m disk5.mnx
will create a 50 megabyte file named disk5.mnx. If the file
already exist then it is shrunk or grown to 50 megabytes.
No data is lost if the file is grown. If the file is shrunk
then only the data that is cut off is lost. These features
allow one to inrease the size of a MINIX 3 /usr partition
with the following recipe:
copy disk0.mnx disk0.new Copy the disk to disk0.new
mkfile 100M disk0.new Enlarge to 100 megabytes
boot disk0.mnx Boot the old "disk"
[ESC] Get the attention of the monitor
dosd5=disk0.new /dev/dosd5 becomes disk0.new
boot
...
login: root
part Choose dosd5, move to the
Size field of dosd7 parti-
tion, hit 'm' to fill it out
to the end of the "disk".
Write and quit.
mkfs /dev/dosd7 Recreate the file system, but larger
mount /dev/dosd7 /mnt
cpdir -v /usr /mnt Copy /usr to the new disk's /usr to be
shutdown Back to the monitor
exit Back to DOS
ren disk0.mnx disk0.old
ren disk0.new disk0.mnx Replace old by new
boot disk0.mnx Run the larger system
Now MINIX 3 runs from a larger "disk". Don't worry if it
claims to have crashed, there wasn't a "shutdown" entry in
/usr/adm/wtmp at the time it was copied.
The above recipe is for a ordinary standard MINIX 3 instal-
lation with /usr on the second and last partition.
Backups
In the recipe above you saw how simple it is to create a new
system, just copy a disk file. It is equally simple to make
a backup, you just copy the disk file. To make a test sys-
tem: copy the disk file. To make another test system: copy
the disk file. Let friends have their own MINIX 3: copy the
disk file again. (Exciting, eh?)
You may want to save a MINIX 3 disk file in a ZIP file to
save space. It may look as a good idea to first run make
clean in /usr/src to remove all the binary junk, but alas
that has no effect at all. The disk file is compressed
under DOS, and there it is unknown which blocks are in use
and which are free. With the following trick you can make
those deleted blocks compress really well:
cd /usr/tmp
echo >junk
while cat junk >>junk; do :; done
sync
rm junk
After these commands all free blocks contain newlines. Long
runs of the same byte happen to compress by a factor 1000,
so the unused disk blocks will almost disappear in the ZIP
file.
FAT driver
The dos disk driver, described in dosd(4), has two identi-
ties. By default you get the "file" driver, that uses DOS
file I/O calls to access a large DOS file as a disk. The
other alternative is the "FAT" driver. The FAT driver sits
on top of an ordinary MINIX 3 disk driver, and interprets a
partition as a FAT (File Access Table) file system to find a
file to use as a MINIX 3 disk. The result has the same
effect as the file driver, except that no costly calls to
DOS are made. To enable this feature you have to use the
following Boot environment settings:
dosd = fat
dosd0 = hd1:\minix\disk0.mnx
The dosd setting tells MINIX 3 to use the FAT driver, and
the dosd0 setting tells the MINIX 3 device and DOS file name
to use. Disk I/O should be sped up nicely by this change,
although typical use of MINIX 3 doesn't require fast disk
I/O, so the difference won't be too noticable.
Support for FAT-32 (big file system support added in the
later Windows 95 releases) has not been tested very well.
The FAT-12 and FAT-16 code has been used a lot, and seems
safe. Note the risks inherent in these drivers: The file
driver uses simple DOS file I/O calls, leaving it to DOS to
know its own file system. The FAT driver interprets FAT
file system structures by itself. MINIX 3 booted from a
real hard disk partition can only use DOS disk files through
the FAT driver.
SEE ALSO
dosd(4), monitor(8), usage(8).
NOTES
Use at your own risk.
BUGS
Hasn't been tried under Windows 98 yet.
Pray the deity of your choice will forgive you for running a
UNIX-like system as an ordinary DOS program. The author of
this code is already doomed. When his time comes the dae-
mons wi*(&%*$%*&
Memory fault - core dumped
AUTHOR
Kees J. Bot (kjb@cs.vu.nl)