[an error occurred while processing this directive]

(Illustration by Gaich Muramatsu)

Coda File System

Home Downloads
(インフォサイエンス)
Bugs Documentation
News Mailing lists FAQ Research
 
---------

Next Previous Contents


6. Coda の使用に関するカーネルの設定

現在、Coda のクライアントとサーバは Linux、FreeBSD、NetBSD でサポートされています。

Coda サーバは修正のないカーネルで走ります。Coda codasrv プロセスは既にあるカーネルサービスを使ったユーザレベルのコードです。 しかし、Venus クライアントはカーネルに対して Coda 特有の変更を必要とします。カーネルでの変更は、カーネルの Vnode 層に Coda 固有の定義を 追加することです。カーネルの vfs 層に対して、Coda ファイルシステムの要求を満たす必要があるからです。

6.1 VFS インターフェース

Unix システムでは、ユーザの生成したシステム・コールをファイルシステムの要求に翻訳するコードを VFS インターフェースと呼びます。 Coda は creat(), open(), stat() 等のシステム・コールに対するサポートを提供することによって、VFS インターフェースを提供します。

Venus とカーネルの間のコミュニケーションはキャラクタ・デバイス /dev/cfs0 (Coda の部分) を通じて生じます。 /dev/cfs0 はカーネルが vsf<->vnode カーネル・インターフェースを扱うために Venus にアクセスできるようにします。 サポートしているプラットフォームに対するデバイス・ナンバーについては Coda クライアントのインストールと設定を見てください。

この章では、サポートしているプラットフォームのカーネルで Vnode インターフェースを満たす Coda のコードに焦点を当てます。

6.2 Linux カーネルの設定

Coda は``monolithic''カーネルでモジュール、あるいはハード・コード化されたものとして設定されます。 カーネル・モジュールを構築するための合理的で柔軟性のある方法があります。 構築時に走らないカーネルのモジュールを構築することができます。

カスタムの coda カーネル・モジュールを構築するには、tar ファイルを入手する必要があります:

ftp://ftp.coda.cs.cmu.edu/pub/coda/linux/src/linux-coda-4.6.2.tgz

以下は構築手順です。

注: ここでのコードは、同じものか、それより新しいものです:

2.1 カーネル・モジュールの構築

2.0 カーネル・モジュールの構築

6.3 FreeBSD カーネルの設定

現在、Coda は 2.2.x-STABLE のカーネルで動いています。 Coda でロードできるモジュールはないので、Venus のサポートはカーネルにコンパイルされます。 Coda の開発グループは Coda の Venus をサポートした、構築済みの GENERIC FreeBSD を配布しています。 GENERIC FreeBSD カーネルと GENERIC Coda カーネルの違いは、Coda ファイルシステムの追加と、カーネルデバッガを有効に したことだけです。

自分でカーネルをコンパイルしたい人は:

ftp://ftp.coda.cs.cmu.edu/pub/coda/freebsd/<OS-VERSION>/i386/">

Coda カーネルパッチの入手:

kernel-patch.cfs-4.4.1.gz.

2.2.6 以前のリリースにパッチを充てるなら:

kernel-patch.FreeBSD-4.4.0-2.2.5.gz.

FreeBSD 2.x のカーネルソースを入手して、kernel-patch.cfs-4.4.1.gz カーネルパッチを充てます。 カーネルソースは /home/me/mysrc/sys にあって、パッチファイル kernel-patch.cfs-4.4.1.gzkernel-patch.FreeBSD-4.4.0-2.2.5.gz/home/me/mysrc にあるとします。 /home/me/mysrc に移動して、Coda のパッチを展開します:

zcat kernel-patch.cfs-4.4.1.gz | patch -p4

-p4 が必須です。FreeBSD Release 2.2.5 かそれ以前にパッチを充てるなら、Coda に"glue"コードを展開する必要があります:

zcat kernel-patch.FreeBSD-4.4.0-2.2.5.gz | patch -p6

