TOMOYO Linuxカーネルの作成手順

Last modified: $Date: 2006-11-25 10:18:46 +0900 (Sat, 25 Nov 2006) $

TOMOYO Linux では、いくつかのコンパイル済みのカーネルをパッケージにして提供していますが、アーキテクチャが異なる場合やカスタマイズしたい場合には、カーネルをコンパイルする必要があります。カーネルをコンパイルするためには、以下のパッケージが必要です。

TOMOYO Linux は、必要な機能だけを組み込めるようになっています。 menuconfig の中から、「File systems」を選択して、一番下までスクロールすると以下の項目が表示されます。

以下の機能説明を参照しながら、利用したい機能を選択してください。

ファイルに対する読み書き実行を制限する機能

プログラムがアクセスできるファイルやディレクトリ等のパス名を「操作対象」単位で制御することができます。

権限の粒度は以下のようになっています。

権限許可されるアクセス
1プログラムを実行する
2ファイルを書き込みモードで開く
3ファイルを書き込みモードで開く/プログラムを実行する
4ファイルを読み込みモードで開く
5ファイルを読み込みモードで開く/プログラムを実行する
6ファイルを読み書きモードで開く
7ファイルを読み書きモードで開く/プログラムを実行する
allow_createファイルの新規作成
allow_unlinkファイルの削除
allow_mkdirディレクトリの作成
allow_rmdirディレクトリの削除
allow_mkfifoFIFO の作成
allow_mksockUNIX ドメインソケットの作成
allow_mkblockブロック型デバイスファイルの作成
allow_mkcharキャラクタ型デバイスファイルの作成
allow_truncateファイルの切り詰めと伸長
allow_symlinkシンボリックリンクの作成
allow_linkハードリンクの作成
allow_renameファイル名の変更

この機能を利用するには、以下の項目を選択してください。

  • [*] TOMOYO (Domain-Based Mandatory Access Control) support
  • [*]   File Access Control support

なお、この機能は TOMOYO Linux のドメイン遷移を制限するために必須の機能です。この機能を利用しない場合にはドメイン遷移を制限できないので「TOMOYO (Domain-Based Mandatory Access Control) support」が正しく機能しません。

ケイパビリティの利用を制限する機能

プログラムが行うことができる操作内容を「操作種別」単位で制御することができます。

標準の Linux で使用されているケイパビリティは POSIX ケイパビリティと呼ばれるものです。最大で32種類の権限までしか定義できないという制約があるため、特定の権限(特に CAP_SYS_ADMIN 権限)が様々な用途に利用されてしまい、詳細な権限分割を行えないという問題点を抱えています。そのため、 TOMOYO Linux では、 POSIX ケイパビリティには手を加えずに、 TOMOYO Linux 独自の基準で定義したケイパビリティを使用しています。

ケイパビリティの粒度は以下のようになっています。

ケイパビリティ許可される操作内容
inet_tcp_createTCP ソケットの使用
inet_tcp_listenTCP ソケットの listen
inet_tcp_connectTCP ソケットの connect
use_inet_udpUDP ソケットの使用
use_inet_ipRAW ソケットの使用
use_routeROUTE ソケットの使用
use_packetPACKET ソケットの使用
use_kernel_moduleカーネルモジュールの使用
create_fifoFIFO の作成
create_block_devブロック型デバイスの作成
create_char_devキャラクタ型デバイスの作成
create_unix_socketUNIX ドメインソケットの作成
SYS_MOUNTファイルシステムのマウント
SYS_UMOUNTファイルシステムのアンマウント
SYS_REBOOTシステムの再起動
SYS_CHROOTルートディレクトリの変更
SYS_KILLシグナルの送信
SYS_VHANGUPvhangup の使用
SYS_TIMEシステム時刻の変更
SYS_NICEプロセスの優先度の変更
SYS_SETHOSTNAMEホスト名・ドメイン名の変更
SYS_LINKハードリンクの作成
SYS_SYMLINKシンボリックリンクの作成
SYS_RENAMEファイル名の変更
SYS_UNLINKファイルの削除
SYS_CHMODファイルのパーミッションの変更
SYS_CHOWNファイルの所有者・グループの変更
SYS_IOCTLioctl の使用
SYS_KEXEC_LOAD新しいカーネルのロード

