FreeBSD 12.4 RELEASE - 基本設定 - カーネルの再構築

クラウディア 
1. 概要
2. カーネルのコピー
3. カーネルの編集
4. コンパイルとインストール

1. 概要

 FreeBSD をインストールした時点で動いているカーネルは、GENERIC というカーネルです。  カーネルとはメモリ管理やタスク管理デバイスの管理など、OS の基本機能を実現しています。  自分のマシンに合わせたカーネルを作成することにより、以下のような利点があります。
  • 素早く起動します。 カーネルはシステム上にあるハードウェアしか検出しないので、 システムの起動にかかる時間を短くできます。
  • メモリの消費量を減らすことができます。 システムに合わせたカーネルは、 使用しない機能やデバイスドライバを含まないので、 大抵 GENERIC カーネルより少ないメモリしか消費しません。 カーネルコードは常に物理メモリ上に存在し、 アプリケーションはその容量分のメモリを使用できないので、 これは重要なことです。 したがって、メモリが少ないシステムでは、 カーネルの再構築は重要です。
  • 追加のハードウェアをサポートします。 カスタムカーネルは、GENERIC カーネルに存在しないデバイスのサポートを追加することができます。
 (以上、「FreeBSD ハンドブック 8.2. なぜカスタムカーネルを作るか?」より引用)  ただし、カーネルの再構築に失敗すると OS が起動できなくなります。現在のマシン性能は2000年頃に比べて格段に早くなっていますので、現時点の起動速度等に問題がなくカーネルの再構築に自信のない場合はやめておく方が賢明です。  また、「FreeBSD」のメジャーバージョンをアップデートする際は、オリジナルのカーネルが必要になりますのでカスタムのカーネルを作成する際はオリジナルをコピーして作成し、いつでもオリジナルに戻せるようにしておきます。  また失敗した場合、何が失敗したのかを調べるよりもクリーンインストールする方が早いことがありますので、この手順は、OSインストール直後に行った方がいいかもしれません。

2. カーネルのコピー

 デフォルトのカーネルは、「GENERIC」という名前で

/usr/src/sys/プロセッサ名/conf/
 にあります。  プロセッサ名は、「x86」系であれば、「i386」、「x64」系であれば、「amd64」になります。  ここではプロセッサを「x64」系、作成するカーネルの名称を「MYKERNEL(カーネルの名称はすべて大文字で記述するのが慣習になっています)」として例示します。  はじめにカーネルのコピーを作成します。

cd /usr/src/sys/amd64/conf/
cp GENERIC MYKERNEL

3. カーネルの編集

 コピーしたカーネルをエディタを用いて編集します。  空白行は、読みやすくするためのものなので、出来ればそのまま残しておきます。自分で読みやすくしたければ適当な行に空白行を挿入します。  #(シャープ) 以降は、コメントの意味を持ちます(これは、大抵の unix 系のコンフィグレーションファイルの記述に共通です)。  もし、不必要な行を削除する場合は、出来れば行をそのまま完全に削除するよりは、先頭カラムに"#"を挿入します。そうすることで、不幸な事故が起きたときにも容易にもとに戻せます。  起動時のログを

dmesg
 で見ることができます。  実装していて、OS が認識しているハードウェアが記述されていますので、ハードウェアの変更を予定していなければ、実装しているハードウェア部分のみを残すことも可能です。  ログが起動後のメッセージで埋め尽くされている場合は

/var/run/dmesg.boot
 に残されています。  以下、変更する部分を示します。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  ここは必須で書き換えます。

cpu             HAMMER
ident           MYKERNEL
 「MYKERNEL」は、例示のカーネル名ですが、ドメイン名でもなんでも自分で命名するものをつけます。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  52行は、光学ドライブの「ISO 9660」ファイルシステムをマウントするのに使用します。  「CD-ROM」を使用するのは、光学ディスクを時々マウントするだけなら(いれっぱなしでなければ)この行をコメントアウトしても大丈夫です (データ CD を最初にマウントする時、自動的にロードされます)。  66行は、カーネルがそれぞれの「SCSI」機器を検出する前に 15 秒間待つようにします。  「SCSI」機器を接続しないのであれば、コメントアウトします。  「SCSI」機器を使用している場合でも、起動時間を短くするため、秒数を小さくしてみてください。  「SCSI」機器を認識しなくなった場合は時間を元に戻します。  以下、デバイスのオプションでマシンのハードウェア構成上、使用していないものをコメント化していきます。よくわからないものはそのまま残しておいたほうが賢明です。  コメント化しすぎるとカーネルビルド時にエラーになります。  明らかに不要なもののみにコメント化するように注意深くすることが必要です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  115行は、フロッピーの定義です。フロッピーを使用していないマシンであれば、コメントアウトします。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  123行以下は、「SCSI」コントローラの定義です。SCSI コントローラを使用しないのであれば、コメントアウトします。  以下、同様に何を定義しているかを記述していきますので不要なものをコメントアウトします。  ただし、ここから下は、コメント化すると、コンパイルに失敗することが多いので、慎重に。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  「SCSI」の周辺機器の定義です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  「SCSI」の「RAID」コントローラの定義です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  「RAID」コントローラと NVMe(よく知りません)の定義です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  「PS2」マウスやらコンソール周りの定義です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  ビデオコンソールドライバの定義です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  PC カードデバイスの定義です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  「COM」ポート(「RS-232C」あるいは、シリアルポートともいう)の定義です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  に続く行は、パラレルポートです。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  「PCI」系の「NIC(Network Interface Card)」の定義です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  これも「PCI」系の「NIC」の定義ですが、インテル系の「NIC」を使用している場合は、「device miibus」の行は絶対に残す必要があります。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  無線「NIC」の定義です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  「Pseudo devices」(疑似デバイス)です。これらは削除してはいけません。  「device md」の記述は「.iso」形式のファイルをマウントする際に必要のようです。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  「USB」デバイス、サウンドカードの定義です。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  「SD」カードの定義です。  使わないのであればコメントアウトしてよいでしょう。  [/usr/local/www/laravel/resources/views/fbsd/1203/02/GENERIC.kern] というファイルが、なかったですじゃ・・・。  仮想環境系のデバイス定義です。  仮想に無縁であればコメントアウトしてよいでしょう。  この他、ファイアウォールの機能「IP Firewall」を有効にするのであれば以下のオプションを追加します。

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_DEFAULT_TO_ACCEPT
 それぞれの意味については「メンテナンス・トラブルシュート - セキュリティ対策」をご参照ください。

4. コンパイルとインストール

 編集が終わったら、以下のようにコンパイルとインストールを行います。  結構な時間を必要としますので、終わるまでマシンをちらちら見ながら、何か他のことをしていた方がいいかも・・・。

cd /usr/src
make buildkernel KERNCONF=MYKERNEL

    コンパイル中のメッセージが表示されます

make installkernel KERNCONF=MYKERNEL

    インストール中のメッセージが表示されます

 これでエラーがでなければ、以下のコマンドで再起動すれば新しいカーネルで動きます。

shutdown -r now
 編集する前のカーネルは「kernel.old」という名前で残っています。  もし新しいカーネルで起動できなくなったらブート時に、

boot kernel.old
 と打ち込んでください。  そうすれば一回前のカーネルで起動できます。
TikTok Shop 【リピート用プログラム】
AbemaTV 無料体験
世界最大級のオンライン英会話EF English Live
JETBOY
EaseUS
U-NEXT
5G CONNECT
earthcar(アースカー)
葬送のフリーレン Prime Video