# TOMOYO Linuxカーネルの作成手順

Last modified: $Date: 2007-02-16 21:41:39 +0900 (Fri, 16 Feb 2007) $

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

- gcc
- make
- ncureses

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

- [*] SAKURA (Domain-Free Mandatory Access Control) support
- [*] TOMOYO (Domain-Based Mandatory Access Control) support
- <m> SYAORAN (Tamper-Proof Device Filesystem) support

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

### ファイルに対する読み書き実行を制限する機能 プログラムがアクセスできるファイルやディレクトリ等のパス名を「操作対象」単位で制御することができます。 権限の粒度は以下のようになっています。
権限 | 許可されるアクセス
1 | プログラムを実行する
2 | ファイルを書き込みモードで開く
3 | ファイルを書き込みモードで開く／プログラムを実行する
4 | ファイルを読み込みモードで開く
5 | ファイルを読み込みモードで開く／プログラムを実行する
6 | ファイルを読み書きモードで開く
7 | ファイルを読み書きモードで開く／プログラムを実行する
allow_create | ファイルの新規作成
allow_unlink | ファイルの削除
allow_mkdir | ディレクトリの作成
allow_rmdir | ディレクトリの削除
allow_mkfifo | FIFO の作成
allow_mksock | UNIX ドメインソケットの作成
allow_mkblock | ブロック型デバイスファイルの作成
allow_mkchar | キャラクタ型デバイスファイルの作成
allow_truncate | ファイルの切り詰めと伸長
allow_symlink | シンボリックリンクの作成
allow_link | ハードリンクの作成
allow_rename | ファイル名の変更
allow_rewrite | 既に記録されている内容の変更
この機能を利用するには、以下の項目を選択してください。 [*] TOMOYO (Domain-Based Mandatory Access Control) support [*] File Access Control support なお、この機能は TOMOYO Linux のドメイン遷移を制限するために必須の機能です。この機能を利用しない場合にはドメイン遷移を制限できないので「TOMOYO (Domain-Based Mandatory Access Control) support」が正しく機能しません。
### ケイパビリティの利用を制限する機能 プログラムが行うことができる操作内容を「操作種別」単位で制御することができます。 標準の Linux で使用されているケイパビリティは POSIX ケイパビリティと呼ばれるものです。最大で３２種類の権限までしか定義できないという制約があるため、特定の権限（特に CAP_SYS_ADMIN 権限）が様々な用途に利用されてしまい、詳細な権限分割を行えないという問題点を抱えています。そのため、 TOMOYO Linux では、 POSIX ケイパビリティには手を加えずに、 TOMOYO Linux 独自の基準で定義したケイパビリティを使用しています。 ケイパビリティの粒度は以下のようになっています。
ケイパビリティ | 許可される操作内容
inet_tcp_create | TCP ソケットの使用
inet_tcp_listen | TCP ソケットの listen
inet_tcp_connect | TCP ソケットの connect
use_inet_udp | UDP ソケットの使用
use_inet_ip | RAW ソケットの使用
use_route | ROUTE ソケットの使用
use_packet | PACKET ソケットの使用
use_kernel_module | カーネルモジュールの使用
create_fifo | FIFO の作成
create_block_dev | ブロック型デバイスの作成
create_char_dev | キャラクタ型デバイスの作成
create_unix_socket | UNIX ドメインソケットの作成
SYS_MOUNT | ファイルシステムのマウント
SYS_UMOUNT | ファイルシステムのアンマウント
SYS_REBOOT | システムの再起動
SYS_CHROOT | ルートディレクトリの変更
SYS_KILL | シグナルの送信
SYS_VHANGUP | vhangup の使用
SYS_TIME | システム時刻の変更
SYS_NICE | プロセスの優先度の変更
SYS_SETHOSTNAME | ホスト名・ドメイン名の変更
SYS_LINK | ハードリンクの作成
SYS_SYMLINK | シンボリックリンクの作成
SYS_RENAME | ファイル名の変更
SYS_UNLINK | ファイルの削除
SYS_CHMOD | ファイルのパーミッションの変更
SYS_CHOWN | ファイルの所有者・グループの変更
SYS_IOCTL | ioctl の使用
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
### プログラム実行時に渡される名前を制限する機能 プログラム実行時に渡される名前を制限することができます。 プログラムを実行するときには、プログラム名とそのプログラムへの引数が 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 は / ディレクトリを交換します。システムの起動時に１度だけ使われる場合が多いですが、システムの起動後は通常は使われない機能です。 この機能を利用すると、システムの起動後に 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 という名前のコンパイルオプションが存在します。このオプションが有効である場合、コンパイルされたコードのサイズが約１０倍の大きさになります。このオプションを有効にすると、 /usr/src/ ディレクトリで約１ＧＢ、 /lib/modules/ ディレクトリで約３００ＭＢの余分なディスク領域を消費します。
ディスク領域を節約したい場合、以下のオプションを無効にしてください。

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

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