この機能を利用するには、以下の項目を選択してください。

  • [*] TOMOYO (Domain-Based Mandatory Access Control) support
  • [*]   Capability Control support

TCP/IP ネットワークの利用を制限する機能

プログラムが使用できるアドレスとポートを制限することができます。

例えば、 DNS サーバの IP アドレスとポート 53 への UDP 通信だけを許可したい場合や、 SSH サーバが接続を受け付けるクライアントの IP アドレスの範囲を制限したいときに使用します。

この機能を利用するには、以下の項目を選択してください。

  • [*] TOMOYO (Domain-Based Mandatory Access Control) support
  • [*]   Network Address Port Control support

TCP/IP ネットワークのポートの利用を制限する機能

プログラムが使用できるポートを制限することができます。

例えば、 WWW サーバに対して TCP の 80 番ポートと TCP の 443 番ポートでの待機だけを許可したいときや、 WWW クライアントに対して TCP の 80 番ポートと TCP の 443 番ポートへの接続だけを許可したいときに使用します。

この機能を利用するには、以下の項目を選択してください。この機能の全部は Network Address Port Control support に含まれているので、 Network Address Port Control support を使用する場合には不要です。

  • [*] TOMOYO (Domain-Based Mandatory Access Control) support
  • [*]   Network Port Control support

シグナルの種類と送信先の組み合わせを制限する機能

プログラムが使用できるシグナルの種類と送信先を制限することができます。

この機能は、攻撃者が任意のプロセスに対してシグナルを送ることで任意のサービスを強制終了させてしまうのを防ぎたいときに使用します。

この機能を利用するには、以下の項目を選択してください。

  • [*] TOMOYO (Domain-Based Mandatory Access Control) support
  • [*]   Signal Control support

シグナルの種類と送信先の組み合わせを制限する機能

プログラムが使用できるシグナルの種類と送信先を制限することができます。

この機能は、攻撃者が任意のプロセスに対してシグナルを送ることで任意のサービスを強制終了させてしまうのを防ぎたいときに使用します。

この機能を利用するには、以下の項目を選択してください。

  • [*] TOMOYO (Domain-Based Mandatory Access Control) support
  • [*]   Signal Control support

プログラム実行時に渡される名前を制限する機能

プログラム実行時に渡される名前を制限することができます。

プログラムを実行するときには、プログラム名とそのプログラムへの引数が argv[] という文字列型配列で渡されます。最初の要素である argv[0] にはプログラム名が入っています。
一部のプログラムは、 argv[0] の内容に基づいて振る舞いを変化させます。そのようなプログラムでは、ドメイン遷移がプログラムファイルのパス名に基づいて行われるのに対し、実際の振る舞いは argv[0] の内容に基づいて決定されます。
そのため、攻撃者はファイルのパス名と argv[0] の内容を故意に異なるものにすることで、想定外の動作を行わせることができてしまいます。この機能を利用すると、ファイルのパス名と argv[0] の内容が異なる場合に、ポリシーで許可された組み合わせの場合のみ実行を許可することができます。

この機能を利用するには、以下の項目を選択してください。

  • [*] TOMOYO (Domain-Based Mandatory Access Control) support
  • [*]   argv[0] checker support

マウント可能な「デバイスファイルとマウントポイントとファイルシステム」の組み合わせの制限および「特定のマウントオプション」を強制的に適用する機能