この時点で、最も簡単な方法は GENERIC カーネルの設定をコピーして、Coda をインクルードするように修正することです:

        cd .../conf
        cp GENERIC Coda

Coda の設定に追加されるべき二つの行は、以下のような感じです:

options               CFS     #Coda File System
pseudo-device vcfs    4       # coda minicache <-> venus comm.

この行についての最新版については設定ディレクトリにある LINT ファイルを見て、Coda の設定にコピーしてください。 Coda の設定で ddb を可能にする LINT からの行もコピーします。

そして Coda を設定して、それを構築します。

        config Coda
        make

最後に、root になってこの新しいカーネルをインストールします:

        make install

エピローグ

もし上記の Generic Coda カーネルを探しているなら、Coda サイトにある FreeBSD エリアにあるでしょう。 kernel.gz という名前です。

(上記の)Coda パッチを充てたくなくて、FreeBSD release 2.2.6 かそれ以降なら、単に Coda のソースツリーから cfs/ ディレクトリを /home/me/mysrc/sys にコピーするのが簡単です。

cd <coda sources-coda_release>/kernel-src/vfs/bsd44/
cp -rp cfs /home/me/mysrc/sys

Coda マニュアルに載っていない小さな変更があるかもしれないので、 Coda FreeBSD の ftp エリアで INSTALLREADME を確認するのを忘れないでください。 また、カーネルの修正が必要なのは Coda のクライアント側であって、サーバ側ではないことを忘れないでください。

6.4 NetBSD カーネルの設定

現在のところ、Coda は 1.3/1.3.x カーネルでだけ動きます。Coda にロードできるモジュールはないので、 Venus はコンパイルされたカーネルをサポートしています。Coda 開発グループは Coda の Venus をサポートしている 構築済みの GENERIC NetBSD カーネルをリリースしています。GENERIC NetBSD のカーネルと Coda のカーネルの違いは Coda のファイルシステムの追加だけです。

自分でカーネルをコンパイルしたい人は:

ftp://ftp.coda.cs.cmu.edu/pub/coda/NetBSD/<OS-VERSION>/i386/">

Coda のカーネルパッチを入手:

kernel-patch.cfs-4.4.0.gz
kernel-patch.NetBSD-4.4.0-<OS-VERSION>.gz

NetBSD 1.3/1.32 のカーネルソースを入手して、coda パッチを充てます。 カーネルソースが /home/me/mysrc/sys にあって、パッチファイル kernel-patch.cfs-4.4.0.gzkernel-patch.NetBSD-4.4.0-<OS-VERSION>.gz/home/me/mysrc にあるとします。/home/me/mysrc に移動して、Coda パッチを展開します:

        zcat kernel-patch.cfs-4.4.0.gz | patch -p4

-p4 が必須です。Coda に対して"glue"コードで展開する必要があります:

zcat kernel-patch.NetBSD-4.4.0-<OS-VERSION>.gz | patch -p6

この時点で最も簡単な方法は GENERIC カーネルの設定をコピーして、Coda をインクルードするように修正することです。すなわち、

cd .../conf
cp GENERIC Coda

Coda の設定で必要な二行はこんな感じです:

options               CFS     #Coda File System
pseudo-device vcfs    4       # coda minicache <-> venus comm.

これは上記のパッチによって GENERIC ファイルに追加されます。うまくいっていることを確認してください。

そして、Coda を設定して、構築します。

        config Coda
        make

最後に netbsd/ にコピーして、リブートします。

エピローグ

もし上記の Generic Coda カーネルを探しているなら、Coda サイトの NetBSD エリアで見つけることができます。 netbsd-<RELEASE>.gz という名前です。

Coda マニュアルに載っていない微細な変更があるかもしれないので、 Coda NetBSD ftp サイトで INSTALLREADME をチェックするのを忘れないでください。 また、カーネルの修正が必要なのはクライアント側であって、サーバ側ではないことを忘れないでください。


Next Previous Contents

---------
詳しくはメールで

このページの情報に関わる、ご質問、お問い合わせは、 japache@infoscience.co.jpまで。
Coda ホームページ