Currently, Coda clients and servers are supported under Linux, FreeBSD and NetBSD.
The Coda servers may be run on unmodified kernels. The Coda codasrv
process is user-level code that uses existing kernel services. The Venus
client, however, requires some Coda-specific changes be made to the kernel.
The kernel specific changes add Coda specific definitions to
the Vnode layer in the kernel which are needed to satisfy the
requirements of the Coda file system to the vfs layer in the kernel.
In Unix systems, the code which translates user-generated system calls into file system requests is called the VFS Interface. Coda provides a VFS Interface by providing the necessary support for systems calls such as creat(), open(), stat(), etc.
Communication between Venus and the kernel occurs through a character
device /dev/cfs0
(part of Coda) which provides the kernel
with access to Venus for handling the vsf<->vnode kernel
interface. Please see
Installing and Configuring a Coda Client for the major and minor device numbers
specific to a supported platform.
The rest of this chapter will focus on integrating the Coda code that satisfies the Vnode interface into the kernels of supported platforms.
Coda may be configured as a module or hard-coded in a ``monolithic'' kernel. We have a reasonably flexible method to build kernel modules. You can build the module for a kernel which you are not running at the time of the build.
To build a custom coda kernel module you need to obtain the tarball from:
ftp://ftp.coda.cs.cmu.edu/pub/coda/linux/src/linux-coda-4.6.2.tgz
And follow the instructions in the rest of this file.
NOTE: The code here is always newer than or equal to:
make oldconfig
make dep
make your-type-of-image and modules.
make config --- answer the questions
make coda.o
su
make install
cd /usr/src/linux-for-you
make oldconfig
make dep
make config --- answer the questions
make coda.o
su
make install
Currently, Coda works with the 2.2.x-STABLE kernels. Since a loadable module for Coda is not available, Venus support is compiled into the kernel. The Coda Development Group releases a pre-built GENERIC FreeBSD kernel with Coda Venus support. The only differences between the GENERIC FreeBSD kernel and the GENERIC Coda kernel is the addition of Coda Filesystem and the enabling of the kernel debugger.
For those who wish to compile their own kernel, go to:
ftp://ftp.coda.cs.cmu.edu/pub/coda/freebsd/<OS-VERSION>/i386/">
and get the Coda kernel patches:
kernel-patch.cfs-4.4.1.gz
.
If you are patching a release earlier than 2.2.6, you will also need:
kernel-patch.FreeBSD-4.4.0-2.2.5.gz
.
You should obtain the FreeBSD 2.x kernel sources and apply the
kernel-patch.cfs-4.4.1.gz
kernel patch. Suppose that the kernel source is in
/home/me/mysrc/sys
and the patch files,
kernel-patch.cfs-4.4.1.gz
and kernel-patch.FreeBSD-4.4.0-2.2.5.gz
,
are in /home/me/mysrc
. Go to /home/me/mysrc
and extract the
Coda patch by typing:
zcat kernel-patch.cfs-4.4.1.gz | patch -p4
The -p4 is really necessary. If you are patching FreeBSD Release 2.2.5 or earlier, you also need to extract the "glue" code for Coda. Type:
zcat kernel-patch.FreeBSD-4.4.0-2.2.5.gz | patch -p6
At this point, the easiest thing to do is copy the GENERIC kernel configuration and modify it to include Coda:
cd .../conf
cp GENERIC Coda
The two lines that need to be added to the Coda configuration will look something like:
options CFS #Coda File System
pseudo-device vcfs 4 # coda minicache <-> venus comm.
Look at the LINT file in the configuration directory to find the most current version of these lines and copy them into the Coda configuration. You should also copy the line from LINT that enables the ddb debugger into the Coda configuration.
Now, all that you need to do is to config
Coda and build it.
config Coda
make
Finally, you should install this new kernel by becoming root and typing:
make install
If you are looking for the above Generic Coda kernel, you can find it in the
FreeBSD area on the Coda site. It is named kernel.gz
If you do not want to apply the Coda patch (above) and you are at
FreeBSD release 2.2.6 or better, you can simply copy the cfs/
directory from the Coda source tree to /home/me/mysrc/sys
cd <coda sources-coda_release>/kernel-src/vfs/bsd44/
cp -rp cfs /home/me/mysrc/sys
Don't forget to check INSTALL
and README
in the Coda FreeBSD ftp area
for any last minute changes that may not have found their way into the Coda
manual. Also, remember you only need a modified kernel for the client
side of Coda, not the server side.
Currently, Coda only works with the 1.3/1.3.x kernels. Since a loadable module for Coda is not available, Venus support is compiled into the kernel. The Coda Development Group releases a pre-built GENERIC NetBSD kernel with Coda Venus support. The only difference between the GENERIC NetBSD kernel and the Coda kernel is the addition of Coda Filesystem.
For those who wish to compile their own kernel, go to:
ftp://ftp.coda.cs.cmu.edu/pub/coda/NetBSD/<OS-VERSION>/i386/">
and get the Coda kernel patches:
kernel-patch.cfs-4.4.0.gz
kernel-patch.NetBSD-4.4.0-<OS-VERSION>.gz
You should obtain the NetBSD 1.3/1.32 kernel sources and apply the
coda patches. Suppose that the kernel source are in
/home/me/mysrc/sys
and the patch files, kernel-patch.cfs-4.4.0.gz
and kernel-patch.NetBSD-4.4.0-<OS-VERSION>.gz
, are in
/home/me/mysrc
. Go to /home/me/mysrc
and extract the
Coda patch by typing:
zcat kernel-patch.cfs-4.4.0.gz | patch -p4
The -p4 is really necessary. You also need to extract the "glue" code for Coda. Type:
zcat kernel-patch.NetBSD-4.4.0-<OS-VERSION>.gz | patch -p6
At this point, the easiest thing to do is to copy the GENERIC kernel configuration and modify it to include Coda, i.e.
cd .../conf
cp GENERIC Coda
The two lines that are need for to the Coda configuration will look something like:
options CFS #Coda File System
pseudo-device vcfs 4 # coda minicache <-> venus comm.
These should have been added to the GENERIC file by the above patches. Please verify that they went in correctly.
Now, all that you need to do is to config
Coda and build it.
config Coda
make
Finally, copy the netbsd
to /
and reboot.
If you are looking for the above Generic Coda kernel, you can find it in the
NetBSD area on the Coda site. It is named netbsd-<RELEASE>.gz
Don't forget to check INSTALL
and README
in the
Coda NetBSD ftp site
for any last minute changes that may not have found their way into the Coda
manual. Also, remember you only need a modified kernel for the client
side of Coda, not the server side.