Linux では、システム管理者権限があれば任意のディレクトリに任意のファイルシステムをマウントすることが可能です。つまり、システム管理者権限で動作しているプロセスの制御を奪われた場合、 /bin/ ディレクトリの上に tmpfs を被せて悪意あるプログラムに置き換えられたり、 /var/www/ ディレクトリの上に tmpfs を被せて WWW コンテンツを隠蔽されたりすることがあるわけです。

ケイパビリティを使えばマウント操作を行えるドメインを制限することができますが、権限が与えられさえすれば任意のマウント操作ができてしまい、望ましくありません。

この機能を利用すると、マウントを許可する組合せを制限することができます。

また、この機能には、特定のマウントオプションの適用を強制する機能も含まれています。 例えば、「 /tmp/ パーティションではデバイスファイルにアクセスさせないために nodev オプションを強制したい」という場合に利用すると、利用者が dev オプションを指定しても nodev オプションが適用された状態でマウントされます。

この機能を利用するには、以下の項目を選択してください。

  • [*] SAKURA (Domain-Free Mandatory Access Control) support
  • [*]   mount() restriction support

特定のマウントポイントのアンマウントを禁止する機能

Linux では、システム管理者権限があれば任意のマウントポイントをアンマウントすることが可能です。つまり、システム管理者権限で動作しているプロセスの制御を奪われた場合、 /proc/ ディレクトリにマウントされている proc ファイルシステムをアンマウントすることでアプリケーションの動作を狂わせたりすることがあるわけです。

ケイパビリティを使えばアンマウント操作を行えるドメインを制限することができますが、権限が与えられさえすれば任意のアンマウント操作ができてしまい、望ましくありません。

この機能を利用すると、特定のマウントポイントがアンマウントされることを禁止することができます。

この機能を利用するには、以下の項目を選択してください。

  • [*] SAKURA (Domain-Free Mandatory Access Control) support
  • [*]   umount() restriction support

マウント済みのマウントポイントを隠蔽するようなマウント要求を拒否する機能

Linux では、システム管理者権限があれば既にマウントされているマウントポイントの上に他のパーティションを重ねてマウントすることが可能です。つまり、システム管理者権限で動作しているプロセスの制御を奪われた場合、既にマウントされている /var/ パーティションの上に tmpfs をマウントすることでアプリケーションの動作を狂わせたりすることがあるわけです。

ケイパビリティを使えばマウント操作を行えるドメインを制限することができますが、権限が与えられさえすれば任意のマウント操作ができてしまい、望ましくありません。

この機能を利用すると、マウント済みのマウントポイントを隠蔽するようなマウント要求を拒否することができます。

この機能を利用するには、以下の項目を選択してください。

  • [*] SAKURA (Domain-Free Mandatory Access Control) support
  • [*]   Conceal mount disabler support

chroot で移動可能なディレクトリを制限する機能

Linux では、システム管理者権限があれば任意のディレクトリに chroot で移動することが可能です。つまり、システム管理者権限で動作しているプロセスの制御を奪われた場合、意味のないディレクトリへ chroot で移動することでアプリケーションの動作を妨害されてしまうことがあるわけです。

ケイパビリティを使えば chroot を行えるドメインを制限することができますが、権限が与えられさえすれば任意のディレクトリへ chroot ができてしまい、望ましくありません。

この機能を利用すると、 chroot で移動することを許可するディレクトリを制限することができます。

この機能を利用するには、以下の項目を選択してください。

  • [*] SAKURA (Domain-Free Mandatory Access Control) support
  • [*]   chroot() restriction support

pivot_root の利用を禁止する機能

chroot は / ディレクトリを移動するのに対し、 pivot_root は / ディレクトリを交換します。システムの起動時に1度だけ使われる場合が多いですが、システムの起動後は通常は使われない機能です。

この機能を利用すると、システムの起動後に pivot_root を使用することを禁止することができます。

この機能を利用するには、以下の項目を選択してください。

  • [*] SAKURA (Domain-Free Mandatory Access Control) support
  • [*]   pivot_root() disabler support

