Project Status

July 01 2002 (release-05)

  • Incorporated mmap()ing 4K pages on Windows (Thanks to Erik Paulson). This enables loading native linux binaries on umlwin32 without recompilation and shared libraries.

  • I have tested a few extra commands like vi, objdump, bash with colours etc.

  • Tiny CC works fine and can compile C programs on umlwin32!

  • Bugs/Limitations:

    - somehow tar [jz]xfv does not work. Use gunzip | tar instead.

    - I have seen glitches in terminal editing once in a while

    - Ignore the error messages printed out by halt

    - No job control and signal support yet.

June 28 2002 (release-04)

  • More stable build. ^-C does not kill the uml session. /sbin/halt works and should be used for halting.

  • Mounting hostfs works fine.

    Mount root filesystem rw with standard command 'mount -o remount /'

    Mount hostfs by running the script '/bin/hostfs'

  • Shell features:

    - Piping and redirecting works

    - Cannot kill a hanging process (no job control)

    - Command line editing DOESNOT work

    - Other things like history, functions, aliases, etc. seem to work

    - ^-D works as EOF for inputting from commandline.

  • Lots of new commands seem to be working including:

    - ksh, bash (init is linked to bash)

    - python (start it as 'python -i /lib/site.py, and you can import standard libraries. Ignore the error it prints upon startup)

    - fileutils such as: cat, rm, cp, mkdir, mv, cksum, head, tail, wc, od etc.

    - Commands like: tar, gzip/gunzip, bzip/bunzip, df, du etc

    - mkfifo works and fifos actually work fine! (just make sure that fifo-reader is in background since there is no way to kill a hanging process)

June 16 2002 (release-03)

  • Patch against 2.4.18-um20

  • Fork and Exec implemented. Uses windows processes instead of threads.

  • Integrated with the int80 syscall redirector from LINE

  • No more GSH. KSH without jobcontrol works fine. (/sbin/init is linked to /bin/ksh)

  • Simple constructs in ksh like alias and functions seem to work fine.

  • Simple binaries : cat, ksh, ls, mount to demonstrate fork()/exec()

  • All binaries are rebuilt with 64K section alignment and statically linked

  • Image is 4096 blocksized for performance reasons

  • Tight loop in idle process eliminated (This was the couse for 99% CPU utilisation by linux.exe)

  • Does NOT support shared libraries yet

  • First time invocation of binaries can be a bit slow

  • Basically still very unstable and useful only for proof of concept and feasibility. Needs to evolve a lot more.

  • Terminal control is non-existant. Complicated things like command line editing and ^-C DONOT work!

  • Type exit command at the ksh '#' prompt and then press ^-C to end the linux session

  • BEWARE !! Sometimes this fails to kill all the linux.exe processes. You need to kill them all manually before restaring a new session or else things wont work !!

    Use the command ps -a | grep linux | cut -d" " -f6,7 | xargs kill -9 to kill all the linux processes. Always verify that they are all dead with a ps -a !!

  • (Yes its a damn nuisance and I will fix it soon :) )

May 25 2002 (release-02)

  • Patch against 2.4.18-um20

  • console IO now works.

  • Linux.exe tested on XP, Win 2000 Pro.

  • Very basic segv handler and syscall redirector.

  • GSH (grrsh): A miniature shell with builtin commands, executed instead of init and supports commands like

    ls, cat, cd, pwd, cp, mkdir, mount, umount with very basic syntax.

  • Does NOT do fork()/exec() yet.

May 21 2002 (release-01)

  • Patch against 2.4.18-um20

  • This project was initiated by Dan Aloni (da-x@gmx.net) who managed to make the whole UML compile and build on windows. All my subsequent work is based on his efforts.

  • Currently there isn't much that works! The project is just starting and if you are interested in the current state, you can build it on windows under cygwin development environment.

  • You can run it with the special root image (see download section) and you can see the kernel coming up, mounting the root fs, and loading and passing control to the special version of /sbin/init which tries to print to the console. You can also see the fcntl() system calls being called for stdin, stdout and stderr. Thats basically it! Still interested? Read on ...