FreeBSD 10.1でカーネルをカスタマイズおよび再コンパイルする方法

前書き

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

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

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

前提条件

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

  • 1つのFreeBSD 10.1ドロップレット。

FreeBSDを初めて使用する場合は、https://www.digitalocean.com/community/tutorial_series/getting-started-with-freebsd [Getting Started with FreeBSD]シリーズのチュートリアルをご覧ください。

手順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

サーバー証明書を受け入れるように求められる場合があります。 指紋がhttps://www.freebsd.org/doc/en/books/handbook/svn.html [このページ]の下部にある指紋と一致することを確認した後、* p *と入力して受け入れます。

ステップ2-カスタム構成の作成

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

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

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

cd /usr/src/sys/amd64/conf

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

sudo ee

https://raw.githubusercontent.com/do-community/freebsd-do-kernel/master/EXAMPLE [こちら]にある設定例があります。 内容をコピーして「+ EXAMPLE +」に貼り付け、ファイルを保存して閉じます。

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

ただし、http://docs.freebsd.org/doc/3.4-RELEASE/usr/share/doc/handbook/kernelconfig-config.html [FreeBSD documentation]の設定オプションの詳細を読んで、自分で実験することができます。 !

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

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

`+ / usr / src `ディレクトリに戻り、新しい設定ファイルを利用して ` make buildkernel +`を発行します。

cd /usr/src
sudo make buildkernel KERNCONF=

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

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

sudo make installkernel KERNCONF=

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

sudo shutdown -r now

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

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

sysctl kern.conftxt | grep ident

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

ident

結論

おめでとうございます。 カーネルの再構成と再コンパイルに成功しました。