TCP/IP ネットワークで自動的に割り当てられるローカルポートを制限する機能

Linux では、ポート番号として 0 を指定して bind() を呼び出した場合や、 bind() を呼び出さずに connect() を呼び出した場合などに、 /proc/sys/net/ipv4/ip_local_port_range というファイルで指定されている範囲の中から未使用のローカルポート番号が自動的に割り当てられます。しかし、このファイルで指定可能な値は最小値と最大値のみであり、特定のポート番号を除外する機能はありません。

例えば、ポート 8080 をプロキシサーバ用に予約しておきたい場合でも、このファイルに 1024 65535 という値が書き込まれているとポート 8080 が自動割り当てによって他のアプリケーションに割り当てられてしまい、プロキシサーバを起動しようとしたらポートが既に使用中であるために起動できないという場合が生じてしまいます。また、クライアントがサーバのポート 8080 に接続してみたら、プロキシサーバ以外のアプリケーションに繋がってしまったという場合も生じてしまいます。

この機能を利用すると、特定のポート番号を自動割り当ての対象から除外(つまり /proc/sys/net/ipv4/ip_local_port_range に複数の範囲を指定できるようにするのと同じ機能を提供)することができます。

この機能を利用するには、以下の項目を選択してください。

  • [*] SAKURA (Domain-Free Mandatory Access Control) support
  • [*]   Autobind restriction support

デバイスファイルの改ざんを防止できる /dev ディレクトリ用のファイルシステム

/dev ディレクトリには多数のデバイスファイルが存在しています。そして、デバイスファイルが常に正しいデバイスと繋がっていることは、セキュリティ上、不可欠です。 例えば、 /dev/null がメジャー番号 1 マイナー番号 3 のキャラクタ型デバイスとしてではなく、メジャー番号 8 マイナー番号 0 のブロック型デバイス( /dev/sda )として存在していた場合、たちまち SCSI ハードディスクの内容が破壊されてしまいます。また、 /dev/null が通常ファイルとして存在していた場合、情報漏えいに繋がる可能性があります。

そこで、デバイスファイルの名前とその属性との対応を強制することができる SYAORAN ファイルシステムを /dev ディレクトリにマウントすることにより、例えば、 /dev/null は常にメジャー番号 1 マイナー番号 3 のキャラクタ型デバイスであることを保証することができます。

この機能を利用するには、以下の項目を選択してください。

  • <m> SYAORAN (Tamper-Proof Device Filesystem) support

udev を使用するディストリビューションの場合、 udev が自動的に /dev ディレクトリに tmpfs をマウントしてしまうため、 SYAORAN ファイルシステムが隠蔽されてしまいます。これを防ぐために、 udev を使用するディストリビューションで使用する場合は、以下の項目も選択してください。

  • [*] SAKURA (Domain-Free Mandatory Access Control) support
  • [*]   Conceal mount disabler support

カーネル 2.6 には、 CONFIG_DEBUG_INFO という名前のコンパイルオプションが存在します。このオプションが有効である場合、コンパイルされたコードのサイズが約10倍の大きさになります。このオプションを有効にすると、 /usr/src/ ディレクトリで約1GB、 /lib/modules/ ディレクトリで約300MBの余分なディスク領域を消費します。
ディスク領域を節約したい場合、以下のオプションを無効にしてください。

Kernel hacking --->[ ]   Compile the kernel with debug info

以下の一覧から、該当するバージョンを選択してください。


RedHat Linux 9 用のカーネル 2.4.20-46.9.legacy

# カーネルのソースをダウンロードしてインストールする。
wget http://download.fedoralegacy.org/redhat/9/updates/i386/kernel-source-2.4.20-46.9.legacy.i386.rpm
rpm -ivh kernel-source-2.4.20-46.9.legacy.i386.rpm
# ソースのディレクトリへ移動する。
cd /usr/src/linux-2.4.20-46.9.legacy/
# TOMOYO Linux パッチをダウンロードして適用する。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
tar -zxf ccs-patch-1.2-20061001.tar.gz
patch -sp1 < ccs-patch-2.4.20-46.9.legacy.txt
# カーネルコンフィグ以外の一時ファイルを削除する。
mv .config config
make -s distclean
mv config .config
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s dep modules modules_install install

