412 Project Suggestions
(Overview)
Dave Eckhardt
[email protected]
Movie Night
Hackers
Thursday, August 26th
19:00, GHC 4401 (Rashid Auditorium)
Presented by the CMU Computer Club
Disclaimer
Most entries on my list are Plan 9 projects
You don't have to do a Plan 9 project
Going over the list is designed mainly to spark
inspiration (at this point)
For today, think of Plan 9 as just a platform with an
unusual number of low-hanging-fruit projects
Plus it has shock value at parties
Plan 9 Kernel Projects
PlayStation 3
Exists: tool chain, debug-output-via-Ethernet
MIPS32 or MIPS64 laptop
Exists: very close port to MIPS Malta in lab
SPARC-64 (non-laptop) port
CPU speed control?
USB3/xhci controller (ambitious)
Tilera port (step 0: compiler)
'Fun' with EFI (secret plan)
PlayStation 3 Port
Processor: IBM Cell Broadband Engine
A slow-ish PowerPC plus 7 co-processors
Platform
Third-party OS's run under a hypervisor
Yellow Dog Linux is fallback documentation
Related work
Partial port of Inferno to Cell via 2007 GsoC
Initial work Fall '09 15-412
5
MIPS32/64
Plan 9 used to run on MIPS32
Locally it almost runs again!
A MIPS64 port is in progress
Compiler nearly done
Kernel partly done
Why?
Clean RISC architecture, embedded h/w
Three existing laptops... plus one supercomputer...
6
SPARC-64 Port
Plan 9 used to run on sparc-32 (2e)
A 4e sparc-32 port is in progress
Also a 4e sparc-64 port (booted in 2005)
I have a Sunfire V240
With a lights-out management console port
And Simics!!!
Why? Niagara
Processor Speed Control
Processors are hot these days scalding!
Conceptually easy to slow when load is low
Check length of run queue
My 1.6 GHz laptop frequently runs at 150 MHz
The nice thing about standards is there are so many
to choose from
Pentium M (early), Pentium M (modern), ...
Goal: kernel device, user-space daemon
8
USB (Non-kernel) Hacking
There are lots of USB devices (that's the point)
Memory-card readers
Wireless (and wired!) network interfaces
RS-232 serial port adaptors
Plan
Warm-up: lsusb device-tree browser
Pick one, make it work well
Easy: PalmConnect USB serial dongle
Hard? Bluetooth (Cell-phone DUN or A2DP audio)
Hard: TEW-429UB 802.11: OpenBSD driver exists
Plan 9 File System Projects
Extensions to cdfs, the cd-burner file system
Burn-free buffer-underrun protection?
Add DVD-RAM support
UDF file-system support
UDF is like ISO9660 but more so
Three steps
Reader (nice exercise)
One-shot creator (not too hard)
Live writer (future work)
10
Plan 9 VM client Projects
VMware defined a smart client API
Share cut&paste buffer between guest & host
Mouse management
Old API: NDA, no longer works perfectly
New API: public, not supported yet...
We are part of the VMware University program
Microsoft released make Linux run better in HyperV code
Maybe other OS's could run better, too...
11
Plan 9 Security: PubCookie
PubCookie web authentication
Like AFS once you have it, you wonder how you
lived without it
Crypto experience in real world
Potentially interesting
Compare resulting code against Apache module
If extra time: provide auth server too
12
Plan 9 Security Projects
X.509-certificate file system
Add AES to existing SSL file system
OpenPGP-message file system
Add pre-auth to p9sk1 (isomorphic to krb4)
Key ingredient: sign-off from a security expert
Disk encryption
Work on WPA
Some work in progress by a reasonable person
13
Plan 9 Language Projects
Squeak
Open source Smalltalk VM, written in Smalltalk
Basis for exciting distributed applications
Architected for portability
Local enthusiast available to mentor
14
QEMU for Plan 9
QEMU is ... odd
Emulation, but not via an interpreter
Binary translation, but without knowing target
machine language
Status of QEMU for Plan 9
Christoph Lohmann ported some infrastructure
Wes Filardo did 95% of code translator...
QEMU rewrote code translator from scratch!
15
QEMU for Plan 9
Why?
You'll really understand binary translation
(one of the VMware mysteries)
Better understanding of PC hardware
Interesting networking code to do, too
This would be hard but cool
16
Platform Projects
May or may not be Plan 9
CoreBoot ne LinuxBIOS
Xen
Port Plan 9 to latest Xen
Plan 9 domain 0 for Xen
Other projects
KVM... lguest host...
Soekris (mini-PC) boxes
Maybe some porting; bridge
17
Platform Projects
Odd boxes
Palm Pre (custom kernels can be built)
ARM
Efika MX SmartBook?
Extend existing ARM kernels
Tilera
Very odd, but we have a relationship
FreeBSD port could be interesting...
18
OpenSolaris is dead!
Illumos
Some device drivers (esp. SATA, Ethernet)
Build with gcc instead of SunStudio?
The project is young (it just spooned)
19
OS X / Darwin
Work on Darwin OpenAFS cache manager
Working code base, with rough edges
Local mentor available
Upgrade OS X ext2 support to ext3 (journal)
(Some) support for ELF binaries on OS X?
20
NetWatch
NetWatch is fun stuff hidden in SMM
Useful directions
Port to another motherboard
Emulate a (small) IDE disk
21
Other Projects
FreeBSD S4OS
Goal: suspend-to-disk
Well understood, but not easy
The trail is littered with corpses
Grading will be scaled appropriately
22
Other Projects
Click modular router project
Target: Soekris tiny router box (start: simics)
Goal: point-and-click DSL link scheduler
[insert your project here]
Linux kernelnewbies.org
FreeBSD freebsd.org
NetBSD you get the idea
Finish Plan 9 port on PPC iMac
23
Dave's Top Picks
Plan 9 user-space USB driver
PalmConnect USB or USB wireless or Bluetooth
Plan 9 on MIPS (laptop eventually)
Plan 9 WebISO support or X.509 file system
Plan 9 on Sunfire V240
Darwin OpenAFS cache manager
FreeBSD S4OS
OpenSolaris
Plan 9 UDF/X.509/OpenPGP file systems
24
Next Steps
Turn things over in your mind...
Linux/BSD projects abound
May be higher turmoil
We have Plan 9 mini-projects for warm-up
Multiple ways to coherence
Pick an OS, pick a type of project, pick a partner
Any constraint will help you focus
For Friday: bring current top 3 ideas to class
For Monday: read the Amoeba/Sprite paper
25