最小FreeBSDカーネルを正しく構築する方法は?

最小FreeBSDカーネルを正しく構築する方法は?

FreeBSD用の最小カーネルを構築する適切な方法はありますか?これFreeBSDマニュアルこれに関する情報が不足しています。ディレクトリのサイズは基本的に/boot/kernel約450MBとかなり大きいです。カーネルの指紋を最小限に抑え、不要なカーネルモジュールとオプションの両方を削除したいと思います。"NO_MODULES"オプションを使用する必要がありますか/etc/make.conf?それともCコンパイラフラグを使用しますか?

答え1

を減らすためにできることがたくさんあります/boot/kernel

おそらく、最適なスペース節約は設定WITHOUT_KERNEL_SYMBOLS/etc/src.confファイルがまだ存在しない場合は作成)によって達成され、次にインストールするときにデバッグinstallkernelシンボルファイルはインストールされません。すぐにスペースが必要な場合は、安全に削除できます(rm /boot/kernel/*.symbols)。

make.confどのモジュールが構築されるかを制御する設定があります。

  • NO_MODULES- モジュールの構築を完全に無効にします。
  • MODULES_OVERRIDE– ビルドするモジュールを指定します。
  • WITHOUT_MODULES- ビルドしないモジュールのリスト

このNO_MODULESオプションはやや厳しいかもしれませんので、他の2つを賢く組み合わせる方が良いでしょう。必要なモジュールを正確に知っている場合は、そのモジュールを設定できますMODULES_OVERRIDEWITHOUT_MODULES後ろに MODULES_OVERRIDEしたがって、両方のリストに名前が付けられたモジュールは構築されません。

すべてのモジュールビルドを無効にするには、を使用して、必要NO_MODULESなすべてのドライバとモジュールがカーネルに静的にコンパイルされていることを確認します。各ドライバのマンページには、カーネル構成ファイルに追加する行が表示され、必要なものがわかります。

それでもスペースが問題であると思った場合、またはカーネルをできるだけ簡潔に保ちたい場合は、カーネル構成を編集して、コンピュータがサポートしていないかサポートしていないすべてのデバイスとサブシステムを削除できます。使いたくありません。ビルドシステムは非常に合理的です。構成でまだアクティブなモジュールに必要なモジュールを誤って削除すると、ビルドが失敗し、誤った理由を説明するエラーメッセージが表示されます。

これは非常に退屈かもしれませんが、最善のアプローチは小さなステップを実行し、一度に1つまたは2つのエントリを削除し、結果の構成が正しく構築され起動されることを確認することです。しかし、何をしてもコピーして/usr/src/sys/<arch>/config/GENERIC編集することをお勧めします。あまりにも混乱している場合、唯一の解決策は基本的な構成から始めることです。そうすれば、システムにファイルがまだ残っていて幸いですGENERIC

カスタムカーネルをビルドするには、コマンドラインのように設定名を渡すmake KERNCONF=MYKERNCONF buildkernelか、 。カスタム設定ファイルを配置したら、ビルドシステムがそれを見つけることができることを確認してください。KERNCONF/etc/make.conf/usr/src/sys/<arch>/config

答え2

「正しい」カーネルは相対的な概念であり、必要に応じて異なります。カーネルを作成した人にカーネルを作成してもらう必要はありません。しかし、450MB FreeBSDカーネルはどう思いましたか?

root@neill-backup:~ # uname -a
FreeBSD neill-backup.int.autonlab.org 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014     [email protected]:/usr/obj/usr/src/sys/GENERIC  amd64

ここ

root@neill-backup:~ # du -h /boot/kernel/kernel
 20M    /boot/kernel/kernel

関連情報