K42
overview
From the K42 site:
The K42 group is developing a new high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors. We are targeting next generation servers ranging from small-scale multiprocessors that we expect will become ubiquitous, to very large-scale non-symmetric multiprocessors that are becoming increasingly important in both commercial and technical environments.
More here.
patches
| patch | description | status | date |
|---|---|---|---|
| configurable-bind-mounts.patch | Add a parameter (K42_NFS_BINDINGS) to specify bindmounts. | Experimental | Thu Jan 6 09:57:41 WST 2005 |
| gcc-3.4-kfs.patch | Extend gcc 3.4 compatibility to KFS code | Committed | Fri Nov 5 12:24:05 EST 2004 |
| gcc-3.4.patch | Allow k42 to be built with gcc 3.4. | Committed | Fri Oct 8 12:49:28 CDT 2004 |
| moduleloader.patch | Add a dynamic kernel module loader, with userspace and build tools | Committed | Tue Jun 7 14:45:57 EST 2005 |
| offsetof-redefinition.patch | Temporary fix for redefinition of offsetof from gcc headers. | Temporary | Thu Aug 5 16:05:29 EST 2004 |
| pem-lib.patch | install pemGenHdrs.py without extension | Development | Thu Aug 5 16:05:29 EST 2004 |
| single-step-mode.patch | Add single-step-mode command to powerpc64-linux-gdb | External Project | Fri Aug 20 15:10:34 EST 2004 |
| syncservice.patch | Implement a fsync daemon to flush file-backed pages every 30s | Development | Wed May 18 11:59:18 EST 2005 |
| thinwire-setRTS.patch | Set RTS bit on serial line before select() | Committed | Wed Aug 18 16:53:06 EST 2004 |
| thinwire-singlespeed.patch | Don't change thinwire serial speed | Testing | Tue Feb 15 14:31:19 EST 2005 |
| tools-x86_64-compat.patch | Allow k42 to be built on an x64_86 arch | Testing | Tue Feb 1 11:12:26 EST 2005 |
Device-driven I/O
Presented at the 2006 linux.conf.au, these slides (PDF, 887kB) show some of the recent work I've been doing in conjunction with the IBM Research team.
dynamic module loading
The moduleloader isn't in CVS yet, you'll need to apply moduleloader.patch.
There's an Object.C file in the usr/moduleloader/
directory - this is a tiny sample module, and can be loaded into the k42
kernel:
cd /kbin ./ModuleLoader Object.soyou need to cd to /kbin before running the module loader - it needs
boot_image.map to be in the current directory
todo
A couple of things that need work:
- Provide a proper kernel build environment for module compilation
- Find a better way of doing symbol table lookups, especially for PPC64_REL_JMP_SLOT relocations (which dereference parts of memory)
- Put the initModule() function into a more suitable place
papers
Andrew Baumann has been driving the research on dynamic update, and has presented the folowing papers:
gcc 3.4 compatibilty
Almost all of the 3.4-related problems have been fixed in gcc-3.4.patch (which has been comitted to CVS), but there are still a few issues:
- offsetof-redefinition.patch needs to be applied to build.
- The runSDET scrips needs to be altered to use the new
libstdc++.so.6
The newer gcc-3.4-kfs.patch adds gcc-3.4 support to KFS code
resolving k42 problems
I've started to put together some documentation about problems Chris or I have had with building, running and testing K42. You can find it here.
toolchain
I've been building k42 cross-toolchains using the buildtoolchain scripts. However, something using the crosstool system would be much better. More to come...