insmod

2012-01-22 4 views
2

を使用して64ビットモジュールを32ビットカーネルにロードする64ビットプロセッサシステムでコンパイルされた.koファイル(カーネルオブジェクトファイル)を32ビットプロセッサシステムにロードできますか?insmod

私は私のシステムではinsmodのコマンドを発行したときに実際に、私は次のエラーを取得しています:

insmod: error inserting 'be2net.ko': -1 Invalid module format 
+0

私はできないと思います。 –

答えて

2

32ビットシステムで64ビットコードを実行することはできません。要件に応じて、逆も可能です(64ビットシステムでは32ビットソフトウェアまたはライブラリを実行)が、32ビットアーキテクチャでは64ビットコードを理解できません。システム上でモジュールをコンパイルする必要があります。

まず、カーネルソースをkernel.orgからダウンロードします。その後、一度そこ

linux/drivers/net/benet 

にあなたのために働く必要があります(あなたの通常のユーザーとして)タイプ

make 

、その後

sudo insmod be2net.ko 

を抽出し、そしてCD。

2

いいえ、32ビットカーネルに64ビットモジュールをロードすることはできません、そして、なぜそれがありますエラーが発生しています。その理由は、64ビットおよび32ビットプログラムに互換性のないABI(例えば、異なる呼び出し規約)があるためです。また、64ビットアプリケーションを32ビットライブラリとリンクできない理由もあります。

insmodは一般的に曖昧なエラーメッセージを表示します。より詳細なメッセージについては、dmesgの出力をご覧ください。

1

コンパイルされたプロセッサはまったく問題ではありません。コンパイラオプションとコンパイラオプションは重要です。 64ビットプロセッサ用にコンパイルされた場合は、別の命令セットを使用するため、32ビットプロセッサ上で実行することはできません。

ただし、64ビットプロセッサはクロスコンパイラを実行して32ビットのバイナリを作成できます。あなたがこれをしたことはありそうもありません。

関連する問題