I like to write software. Here is a sample of projects I've worked on:
- I've been running an IPv6 tunnel for quite some time. One of the nice
things is that various sites make Usenet news freely accessible if you
access their NNTP server over IPv6. I haven't used Usenet news for ages
but when I did I used nn(1) and those commands are still imprinted in my
memory. I couldn't find a Linux port so I quickly did a port myself and
added IPv6 support. This isn't well tested and I know nn(1) is dated but
for the occasional Usenet browsing I still like to use it. My patches
are here and it is against nn-6.7.3.tar.Z
(www.nndev.org doesn't seem to work anymore).
- I've done many interesting pet projects at AMD but one of them
was called MVMM (or MiniVMM). It is a thin hypervisor that can run one
guest and it is either loaded as a UEFI driver, after which it stays resident,
or as a multiboot module after which is emulates a legacy BIOS int 19h
from a disk. The main reason for this hypervisor is to emulate devices
that are still being developed but still provide near native performance
for the rest of the OS that runs on it (the measured overhead was 1.5 - 2%).
The most interesting aspect of this hypervisor was how to intercept APIC
INIT commands that are used during SMP bootstrap. This hypervisor runs
unmodified version of Windows, Linux, MS-DOS and other operating systems.
In a way this is your bluepill from hell and interestingly none of the
virus scanners I tried detected it.
Unfortunately, this is AMD internal and proprietary code.
- I've worked with Intel on the bringup of unmodified operating
systems (Linux, Windows) on
Xen. Specifically, I wrote vmxassist and ported the Bochs
firmware to be used by Xen's HVM partitions. Later on I worked
together with AMD and Intel and wrote the HVM layer for Xen that
transparently supports AMDs Virtualization Technology and Intel's
VT-x extension in the same hypervisor binary. I'm currently working
on transparently switching between an instruction emulator and an
HVM partition (to get rid of vmxassist and improve emulated I/O
performance) but that project is currently on hold from my side
because I'm changing jobs. Anthony Liguori from IBM continues to
work on this.
- I was responsible for the x86 portion of the IBM Research hypervisor:
- I wrote the Linux device
drivers for the TPM (TCG's Trusted Platform Module). Kylene Hall
from IBM is maintaining these drivers and has greatly
improved them in the process.
- I wrote a wireless security auditor to be used on PDA's:
I also did a Windows XP version.
- Paramecium is the name of
an extensible operating system I wrote as part of my Ph.D. The name
was a pun on Amoeba, Paramecium's are slightly more evolved than an
Amoeba, they know about sex.
- I did the x86 port of Amoeba, a distributed operating system. I also ported X11 to Amoeba and wrote many smaller utilities. Someone is still maintaining it here.
- Security tools such as rpctoolkit and
for which there is even a