- RedHat Linux 9 用のカーネル 2.4.20-46.9.legacy
- Fedora Core 3 用のカーネル 2.6.12-2.3.legacy_FC3
- Fedora Core 4 用のカーネル 2.6.17-1.2142_FC4
- Fedora Core 5 用のカーネル 2.6.19-1.2288.fc5
- Fedora Core 6 用のカーネル 2.6.19-1.2911.fc6
- CentOS 4.4 用のカーネル 2.6.9-42.0.8.EL
- Debian Sarge 用のカーネル 2.4.27-10sarge5
- Debian Sarge 用のカーネル 2.6.8-16sarge6
- OpenSUSE 10.1 用のカーネル 2.6.16.27-0.6
- OpenSUSE 10.2 用のカーネル 2.6.18.2-34
- Debian Etch 用のカーネル 2.6.17-9
- Asianux 2.0 用のカーネル 2.6.9-34.28AX
- Ubuntu 6.10 用のカーネル 2.6.17.14-ubuntu1
- バニラ 2.6 カーネル
- バニラ 2.4 カーネル

## 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/23849/ccs-patch-1.3.2-20070214.tar.gz tar -zxf ccs-patch-1.3.2-20070214.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/23849/ccs-patch-1.3.2-20070214.tar.gz tar -zxf ccs-patch-1.3.2-20070214.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/23849/ccs-patch-1.3.2-20070214.tar.gz tar -zxf ccs-patch-1.3.2-20070214.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.19-1.2288.fc5

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

## Fedora Core 6 用のカーネル 2.6.19-1.2911.fc6

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

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

# カーネルのソースをダウンロードしてインストールする。 wget http://mirrors.kernel.org/centos/4.4/updates/SRPMS/kernel-2.6.9-42.0.8.EL.src.rpm rpm -ivh kernel-2.6.9-42.0.8.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.8.EL # ソースのディレクトリへ移動する。 cd /usr/src/linux-2.6.9-42.0.8.EL/ # バージョン番号を修正する。 sed -i 's/EXTRAVERSION = -prep/EXTRAVERSION = -42.0.8.EL/' Makefile # TOMOYO Linux パッチをダウンロードして適用する。 wget http://osdn.dl.sourceforge.jp/tomoyo/23849/ccs-patch-1.3.2-20070214.tar.gz tar -zxf ccs-patch-1.3.2-20070214.tar.gz patch -sp1 < ccs-patch-2.6.9-42.0.8.EL.txt # TOMOYO Linux 用のオプションを選択する。 make -s menuconfig # 通常通りコンパイルする。 make -s make -s modules modules_install install

## Debian Sarge 用のカーネル 2.4.27-10sarge5

# カーネルのソースをダウンロードしてインストールする。 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/23849/ccs-patch-1.3.2-20070214.tar.gz tar -zxf ccs-patch-1.3.2-20070214.tar.gz patch -sp1 < ccs-patch-2.4.27-10sarge5.txt # TOMOYO Linux 用のオプションを選択する。 make -s menuconfig # 通常通りコンパイルする。 make -s dep install modules modules_install # initrd を作成する。 mkinitrd -o /boot/initrd.img-2.4.27-10sarge5-ccs 2.4.27-10sarge5-ccs

## Debian Sarge 用のカーネル 2.6.8-16sarge6

# カーネルのソースをダウンロードしてインストールする。 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/23849/ccs-patch-1.3.2-20070214.tar.gz tar -zxf ccs-patch-1.3.2-20070214.tar.gz patch -sp1 < ccs-patch-2.6.8-16sarge6.txt # TOMOYO Linux 用のオプションを選択する。 make -s menuconfig # 通常通りコンパイルする。 make -s make -s install modules modules_install # initrd を作成する。 mkinitrd -o /boot/initrd.img-2.6.8-16sarge6-ccs 2.6.8-16sarge6-ccs

## OpenSUSE 10.1 用のカーネル 2.6.16.27-0.6

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

## OpenSUSE 10.2 用のカーネル 2.6.18.2-34

# カーネルのソースをダウンロードしてインストールする。 wget http://mirrors.kernel.org/opensuse/distribution/10.2/repo/oss/suse/i586/kernel-source-2.6.18.2-34.i586.rpm rpm -ivh kernel-source-2.6.18.2-34.i586.rpm # ソースのディレクトリへ移動する。 cd /usr/src/linux-2.6.18.2-34/ # TOMOYO Linux パッチをダウンロードして適用する。 wget http://osdn.dl.sourceforge.jp/tomoyo/23849/ccs-patch-1.3.2-20070214.tar.gz tar -zxf ccs-patch-1.3.2-20070214.tar.gz patch -sp1 < ccs-patch-2.6.18.2-34_SUSE.txt # 出力先のディレクトリへ移動する。 cd /usr/src/linux-2.6.18.2-34-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/23849/ccs-patch-1.3.2-20070214.tar.gz tar -zxf ccs-patch-1.3.2-20070214.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

## Asianux 2.0 用のカーネル 2.6.9-34.28AX

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

## Ubuntu 6.10 用のカーネル 2.6.17.14-ubuntu1

# カーネルのソースをダウンロードしてインストールする。 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/23849/ccs-patch-1.3.2-20070214.tar.gz tar -zxf ccs-patch-1.3.2-20070214.tar.gz patch -sp1 < ccs-patch-2.6.17.14-ubuntu1.txt # TOMOYO Linux 用のオプションを選択する。 make -s menuconfig # 通常通りコンパイルする。 make -s make -s install modules modules_install # initramfs を作成する。 mkinitramfs -o /boot/initrd.img-2.6.17.14-ubuntu1-ccs 2.6.17.14-ubuntu1-ccs

## バニラ 2.6 カーネル

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

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

## バニラ 2.4 カーネル

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

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