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


9

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

Ubuntu Core 13.10 amd64ルートファイルシステムは38 MBのダウンロードで、必要な依存関係を含む「linux-image-generic」メタパッケージは79 MBのアーカイブをダウンロードし、kernel-image-xyz-genericパッケージのサイズは14 MBのままです。

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

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

回答:


11

make localmodconfigこのコマンドは、まだ仕事のための適切なツールです。実際にmake localmodconfig実行されscripts/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
    nanoテキストエディターが開きます。もちろん、お気に入りのエディターアプリケーションを使用できます

  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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.