コンテンツにスキップ

FreeBSD/カスタムカーネル

出典: フリー教科書『ウィキブックス(Wikibooks)』

FreeBSDのカスタムカーネルとは?

[編集]

FreeBSDのカスタムカーネルとは、デフォルトで提供される汎用カーネル(GENERIC)を元に、特定のニーズに合わせて最適化・再構築したカーネルのことを指します。GENERICカーネルは、幅広いハードウェアと機能をサポートするように設計されていますが、不要なドライバや機能も含まれています。

カスタムカーネルを構築することで、以下のようなメリットが得られます:

起動時間の短縮

[編集]

不要なハードウェアをチェックしないため、システムの起動が高速化します。

メモリ消費の削減

[編集]

不要なカーネルモジュールや機能を除外することで、システムが使用するメモリ量を減らせます。

セキュリティの向上

[編集]

使用しないコードを削除することで、攻撃対象となる可能性のある箇所を減らします。

特定のハードウェアのサポート

[編集]

GENERICで無効化されている特殊なハードウェアをサポートするよう設定できます。

特殊なオプションの有効化

[編集]

デフォルトで無効化されている特定の機能を有効にできます。

カスタムカーネルの構築手順

[編集]

カスタムカーネルを構築する際の一般的な手順は以下の通りです:

カーネルソースコードの取得

[編集]

カーネルソースは/usr/srcに格納されます。必要に応じてGitを使用してソースをクローンします:

# Gitのインストール
pkg install git

# ソースコードの取得
git clone -o freebsd https://git.FreeBSD.org/src.git /usr/src

ユーザーランドツールとのバージョンの整合性を保つため、システムのバージョンに合ったリリースブランチを使用します:

freebsd-version -u
13.0-RELEASE-p11

バージョンに対応するブランチに切り替え
cd /usr/src
git checkout releng/13.0

ハードウェアの確認

[編集]

現在のシステムで使用されているハードウェアを確認します:

cat /var/run/dmesg.boot
dmidecode
pciconf -l
kldstat

不要なハードウェア(例:PCM-CIA、SDカードリーダーなど)のサポートは無効化し、必要なハードウェアのみを対象とします。

カーネル構成ファイルの作成

[編集]

デフォルトのGENERIC構成ファイルを元にカスタム構成を作成します:

cd /usr/src/sys/$(uname -m)/conf
cp GENERIC MYKERNEL

MYKERNELファイル内で以下を調整します:

  • 必要なデバイスドライバやオプションを残す。
  • 不要なものをコメントアウトまたは削除する。

カーネルのコンパイル

[編集]

以下のコマンドでカーネルをビルドします:

cd /usr/src
make buildkernel KERNCONF=MYKERNEL
make installkernel KERNCONF=MYKERNEL

システムの再起動と動作確認

[編集]

新しいカーネルでシステムを再起動します:

reboot

起動後、uname -aで新しいカーネルが正しくロードされているか確認します。

カーネルモジュールの調整

[編集]

FreeBSDでは、不要なカーネルモジュールを除外するために以下のオプションを使用できます:

  • MODULES_OVERRIDE: 必要なモジュールのみを指定。
  • WITHOUT_MODULES: 不要なモジュールを除外。
例:
make buildkernel KERNCONF=MYKERNEL MODULES_OVERRIDE="ahci nfe"

注意点

[編集]
  • 依存関係の確認: カーネルオプションやモジュールの依存関係を事前に確認することが重要です。grepNOTESファイルを利用して確認できます。
  • トラブルシューティング: 新しいカーネルで問題が発生した場合、以前のGENERICカーネルでシステムを起動して修正を行う準備をしておきます。

カスタムカーネルは、特定の目的や環境に合わせてFreeBSDを最大限に活用するための強力なツールです。しかし、構築時にはハードウェアやソフトウェアの要件を慎重に確認し、構成ミスを避ける必要があります。