Fedora Core 3 用のカーネル 2.6.12-2.3.legacy_FC3

# カーネルのソースをダウンロードしてインストールする。
wget http://download.fedoralegacy.org/fedora/3/updates/SRPMS/kernel-2.6.12-2.3.legacy_FC3.src.rpm
rpm -ivh kernel-2.6.12-2.3.legacy_FC3.src.rpm
# コンパイルの準備をする。
rpmbuild -bp --target i586 /usr/src/redhat/SPECS/kernel-2.6.spec
mv /usr/src/redhat/BUILD/kernel-2.6.12/linux-2.6.12/ /usr/src/linux-2.6.12-2.3.legacy_FC3
# ソースのディレクトリへ移動する。
cd /usr/src/linux-2.6.12-2.3.legacy_FC3/
# バージョン番号を修正する。
sed -i 's/EXTRAVERSION = -prep/EXTRAVERSION = -2.3.legacy_FC3/' Makefile
# TOMOYO Linux パッチをダウンロードして適用する。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
tar -zxf ccs-patch-1.2-20061001.tar.gz
patch -sp1 < ccs-patch-2.6.12-2.3.legacy_FC3.txt
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s modules modules_install install

Fedora Core 4 用のカーネル 2.6.17-1.2142_FC4

# カーネルのソースをダウンロードしてインストールする。
wget http://download.fedora.redhat.com/pub/fedora/linux/core/updates/4/SRPMS/kernel-2.6.17-1.2142_FC4.src.rpm
rpm -ivh kernel-2.6.17-1.2142_FC4.src.rpm
# コンパイルの準備をする。
rpmbuild -bp --target i586 /usr/src/redhat/SPECS/kernel-2.6.spec
mv /usr/src/redhat/BUILD/kernel-2.6.17/linux-2.6.17/ /usr/src/linux-2.6.17-1.2142_FC4
# ソースのディレクトリへ移動する。
cd /usr/src/linux-2.6.17-1.2142_FC4/
# バージョン番号を修正する。
sed -i 's/EXTRAVERSION = -prep/EXTRAVERSION = -1.2142_FC4/' Makefile
# TOMOYO Linux パッチをダウンロードして適用する。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
tar -zxf ccs-patch-1.2-20061001.tar.gz
patch -sp1 < ccs-patch-2.6.17-1.2142_FC4.txt
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s
make -s modules modules_install install

Fedora Core 5 用のカーネル 2.6.18-1.2200.fc5

# カーネルのソースをダウンロードしてインストールする。
wget http://download.fedora.redhat.com/pub/fedora/linux/core/updates/5/SRPMS/kernel-2.6.18-1.2200.fc5.src.rpm
rpm -ivh kernel-2.6.18-1.2200.fc5.src.rpm
# コンパイルの準備をする。
rpmbuild -bp --target i586 /usr/src/redhat/SPECS/kernel-2.6.spec
mv /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i586/ /usr/src/linux-2.6.18-1.2200.fc5
# ソースのディレクトリへ移動する。
cd /usr/src/linux-2.6.18-1.2200.fc5/
# バージョン番号を修正する。
sed -i 's/EXTRAVERSION = -prep/EXTRAVERSION = -1.2187.fc5/' Makefile
# TOMOYO Linux パッチをダウンロードして適用する。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
tar -zxf ccs-patch-1.2-20061001.tar.gz
wget -O ccs-patch-2.6.18-1.2200.fc5.txt 'http://sourceforge.jp/tracker/download.php?group_id=1973&atid=7342&file_id=1589&aid=9157'
patch -sp1 < ccs-patch-2.6.18-1.2200.fc5.txt
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s
make -s modules modules_install install

