web-dev-qa-db-ja.com

複数のマシンのハードウェアをサポートするlocalmodconfigを使用してカスタムカーネルを構築する方法

アプライアンスのように単一のタスクを実行するようにサーバーを構成する場合、カスタムカーネルを構築する必要が生じる可能性があります。たとえば、ディスク領域を節約します。

Ubuntu Core 13.10 AMD64 root filesystem is a 38 MB ダウンロード、ここで「linux-image必要な依存関係を含む-generic "メタパッケージはアーカイブ79 MBをダウンロードし、kernel-image-xyz-genericパッケージのサイズは- 14 MB

ハードウェアが使用しないモジュールから削除されたカーネルを構築するには、make localmodconfigコマンドは、ジョブに適したツールです。ただし、ビルドおよびテスト環境を実行する仮想マシンは、ターゲットのデプロイメントハードウェアとは異なるモジュールをロードします。またはしばらくすると、展開ハードウェアが機能しなくなり、別のハードウェアが使用されます。また、カーネルのアップデートがリリースされる頻度では、ハードウェア構成ごとにカスタムカーネルを構築するのが面倒になる可能性があります。

いくつかの異なるハードウェアボックスで動作するカスタムLinuxカーネルをすばやく構築する方法は?

9
Pro Backup

make localmodconfigコマンドは、依然としてジョブに適したツールです。実際 make localmodconfigscripts/kconfig/streamline_config.pl を実行します。

ファイル入力

streamline_config.pl(Perl)ソースコードを読み取る場合、文書化されていない機能my $lsmod_file = $ENV{'LSMOD'};があり、lsmodコマンドからの出力の代わりに、ロードされたモジュール検出用のファイル入力が可能です。

ライブCD

Localmodconfigは出力lsmodを使用して、ロードされたモジュールを検出するためです。さまざまなハードウェア設定のそれぞれでUbuntu Live CDを実行し、ターミナルを開きます(Ctrl+Alt+T)、lsmodを実行してその出力を保存します。

出力を連結する

lsmod出力ファイルを連結しながら連続するヘッダー行を削除することにより、必要なすべてのカーネルモジュールをカバーする入力ファイルをすばやく作成できます。モジュールリストを手動で確認し、より手動のレシピを使用します。

  1. $ cd linux-3.11.0/
    またはmakeコマンドを実行するディレクトリに移動します

  2. $ lsmod > lsmod.txt
    ロードされたモジュールでテキストファイルを作成します

  3. $ nano lsmod.txt
    ナノテキストエディターが開きます。もちろん、お気に入りのエディターアプリケーションを使用できます

  4. まだ存在していない必要なモジュールをこのファイルの最後に追加し(例:この回答の下部を参照)、準備ができたら保存します。
    注:タブではなくスペースを使用して、列集計の位置を一致させます。

  5. $ make LSMOD="lsmod.txt" localmodconfig
    これにより、localmodconfigがlsmod.txtファイルをロード済みモジュール検出の入力として使用するようになります

Steveline Rostedt(steamline_config.plの作者)に関して、ステップ5で短い表記を提案してくれました。


Lsmod.txtに追加するものと追加しないものの例(ステップ4):

Intel D33217CKメインボードには、読み取りたいIntel温度センサーがあるため、次の行を追加します

x86_pkg_temp_thermal   13810  0
intel_powerclamp       14239  0

しかし、このハードウェアで仮想マシンを実行したくないので、これらの行をスキップします

kvm_intel             128218  0
kvm                   364766  1 kvm_intel

Apple(Broadcom)GibabitイーサネットアダプタがThunderboltポートに接続されているため、以下を追加します:

tg3                   152066  0
ptp                    18156  1 tg3
pps_core               18546  1 ptp

ボリュームのミラーリングは必要ないと思われるため、追加しないでください:

dm_mirror              21715  0
dm_region_hash         15984  1 dm_mirror
dm_log                 18072  2 dm_region_hash,dm_mirror

また、グラフィックス出力(テキストはヘッドレスサーバーで実行されます)も必要ないため、次の項目は含めません

i915                  589697  3
i2c_algo_bit           13197  1 i915
drm_kms_helper         46867  1 i915
drm                   242354  4 i915,drm_kms_helper

別のマシンでは、さらにこのRealtekイーサネットドライバが必要です:

r8169                  61434  0
mii                    13654  1 r8169
11
Pro Backup