序章

FreeBSDオペレーティングシステムはデフォルトでGENERICカーネルを利用します。 これは、すぐに使用できるさまざまなハードウェアをサポートするために使用されるデフォルトの構成です。 ただし、カスタムカーネルをコンパイルする理由には、セキュリティ、拡張機能、パフォーマンスの向上など、さまざまな理由があります。

FreeBSDは、オペレーティングシステムに安定版と最新版の2つのコードブランチを利用しています。 Stableは、現在のコードリリースであり、本番環境に対応しています。 Currentは、開発チームからの最新のコードリリースであり、最新の最先端機能のいくつかを備えていますが、バグやシステムの不安定性が発生しやすくなっています。 このガイドでは、安定したブランチを利用します。

このチュートリアルでは、カスタム構成でFreeBSDカーネルを再コンパイルします。

前提条件

このチュートリアルに従うために必要なのは、次のとおりです。

  • 1つのFreeBSD10.1ドロップレット。

FreeBSDを初めて使用する場合は、 Get Getting Started withFreeBSDシリーズのチュートリアルを確認できます。

ステップ1—ソースコードを取得する

このステップでは、OSのソースコードをプルします。

FreeBSDは、UNIXの他の多くのフレーバーと同様に、パブリックダウンロードおよび変更用のオペレーティングシステムのソースコードを提供します。 カーネルを再コンパイルするには、まず、FreeBSDのバージョン管理システムからこのソースコードをプルする必要があります。

FreeBSDファウンデーションは、コードリポジトリにSubversionを利用しているので、最初にSubversionのバイナリポートをインストールしましょう。

sudo pkg install subversion  

FreeBSDのデフォルトのシェルはtcshで、$PATHのコマンドに内部ハッシュテーブルを利用します。 Subversionのインストール後、ディレクトリテーブルを再ハッシュする必要があります。

rehash

最後に、/usr/srcディレクトリへの最新の安定したブランチのコピーをチェックアウトします。

sudo svn co https://svn0.us-east.FreeBSD.org/base/stable/10 /usr/src

サーバー証明書を受け入れるように求められる場合があります。 指紋がこのページの下部にあるものと一致することを確認した後、pと入力して受け入れます。

ステップ2—カスタム構成を作成する

このステップでは、新しいカーネル構成をカスタマイズします。

カーネル構成ファイルの標準の命名規則は、すべて大文字のカーネルの名前です。 このチュートリアルの構成は、EXAMPLEと呼ばれます。 カーネル構成ファイルは、/usr/src/sys/architecture/confディレクトリ内にあります。 DigitalOceanで使用されるアーキテクチャはAMD64です。

構成ディレクトリに移動します。

cd /usr/src/sys/amd64/conf

EXAMPLEファイルを作成して開き、eeまたはお気に入りのテキストエディタを使用して編集します。

sudo ee EXAMPLE

設定例はここにあります。 内容をコピーしてEXAMPLEに貼り付け、ファイルを保存して閉じます。

このカーネル構成の例は、DigitalOceanDroplet用に調整された最小限のカーネルビルド用です。 具体的には、GENERICカーネル構成では、さまざまなハードウェアのサポートが有効になっています。 EXAMPLEでは、すべてのレガシーデバイスと不要なデバイスが削除され、ドロップレットの実行に必要なデバイスドライバーのみが残されています。 パケットフィルターファイアウォール(pf)、トラフィックシェーピング(altq)、ファイルシステム暗号化(geom_eli)、およびIPセキュリティ(IPsec)もサポートされています。

ただし、構成オプションの詳細については、 FreeBSDドキュメントを参照して、自分で試すことができます。

ステップ3—新しいカーネルの構築とインストール

このステップでは、カーネルの再コンパイルを開始します。

/usr/srcディレクトリに戻り、新しい構成ファイルを使用してmake buildkernelを発行します。

cd /usr/src
sudo make buildkernel KERNCONF=EXAMPLE

ドロップレットに使用するリソースの量によっては、これには時間がかかる場合があります。 1GBのドロップレットの平均時間は約90分です。

カーネルの再コンパイルが完了したら、インストールを開始します。

sudo make installkernel KERNCONF=EXAMPLE

それが完了したら、システムを再起動します。

sudo shutdown -r now

これで、サーバーは現在実行中のサービスのシャットダウンを開始し、ディスクを同期して、新しいカーネルで再起動する必要があります。 Dropletのコンソールにログインして、起動プロセスを監視できます。

サーバーが再起動したら、再度ログインします。 次のコマンドを使用して、新しいカーネル構成が使用されていることを確認できます。

sysctl kern.conftxt | grep ident

出力は次のようになります。

ident    EXAMPLE

結論

おめでとう! これで、カーネルが正常に再構成および再コンパイルされました。