412 project suggestions (overview)412-f11/lectures/l02_projects.pdf · 3 disclaimer most entries on...

31
1 412 Project Suggestions (Overview) Dave Eckhardt [email protected]

Upload: others

Post on 20-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

1

412 Project Suggestions(Overview)

Dave [email protected]

Page 2: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

2

Movie Night

“Swordfish”– Thursday, September 1st

– 19:00, Gates 4401– Presented by the CMU Computer Club– $1 pizza

Page 3: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

3

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

Page 4: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

4

Plan 9 “Kernel” Projects

● Tegra “TrimSlice” Arm mini-PC● PlayStation 3● MIPS32 or MIPS64 laptop● Partial SPARC-64 (non-laptop) port● SpeedStep● Add support for USB devices

– More Ethernet– Serial– 802.11

Page 5: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

5

“TrimSlice”

● Small cute box● Lots of features

– USB, DVI, built-in wireless, ...

● NVIDIA Tegra ARM (dual-core Cortex A9)● Documentation is mostly Linux source● Plan 9 runs on other ARM platforms

– SheevaPlug

Page 6: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

6

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 investigation during Fall '08 15-412

Page 7: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

7

MIPS32/64

● Plan 9 used to run on MIPS32● A MIPS64 port is in progress

– Compiler “nearly done”– Kernel partly done– ...both by external mentor (who has “more insight

than time”)

● Why?– Clean RISC architecture, embedded h/w– Three existing laptops... plus one

supercomputer...

Page 8: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

8

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 (further along)● Machine in use: Ultra-2 (I have one)● Plan

– Get Ultra-2 running here (good infrastructure)– Work toward a more modern machine (SB-

100/150)

● Why? “Niagara”

Page 9: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

9

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

Page 10: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

10

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– Pick one, make it work well

● One 802.11 device has a nice OpenBSD driver

– Warm-up: some kind of device-tree browser

Page 11: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

11

802.11 PCI/PCIe

● Currently: solid 802.11b support for “Wavelan” (AT&T/Lucent/Agere/Avaya “Orinoco”) cards

● I believe reasonable and documented g hardware exists

● “Framework” work – some done, some to do

Page 12: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

12

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”)

Page 13: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

13

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

● Microsoft released “make Linux run better in Hyper-V” code– Maybe other OS's could run better, too...

Page 14: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

14

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

● PubCookie is fairly simple, hence obsolete– The new hotness: Shibboleth

Page 15: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

15

Plan 9 Security Projects

● X.509-certificate file system● OpenPGP-message file system● SSH 2 “the right way”● Add pre-auth to p9sk1 (“isomorphic to” krb4)

– Key ingredient: sign-off from a security expert

● Add AES to existing SSL file system● Disk encryption● Work on WPA (some work in progress)

Page 16: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

16

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

Page 17: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

17

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!

Page 18: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

18

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

Page 19: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

19

“Platform” Projects

● May or may not be Plan 9– LinuxBIOS CoreBoot

– Xen● Port Plan 9 to latest Xen● Plan 9 “domain 0” for Xen● Other projects (improve FreeBSD support)

● Soekris (mini-PC) boxes– Maybe some porting (there's a new one); bridge

Page 20: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

20

“Platform” Projects

● “Odd boxes”– Palm Pre (custom kernels can be built)– PowerPC

● Kuro Box● PegasosPPC.com “Open Desktop Workstation”

– OpenFirmware+PPC...we have some code like that...– CerfCube – 3-inch cube with a PPC machine inside

Page 21: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

21

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?

Page 22: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

22

Illumos/OpenIndiana

● Once upon a time there were happy OpenSolaris users...– Then Oracle became disinterested– Fork!

● Illumos (the OS) could use volunteers● We have some SPARC hardware...

Page 23: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

23

NetWatch

● NetWatch is “fun stuff” hidden in SMM● Useful directions

– Port to another motherboard– Emulate a (small) IDE disk

Page 24: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

24

Other Projects

● FreeBSD S4OS– Goal: suspend-to-disk– Well understood, but not easy

● The trail is littered with corpses● Grading will be scaled appropriately

● FreeBSD Tilera port– 8x8 array of CPU's with semi-shared memory– Some code exists from last year

Page 25: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

25

Other Projects

● Click “modular router” project– Target: Soekris tiny router box (start: simics)– Goal: point-and-click DSL link scheduler

● [insert your project here]● Clean-room RFC 6090 (elliptic curve crypto)● Linux – kernelnewbies.org● FreeBSD – freebsd.org● NetBSD – you get the idea● “Finish” Plan 9 port on PPC iMac

Page 26: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

26

“Dave's Top Picks”

● Plan 9 on MIPS (laptop eventually)● Plan 9 on PS3● Plan 9 WebISO or X.509 file system● Plan 9 UDF/X.509/OpenPGP file systems● Darwin OpenAFS cache manager● Plan 9 user-space USB driver (TEW-429UB)● FreeBSD S4OS

Page 27: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

27

Next Steps

● Read the Amoeba/Sprite paper for Friday● Please add “candidate projects” page to wiki● 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

Page 28: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

28

Extend P9 iMac kernel

● Status– Ajay, Adam, Ian got a kernel running– Device drivers (character-mode screen, keyboard)

pass through to OpenFirmware drivers

● Moving forward– OF Ethernet driver (should be 2-3 days)

– Investigate OF graphics, mouse● Possible goal: slow but portable port

– Cutting the OF cord (PCI, interrupt controller)

Page 29: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

29

Extend P9 iMac kernel

● Good news– Code is locally understood

● Bad news– In theory, PowerPC Macs are an orphaned

platform

Page 30: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

30

Plan 9 “Kernel” Projects

● AC’97 Audio support– AC’97 is a multi-vendor hardware standard– Mature, well-documented– Handles sound and “win” modems (same thing)

● Plan 9 audio support– Code for ancient ISA Sound Blaster– Support for some USB audio devices– Jukebox user code

Page 31: 412 Project Suggestions (Overview)412-f11/lectures/L02_Projects.pdf · 3 Disclaimer Most entries on my list are Plan 9 projects You don't have to do a Plan 9 project Going over the

31

Nokia 770 / N800

● The device– Size of a paper-back book– ARM, RAM, Flash, 802.11, touch screen– Running Linux (e.g., some documentation)

● Plan 9 runs on (old) Compaq iPaq, also ARM– I can borrow some from Satya