Software


I like to write software. Here is a sample of projects I've worked on:

  1. 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).

  2. 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.

  3. 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.

  4. I was responsible for the x86 portion of the IBM Research hypervisor: rHype.

  5. 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.

  6. I wrote a wireless security auditor to be used on PDA's: WSA. I also did a Windows XP version.

  7. 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.

  8. 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.

  9. Security tools such as rpctoolkit and nfsshell for which there is even a freshmeat page :-).