VMMMIX is the MMIX virtual machine. It has console, HDD and Ethernet I/Os. Currently, this virtual machine runs on Windows only. And Linux runs on this MMIX virtual machine. While porting Linux to vmmmix, I encountered a problem. I couldn't solve this problem under MMIX architecture. So, I made dirty hack to MMIX architecture.
One day, I got a book about the MMIX - "The Art of Computer Porgramming, Volume
1 Fascicle 1: MMIX -- A RISC Computer for the New Millennium". I was inspired
by this book to write some program for MMIX. Finally, I decided to port linux
to MMIX and began to write programs. At this time, there are still
unimplemented functions, inefficient codes, duplicate codes, misunderstandings
and bugs. But fixing these problems requires long time, so I deciede to release
vmmmix with these problems. Now, I'm planning to fix these problems step by
step. Next release will support
/sbin/init will be run. If I have a lot of
time, next relese will be done few month after, but if not, it will take more
If you simply try to use vmmmix, download and extract
this zip file (vmmmix-20110410.zip). In command prompt, 'cd' to
directory where you extract vmmmix and type following command. This boots up
C:\>vmmmix.exe vmlinux.bin root=/dev/hda1 -d hdd.img
If you have interest in vmmmix implementaion, source codes and cross compiler are available. After reading my programs, if you got some useful ideas, please inform me.
Click here to download vmmmix source codes (vmmmix.src-20091231.zip). If you want to use ethernet with vmmmix, WinPcap is required. Version 3.1 and 4.0.2 are tested.Command line syntax:
C:\>vmmmix kerne-image "kernel command line" -d hdd-image -e XX:XX:XX:XX:XX:XX -i N
hdd-imageis virtural disk image file.
"XX:XX:XX:XX:XX:XX"is ethernet MAC address.
"N"is interface number.
-ioption, then vmmmix lists available interfaces with interface number.
How to install glibc:
/path/to/glibc-2.7/configure --host=mmix --prefix=</path/to/gcc/install>/mmix --disable-shared \
ac_cv_type_long_double=8 CFLAGS="-O2 -melf"
include/asmdirectory is mssing in the linux source directory, make symbolic link to
install biarch=64 prefix=</path/to/gcc/install>/mmix-linux
librarydirectory in the
librarydirectory in the
<path/to/gcc/install>/mmixdirectory or make symbolic link.
<path/to/gcc/install>/mmixdirectory with following commands.
ln -s </path/to/linux/extracted/directory>/include/linux <path/to/gcc/install>/mmix/include/linux
ln -s </path/to/linux/extracted/directory>/include/asm-generic <path/to/gcc/install>/mmix/include/asm-generic
ln -s </path/to/linux/extracted/directory>/include/asm-mmix <path/to/gcc/install>/mmix/include/asm