Around a year ago, I started working on emulating an iPod Touch 1G using the QEMU emulation software. After months of reverse engineering, figuring out the specifications of various hardware components, and countless debugging runs with GDB, I now have a functional emulation of an iPod Touch that includes display rendering and multitouch support. The emulated device runs the first firmware ever released by Apple for the iPod Touch: iPhoneOS 1.0, build 3A101a. The emulator runs iBoot (the bootloader), the XNU kernel and then executes Springboard.
This is quite impressive.
The preservation of these older mobile OSes is an important, but overlooked part of computing history. Things like early iPhone OS, early versions of Android, Blackberry OS, PalmOS, Symbian, Nokia “Series” OSes etc are hugely significant in influencing the modern mobile computing landscape. Sadly, because smartphones are deemed a “modern” invention (despite iPhone OS 1.x and Android 1.x being woefully obsolete and largely useless today), there seems to be very little love in preserving these OSes for posterity. I hope that by being able to emulate some of these platforms under QEMU, they’ll be more incentive to preserve and tinker with these older touch-based and mobile OSes by the larger OS hobbyist community.