Fedora Core 6 用のカーネル 2.6.18-1.2798.fc6

# カーネルのソースをダウンロードしてインストールする。
wget http://download.fedora.redhat.com/pub/fedora/linux/core/6/source/SRPMS/kernel-2.6.18-1.2798.fc6.src.rpm
rpm -ivh kernel-2.6.18-1.2798.fc6.src.rpm
# コンパイルの準備をする。
rpmbuild -bp --target i586 /usr/src/redhat/SPECS/kernel-2.6.spec
mv /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i586/ /usr/src/linux-2.6.18-1.2798.fc6
# ソースのディレクトリへ移動する。
cd /usr/src/linux-2.6.18-1.2798.fc6/
# バージョン番号を修正する。
sed -i 's/EXTRAVERSION = -prep/EXTRAVERSION = -1.2798.fc6/' Makefile
# TOMOYO Linux パッチをダウンロードして適用する。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
tar -zxf ccs-patch-1.2-20061001.tar.gz
wget -O ccs-patch-2.6.18-1.2798.fc6.txt 'http://sourceforge.jp/tracker/download.php?group_id=1973&atid=7342&file_id=1592&aid=9157'
patch -sp1 < ccs-patch-2.6.18-1.2798.fc6.txt
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s
make -s modules modules_install install

CentOS 4.4 用のカーネル 2.6.9-42.0.3.EL

# カーネルのソースをダウンロードしてインストールする。
wget http://mirrors.kernel.org/centos/4.4/updates/SRPMS/kernel-2.6.9-42.0.3.EL.src.rpm
rpm -ivh kernel-2.6.9-42.0.3.EL.src.rpm
# コンパイルの準備をする。
rpmbuild -bp --target i586 /usr/src/redhat/SPECS/kernel-2.6.spec
mv /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/ /usr/src/linux-2.6.9-42.0.3.EL
# ソースのディレクトリへ移動する。
cd /usr/src/linux-2.6.9-42.0.3.EL/
# バージョン番号を修正する。
sed -i 's/EXTRAVERSION = -prep/EXTRAVERSION = -42.0.3.EL/' Makefile
# TOMOYO Linux パッチをダウンロードして適用する。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
tar -zxf ccs-patch-1.2-20061001.tar.gz
wget -O ccs-patch-2.6.9-42.0.3.EL.txt 'http://sourceforge.jp/tracker/download.php?group_id=1973&atid=7342&file_id=1579&aid=9157'
patch -sp1 < ccs-patch-2.6.9-42.0.3.EL.txt
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s
make -s modules modules_install install

Debian Sarge 用のカーネル 2.4.27-10sarge4

# カーネルのソースをダウンロードしてインストールする。
apt-get install kernel-source-2.4.27
tar -jxf /usr/src/kernel-source-2.4.27.tar.bz2
# ソースのディレクトリへ移動する。
cd kernel-source-2.4.27/
# TOMOYO Linux パッチをダウンロードして適用する。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
tar -zxf ccs-patch-1.2-20061001.tar.gz
patch -sp1 < ccs-patch-2.4.27-10sarge4.txt
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s dep install modules modules_install
# initrd を作成する。
mkinitrd -o /boot/initrd.img-2.4.27-10sarge4-ccs 2.4.27-10sarge4-ccs

Debian Sarge 用のカーネル 2.6.8-16sarge5

# カーネルのソースをダウンロードしてインストールする。
apt-get install kernel-source-2.6.8
tar -jxf /usr/src/kernel-source-2.6.8.tar.bz2
# ソースのディレクトリへ移動する。
cd kernel-source-2.6.8/
# TOMOYO Linux パッチをダウンロードして適用する。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
tar -zxf ccs-patch-1.2-20061001.tar.gz
patch -sp1 < ccs-patch-2.6.8-16sarge5.txt
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s
make -s install modules modules_install
# initrd を作成する。
mkinitrd -o /boot/initrd.img-2.6.8-16sarge5-ccs 2.6.8-16sarge5-ccs

