Linuxカーネルを直接コンパイルすると、どのような利点がありますか?

Linuxカーネルを直接コンパイルすると、どのような利点がありますか?

Linuxカーネルを直接コンパイルすると、どのような利点がありますか?ハードウェアに合わせてカスタマイズすると効率が向上しますか?

答え1

私の考えでは、独自のLinuxカーネルをコンパイルすることによって得られる唯一の実際の利点は次のとおりです。

独自のLinuxカーネルをコンパイルする方法を学びます。

それはあなたのビジネスではありません必要とにかくより速い速度/メモリ/xxxのため。自分が発展段階にあると感じたら、これは非常に貴重なことです。全体的に「オープンソース」が何であるかをより深く理解し、カーネルの他の部分がどのように、どの部分であるかを理解したい場合は、試してみてください。たった3秒早いブート時間が必要な場合...要点は何ですか... SSDを購入してください。気になるなら、学びたいなら自分だけのカーネルをコンパイルしてみるのもいいし、おそらく多くのメリットが得られるでしょう。

しかし、自分のカーネルをコンパイルすることが適切ないくつかの具体的な理由があります(一部の人が他の答えで指摘したように)。通常、これらの問題は、次のような特定の結果に対する特定のニーズによって引き起こされます。

  • リソースが制限されたハードウェアでシステムを稼働/実行する必要があります。
  • パッチをテストし、開発者にフィードバックを提供する必要があります。
  • 競合を引き起こす項目を無効にする必要があります。
  • Linuxカーネルを開発する必要があります。
  • サポートされていないハードウェアのサポートを有効にする必要があります。
  • システムの現在の制限に達しているので、xのパフォーマンスを向上させる必要があります(そして私が何をしているのかを知っています)。

問題は、すべてがすでに好きなように動作しているときに自分のカーネルをコンパイルすると、独自の利点があると思うことです。しかし、私はそうではないと思います。不要なアイテムを無効にし、調整可能なアイテムを調整するのに十分な時間を費やすことはできませんが、実際にはLinuxカーネルはすでに(配布に応じて)うまく調整されています。最大ユーザーの状況。

答え2

ほとんどのユーザーは自分のカーネルをコンパイルする必要はなく、ディストリビューションですでにこれを実行しています。通常、リリースにはリリースのしくみの特定の部分、デバイスドライバのバックポート、最新のリリースされていないカーネルバージョンの修正、またはユーザーと開拓された機能を統合するためのパッチセットが含まれます。

独自のカーネルをコンパイルするにはいくつかのオプションがあります。公式Linus Torvaldsカーネルをコンパイルできます。これには、ディストリビューションで追加したパッチやカスタマイズ(良い場合も悪い場合もあります)は含まれません。あるいは、ディストリビューションの再構築ツールを使用することもできます。独自のカーネルを構築します。

カーネルを再構築する理由は次のとおりです。

  • バグをパッチしたり、本番システムに特定の機能を追加したりするために、1つまたは2つの修正だけでカーネル全体をアップグレードするリスクを回避することはできません。
  • 特定のデバイスドライバや新機能をお試しください
  • カーネルを拡張するには作業してください。
  • 一部の「アルファ」モジュールまたは機能をテストします。

さらに、多くの開発者は、特別なデバイスドライバを必要としたり、不要な機能を削除したりする組み込みシステムまたはセットトップボックス用のカーネルのカスタムバージョンを作成するために使用します。

答え3

カーネルを直接コンパイルすると、マシンに関連する部分のみを含めることができるため、特に起動時にマシンが小さくなり、潜在的に高速になります。ユニバーサルカーネルは、起動時に可能な限り多くのハードウェアのサポートを含める必要があり、どのハードウェアがコンピュータに接続されているかを検出し、適切なモジュールをロードしますが、これはすべて時間がかかり、代わりに動的モジュールをロードする必要があります。カーネルに直接入ります。コンピュータにCPUが1つしかない場合、カーネルが400個の異なるCPUをサポートするようにしたり、CPUがない場合はBluetoothマウスをサポートする理由はありません。これはすべて無駄なスペースです。

答え4

独自のカーネルをコンパイルすると、利点を得るためのいくつかの状況があります。

  • モジュールのロードが無効なカーネルはより安全です。これを行うには、モジュールにコンパイルするのではなく、必要なモジュールを選択してカーネルの一部として含める必要があります。

  • / dev / kmemのサポートを無効にするか、適切なコンパイラオプションでそれを弱めることはセキュリティに適しています。現在、ほとんどのディストリビューションは基本的にこれを行うと思います。

  • 可能であれば、initrdを使用しないことをお勧めします。カーネルを起動するハードウェアに合わせて調整すると、initrd が削除されます。

  • 時々、最新のカーネルバージョンに必要な機能が含まれているかもしれませんが、今日ではこれは非常にまれです。初めてDebianを使用し始めたときに2.4カーネルを使用しましたが、udevをサポートするには2.6カーネルが必要だったことを思い出してください。

  • 不要なネットワークプロトコル/オプションを無効にすると、TCP / IPのパフォーマンスが向上する可能性があります。

  • 不要なオプションを無効にすると、カーネルのメモリスペースを減らすことができ、RAMが不足している環境で重要です。これは、256 MB RAM システムをルーターとして使用する場合に役立ちます。

  • 私は通常、シリアルまたはSSHを介してのみログインするシステムで/ devのすべての「tty」デバイスが迷惑であることを発見しました。

関連情報