カーネルを理解したところで、メインタスクであるカーネルコードの設定とコンパイルに移ります。カーネルコードの設定に時間はかかりません。設定ツールは多くの質問をし、開発者がカーネルのあらゆる面を設定できるようにします。不明な点や機能がある場合は、コンフィギュレーションツールが提供するデフォルトを使用する方がよいでしょう。この一連のチュートリアルでは、カーネルを設定する全プロセスをステップバイステップで説明します。
コードを設定する前に、ソースファイルのあるフォルダでターミナルを開く必要があります。ターミナルを開いたら、好みの構成に基づいてインターフェイスを設定する方法がいくつかあります:
- make config - プレーンテキストのインターフェース
- make menuconfig - テキストベースのカラーメニューとラジオリスト。このオプションは開発者の開発をスピードアップします。ncurses (ncurses-devel) がインストールされている必要があります。
- make nconfig - テキストベースのカラーメニュー。curses がインストールされている必要があります。
- make xconfig - QT/X-windows インターフェース。QTがインストールされている必要があります。
- make gconfig - Gtk/X-windows インターフェース。GTK がインストールされている必要があります。
- make oldconfig - プレーンテキストのインターフェースですが、デフォルトの問題は既存のローカル設定ファイルに基づいています。
- make silentoldconfig - oldconfigと似ていますが、コンフィグファイル内にある質問に対する答えを表示しません。
- make olddefconfig - silentoldconfigに似ていますが、いくつかのissueはすでにデフォルト値で選択されています。
- make defconfig - このオプションは、現在のシステム・アーキテクチャに基づいてデフォルトの設定ファイルを作成します。
- make allyesconfig - このオプションは、できるだけ多くの質問に「yes」と答えた設定ファイルを作成します。
- make allmodconfig - このオプションは、カーネルのできるだけ多くの部分をモジュールとして設定する設定ファイルを作成します。
| 注意: カーネルコードはカーネルそのものに入れることもできますし、モジュールにすることもできます。例えば、ユーザーはBluetoothドライバをモジュールとして追加することも、直接カーネルのチェストナットに追加することも、Bluetoothドライバを全く追加しないこともできます。カーネル自体にコードを入れると、カーネルはより多くのメモリを要求し、起動に時間がかかります。しかし、カーネルの実行速度は向上します。コードをモジュールとして追加した場合、コードは必要なときにロードされるまでハードドライブに残ります。その後、モジュールはメモリにロードされます。これにより、カーネルのメモリ使用量が減り、ブート時間が短縮されます。ただし、カーネルとモジュールは互いにメモリに依存しないため、カーネルのパフォーマンスに影響します。もう1つの選択肢は、コードを追加しないことです。例えば、カーネル開発者がシステムがBluetoothデバイスを使用しないことを知っている場合、ドライバをカーネルから省くことができます。これにより、カーネルのパフォーマンスが向上します。ただし、後でBluetoothデバイスが必要になった場合は、Bluetoothモジュールをインストールするか、カーネルをアップグレードする必要があります。 | 
- make allnoconfig - このオプションはカーネルに必要なコードの設定ファイルだけを生成します。可能な限り多くの質問に「いいえ」と答えますが、その結果、カーネルがコンパイルされたハードウェア上で動作しなくなることがあります。
- make randconfig - このオプションはカーネルオプションをランダムにします。
- make localmodconfig - このオプションは、現在ロードされているモジュールのリストとシステム・コンフィギュレーションに基づいてコンフィギュレーション・ファイルを生成します。
- make localyesconfig - ロード可能なすべてのモジュールをカーネルにコンパイルします。
threads/the-linux-kernel-configuring-the-kernel-part-.4274/#post-13307)&#
ヒント:"make menuconfig "を使う方がよいでしょう。「make config "はこのような利便性を提供しません。
コンフィギュレーション:
ほとんどの開発者は、"make menucongfig "または他のグラフィカルメニューの1つを使用することを選択します。上記の設定コマンドを入力した後、最初の質問はカーネルを64ビットにコンパイルするかどうかです。オプションは "Y"、"n"、"?"です。クエスチョンマークは質問の説明に使用します。クエスチョンマークは質問の説明に使われ、"n "は質問に対するノー、"Y "は質問に対するイエスを意味します。このチュートリアルでは「はい」を選びます。 Y "と入力してエンターキーを押します。
注意:カーネルが32ビット・システム上でコンパイルされると、コンパイル・ツールはカーネルが32ビットにコンパイルされているかどうかを尋ねます。最初の質問はプロセッサによって異なります。
次の行に「クロスコンパイラ・ツールの接頭辞 []」と表示されます。クロスコンパイルしない場合は、そのままEnterを押してください。クロスコンパイルする場合は、ARMシステムの場合は "arm-unknown-linux-gnu-"、64ビットPCの場合は "x86_64-pc-linux-gnu-"のように入力します。他のプロセッサ用のコマンドは他にもたくさんありますが、この表は大きすぎます。開発者がサポートしたいプロセッサを知れば、そのプロセッサに必要なコマンドを調べるのは簡単です。
注意:クロスコンパイルとは、別のプロセッサー向けにコードをコンパイルすることです。例えば、インテル・システムはインテル・プロセッサー上で動作しないプログラムをコンパイルしていますが、このシステムはARMまたはAMDプロセッサー上で動作するようにコードをコンパイルしている可能性があります。
次に、"Local version - append to kernel release []" と表示されます。これにより、開発者はカスタムカーネルに特別なバージョン番号や名前を付けることができます。カーネルバージョンが "3.9.4-LinuxDotOrg" と表示されるように "LinuxDotOrg" と入力してみます。次に、設定ツールは「バージョン情報をバージョン文字列に自動的に付加する[N/y/?]」と尋ねます。次に、設定ツールは「バージョン情報をバージョン文字列に自動的に追加する[N/y/?もしローカルの git リポジトリがあれば、git のリビジョン番号がバージョン番号に追加されます。この場合、gitは使われていないので「いいえ」と答えます。そうでなければ、gitリビジョン番号がバージョン番号に付加されるでしょう。vmlinuzといくつかの似たようなファイルを覚えていますか?さて、次の質問はカーネルを圧縮するのにどのフォーマットを使うかを尋ねるものです。開発者は5つの選択肢から1つを選ぶことができます。それらは次のとおりです。
- Gzip
- Bzip2
- LZMA
- XZ
- LZO
Gzipがデフォルトなので、「1」を選択してエンターキーを押します。各圧縮形式には、他の形式と比べて高い圧縮率と低い圧縮率があります。圧縮率が高いほどサイズは小さくなりますが、圧縮率の低いファイルと比べて解凍に時間がかかります。
この行には「Default hostname []」と表示されます。ここでホスト名を設定できます。通常、開発者はこの行を空白にして、Linuxユーザーが後で自分のホスト名を設定できるようにしています。
次に、開発者はスワップ・パーティショニングを有効または無効にすることができます。Linuxは仮想メモリ用に「スワップ領域」と呼ばれる別のパーティションを使用します。これはWindowsのページ・ファイルに相当します。通常、開発者は "Support for paging of anonymous memory [Y/n/?]"という行に "Y "と答えます。には "Y "と答えます。
次の行は、カーネルがIPCをサポートしているかどうかを尋ねています。プロセス間通信は、プロセスが互いに通信したり同期したりすることを可能にします。IPCを有効にしておくと、多くのプログラムが動作しなくなります。この質問に "Y "と答えると、設定ツールは "POSIX Message Queues [Y/n/?]"と尋ねます。POSIXメッセージ・キューは、各メッセージに優先度を与えるメッセージ・キューです。デフォルトの選択は "Y" です。Enter キーを押して、デフォルトの選択を選択します。
次の質問 "open by fhandle syscalls [Y/n/?]"は、ファイル・システム操作を実行する必要があるときに、ファイル名の代わりにファイル・ハンドルを使用することを許可するかどうかを尋ねるものです。デフォルトでは "Y "です。
開発者がいくつかの選択をした後に、特定の質問に自動的に答えられることがあります。例えば、次の質問 "Auditing support [Y/?]"は、前のオプションがこの機能を必要とするため、プロンプトなしで自動的に回答されます。監査サポートは、すべてのファイルアクセスと変更をログに記録します。監査に関する次の質問、"Enable system-call auditing support [Y/n/?]" ..有効にすると、すべてのシステムコールがログに記録されます。開発者がより良いパフォーマンスを望むのであれば、可能であれば監査を無効にしてカーネルから除外した方が良いでしょう。他の開発者は、セキュリティ監視のために監査を有効にしたいかもしれません。この質問には「n」を選びます。次の監査の質問、"Make audit loginuid immutable [N/y/?]" は、プロセスがログインIDを変更できるかどうかを尋ねています。はプロセスがloginuid(LOGINユーザーID)を変更できるかどうかを尋ねています。もし有効にすると、ユーザー空間のプロセスはloginuidを変更できなくなります。
注意:"make config "によって設定された場合、設定ツールによって答えられた質問は表示されますが、ユーザーはその答えを変更することはできません。make menuconfig "で設定された場合、ユーザがどのキーを押しても、オプションは変更できません。選択肢は別の質問の選択肢を決定するので、開発者はこれらの選択肢を変更する必要はありません。
via: /-------.74/