OpenSUSE 10.1 用のカーネル 2.6.16.21-0.25

# カーネルのソースをダウンロードしてインストールする。
curl -o kernel-source-2.6.16.21-0.25.i586.rpm http://ftp.novell.co.jp/pub/suse/suse/update/10.1/rpm/i586/kernel-source-2.6.16.21-0.25.i586.rpm
rpm -ivh kernel-source-2.6.16.21-0.25.i586.rpm
# ソースのディレクトリへ移動する。
cd /usr/src/linux-2.6.16.21-0.25/
# TOMOYO Linux パッチをダウンロードして適用する。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
tar -zxf ccs-patch-1.2-20061001.tar.gz
patch -sp1 < ccs-patch-2.6.16.21-0.25_SUSE.txt
# 出力先のディレクトリへ移動する。
cd /usr/src/linux-2.6.16.21-0.25-obj/i386/default/
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s
make -s modules modules_install install

Debian Etch 用のカーネル 2.6.17-9

# カーネルのソースをダウンロードしてインストールする。
apt-get install linux-source-2.6.17
tar -jxf /usr/src/linux-source-2.6.17.tar.bz2
# ソースのディレクトリへ移動する。
cd linux-source-2.6.17/
# TOMOYO Linux パッチをダウンロードして適用する。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
tar -zxf ccs-patch-1.2-20061001.tar.gz
patch -sp1 < ccs-patch-2.6.17-9etch.txt
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s
make -s install modules modules_install
# initrd を作成する。
mkinitrd -o /boot/initrd.img-2.6.17-ccs 2.6.17-ccs

バニラ 2.6 カーネル

2.6.11 以降に対応しています。以下の手順では 2.6.18 を使用するものとします。

# カーネルモジュールをインストールするディレクトリを作成する。
mkdir -p /lib/modules/2.6.18-ccs
# ソースディレクトリへ移動する。
cd /usr/src/
# カーネルのソースをダウンロードする。
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
# 展開する。
tar -jxf linux-2.6.18.tar.bz2
# 展開されたソースのディレクトリへ移動する。
cd linux-2.6.18
# ソースから world writable 属性を取り除く。
find -print0 | xargs -0 chmod go-w --
# TOMOYO Linux カーネルパッチをダウンロードする。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
# 展開する。
tar -zxf ccs-patch-1.2-20061001.tar.gz
# カーネルパッチを適用する。
patch -sp1 < ccs-patch-2.6.18.txt
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s
make -s install modules modules_install

バニラ 2.4 カーネル

2.4.30 以降に対応しています。以下の手順では 2.4.33 を使用するものとします。

# カーネルモジュールをインストールするディレクトリを作成する。
mkdir -p /lib/modules/2.4.33-ccs
# ソースディレクトリへ移動する。
cd /usr/src/
# カーネルのソースをダウンロードする。
wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.33.tar.bz2
# 展開する。
tar -jxf linux-2.4.33.tar.bz2
# 展開されたソースのディレクトリへ移動する。
cd linux-2.4.33
# ソースから world writable 属性を取り除く。
find -print0 | xargs -0 chmod go-w --
# TOMOYO Linux カーネルパッチをダウンロードする。
wget http://osdn.dl.sourceforge.jp/tomoyo/21578/ccs-patch-1.2-20061001.tar.gz
# 展開する。
tar -zxf ccs-patch-1.2-20061001.tar.gz
# カーネルパッチを適用する。
patch -sp1 < ccs-patch-2.4.33.txt
# TOMOYO Linux 用のオプションを選択する。
make -s menuconfig
# 通常通りコンパイルする。
make -s dep
make -s
make -s modules modules_install install