DarwinCoda

Coda for Darwin and Mac OS X

Welcome to the DarwinCoda project

What's DarwinCoda ?

The DarwinCoda project aims to provide the missing bits and pieces for the Coda File system, that is, the missing bits and pieces for Darwin and MacOS X. The most important piece is the kernel extension needed to be able to use Coda.

What's Coda ?

The Coda file system is a Reserarch project at the Carnegie-Mellon University. Most of the development of Coda happens there. You should have a look into their website to get more than a hunch what this is all about. What use to be the most interesting thing with Coda is its ability to act like a decent distributed file system even when you are not connected to any networks, something that comes in handy for all those iBooks and PowerBooks.

Disclaimer

As said in the previous paragraph, Coda is a Research Project. This means that anything can happen. This goes for the DarwinCoda project as well. It you use the code found within this project, yo do it at your own risk. Since there is kernel code involved, any damages can occur, including data loss and even permanent equipment damage. You have been warned! None of the project members will assume any liability for anything that might happen due to usage of this software.

License

All software within the DarwinCoda project is available according to the BSD license and/or the ASPL license. You are bound to accept the terms of usage of these licenses. The Coda proper code, which is maintained by CMU is available according to the GPL license.

Project mailing lists

The darwincoda mailing list is where most discussions are held. Only list subscribers may post to the list, but anyone is welcome to subscribe. Those wishing to see the cvs commit logs which detail the change-by-change progress of the project can also subscribe to the cvs-darwincoda-all mailing list.

Getting the code from CVS

There are two branches on the CVS server, the trunk and the Research branch. Currently, the Research branch is in a much better state of health than the main trunk. However, the code in the Research branch contains lots of largely unnnecessary debugging hooks and other checks. If you wish to see the main trunk code, omit the -r Research argument in the commands below.

Use the following commands to get DarwinCoda from the OpenDarwin CVS server

cvs -d :pserver:[email protected]:/Volumes/src/cvs/od login
cvs -d :pserver:[email protected]:/Volumes/src/cvs/od co -r Research proj/DarwinCoda

Just hit return when the server asks you for a password. The CVS repository can be browsed through CVSweb.

Current status of the kernel extension

As of 2004-12-03, the Research kernel extension is capable of handling the following operations

Known bugs:

Ideas for related projects:

Building the Coda kernel extension

The current version requires you to use Apple's xcode application to build the kernel extension. If you don't have it on your machine, you must first install Apple's developer tools.

To build the stuff, type make install.

Loading the Coda kernel extension

The procedure for loading the kernel extension is not a one-liner. I'm using the following shell script. It must be run as root.. The script has the side effect of producing a symbol table for debugging in /var/tmp/ksyms, which comes in handy for debugging if you should encounter any kernel panic.

#!/bin/sh
KEXT=darwin_coda.kext
(cd /tmp; kextunload $KEXT)
rm -rf /tmp/$KEXT
cp -R ${HOME}/$KEXT /tmp
chown -R root /tmp/$KEXT
chgrp -R wheel /tmp/$KEXT

(cd /tmp; kextload -v $KEXT)
mkdir -p /var/tmp/ksyms
(cd /tmp; kextload -n -A -s /var/tmp/ksyms $KEXT)

sync
sync

Getting started

These instructions apply to darwin-7.3 (MacOS X Panther). You may have to fix bits and pieces on other platforms:

As for darwin 8.6 (MacOS X Tiger) A yet untested version is found in the darwin-8.6 directory. It compiles, links and loads but that's the only thing I know about it right now, except that the port between darwin7 and darwin8 was quite some work to do.

Starting Coda requires a few steps.see this document for the details.

  1. Fetching, building and installing ncurses and readline GNU libraries
  2. Fetching, building and installing the lwp, rvm and rpc2 libraries from CMU
  3. Fetching, building and installing coda itself from CMU
  4. Configure Coda
  5. Build and load the kernel extension
  6. Start Coda venus
  7. Test
  8. Report back things that does not work

Handling system updates

At times, Apple updates MacOS, this usually also updates Darwin. You will have to edit the Info.plist and bump the com.apple.kernel value.

Developers

For the moment, which I hope won't last for too long, I'm alone in this project. If you wish to help, drop me a mail