FreeBSD10.1でカーネルをカスタマイズして再コンパイルする方法
序章
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
結論
おめでとう! これで、カーネルが正常に再構成および再コンパイルされました。