再コンパイルせずにvmlinuzを変更する方法

再コンパイルせずにvmlinuzを変更する方法

タイトルの通り、組み込みシステム用の 2 つの vmlinuz ファイルがハングしています。

また、ソースとコンパイラは持っていませんし、この組み込みシステムの開発者ももう働いていません。

最初の vmlinuz は 4 つのシリアル ポートと 2 つの VGA をサポートします。

2 番目の vmlinuz は 6 つのシリアル ポートと 1 つの VGA をサポートします。

6 つのシリアル ポートと 2 つの VGA をサポートする vmlinuz が必要です。

2 番目の vmlinuz から最初の vmlinuz にドライバーをコピーし、最初の vmlinuz 内の元のドライバーを置き換える方法はありますか?

答え1

2 番目の vmlinuz から最初の vmlinuz にドライバーをコピーし、最初の vmlinuz 内の元のドライバーを置き換える方法はありますか?

徹底的なリバースエンジニアリングとバイナリパッチを除けば、いいえ。

vmlinuz6 つのシリアル ポートと 2 つの VGA をサポートするものが欲しいです。

ソースなしでこれを達成するのはおそらく不可能です。

ソースがある場合でも、異なる機能を持つ 2 つのカーネルが提供されているという事実 (つまり、シリアルと VGA のトレードオフ) は、ハードウェアの制限 (FPGA / CPLD リソース?) がある可能性があることを意味します。

その装置が何であるかを知らなければ、推測することしかできません。


デバイスメーカーがBSPのソースを公開している場合(例:Yocto)、そこから調べることができるかもしれませんが、それでもコンパイルする必要があるでしょう。何か


デバイスがメインラインカーネルでサポートされている場合(つまり、すべてのソースがkernel.org リポジトリ)の場合は、構成を再作成して再構築できる可能性があります。

  1. システムを起動して実行しますuname -r- これはカーネルリリースです
    • 例えば4.15.0-48-genericv4.15リリース
  2. という名前のファイルを探します/proc/config.gz- 組み込みシステムや最近のシステムでは存在しない可能性があります
    • gzip -d < /proc/config.gz > ~/configこれは、カーネルの設定時に使用して解凍することができます。
    • これはカーネルが適切に設定されている場合にのみ利用可能です
      • ディストリビューションでは、これを無効化するケースが増えています。セキュリティ上の懸念
      • 組み込みシステムでは、カーネル イメージのサイズを縮小するために無効にすることができます。

カーネル構成を探すその他の場所としては/boot、関連するパッケージ内 (ディストリビューションを使用している場合) などがあります。


これらのいずれかまたは両方で結果が得られない場合、おそらく運が悪いことになります。

関連情報