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 setjmp/longjmp and signal
functionality, and /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
time.
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
linux.
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 Nhdd-image is virtural disk image file."XX:XX:XX:XX:XX:XX" is ethernet MAC address."N" is interface number.-e and omit -i option, 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 \
--with-headers=</path/to/gcc/install>/lib/gcc/mmix/3.4.1/include-fixed:</path/to/linux/extracted/directory>/include
\
ac_cv_type_long_double=8 CFLAGS="-O2 -melf"include/asm directory is mssing in the linux source directory,
make symbolic link to include/asm-mmix as include/asm.
install biarch=64 prefix=</path/to/gcc/install>/mmix-linux
include and library directory in the
<path/to/gcc/install>/mmix
directory.
include and library directory in the </path/to/gcc/install>/mmix-linux
to the <path/to/gcc/install>/mmix
directory or make symbolic link.
<path/to/gcc/install>/mmix
directory with following commands.ln -s </path/to/linux/extracted/directory>/include/linux
<path/to/gcc/install>/mmix/include/linuxln -s </path/to/linux/extracted/directory>/include/asm-generic
<path/to/gcc/install>/mmix/include/asm-genericln -s </path/to/linux/extracted/directory>/include/asm-mmix
<path/to/gcc/install>/mmix/include/asm
</path/to/gcc/install>/lib/gcc/mmix/3.4.1
directory.
'--host=mmix' option to 'configure'
command.