0

こんにちは、次の問題: 私はここでかなり奇妙な Linux ディストリビューション (Centos 5) を使用していますが、これには古いカーネル (または少なくともカーネルのいくつかの違い) があり、単純に更新することはできません。私がインストールする必要があるプログラムには、ファイル linux/crypto/api.c に含まれている関数 crypto_destro_tfm (さらに問題がありますが、現時点ではこれが唯一のエラーです) が必要です。問題は次のとおりです。私のディストリビューションには、crypto/api.c さえありません。モジュール crypto_api.ko はありますが、この関数はそこにないようです。

私の計画は次のとおりです。新しい Linux ディストリビューションから crypto_api を取得し、それをコンパイルしてモジュールを centos にロードします。

そのモジュールを再構築して交換するために何をする必要があるか教えてください。もちろん、新しいカーネルのすべてのソース ファイルがあります。(思い出してください:私は単純に再コンパイルして新しいカーネルを使用することはできません.b/c centosはこの方法ではうまくいきません)ありがとう

FWIW: これが正確なエラーです

警告: "crypto_destroy_tfm" [/home/Chris/digsig-patched/digsig_verif.ko] 未定義!

4

2 に答える 2

0

API の変更を古いカーネルにバックポートすると、一連の問題が発生する可能性が高くなります。バージョン 2.6.Y の crypto API をローカル バージョンの 2.6.X にバックポートするとします。

今、次の状況があります。

  • モジュール crypto api エクスポート 2.6.Y 関数
  • あなたの外部モジュールはその状況に満足しているかもしれません
  • 暗号 API のバージョン 2.6.X に依存する他のすべてのモジュールは文句を言います。

しかし待ってください。最近のカーネル コードを問題のあるすべてのモジュールにバックポートすることができます。

CentOS カーネルを更新できない場合は、CentOS カーネルには「バニラ」カーネルを使用するときに失うことを恐れる多くのカスタム コードが含まれているため、外部の「ダウングレード」する方が簡単な作業であることがわかる場合があります。モジュール:

  • 現在の暗号化 API を確認します (たとえば、lxr.linux.no を使用)
  • この API のカーネル バージョンを確認します。
  • 新しい API を古い API の呼び出しに置き換えて、同様の機能を提供する方法を確認してください。
  • 外部モジュールを変更して、新しい API の代わりに古い API を使用します。

いずれにせよ、カーネルをバニラのものに置き換えることはできないかもしれませんが、少なくともそれを再構築し、パッチを当てて再構築することはできるはずです...この単純なタスクを実行できない場合、その後、何かをバックポートしても成功するとは思いません。

于 2011-02-28T16:00:02.727 に答える
0

モジュールを含む新しいバージョンの CentOS から SRC RPM をダウンロードして、CentOS 5 で RPM を再コンパイルしてみてください。

rpmbuild --rebuild kernel-X.XX-X.src.rpm

私は比較する CentOS のコピーを持っていないので、rpm/rpmbuild の man ページを読むことをお勧めしますが、カーネルとそのすべてのモジュールを含むパッケージ全体を再コンパイルする方が、新しいカーネルから 1 つのモジュールを移植します。何かの新しいパッケージが必要なときに、Debian/Ubuntu でこれを行うことがあります。

于 2011-04-02T07:40:34.390 に答える