1

ソースコードなしでモジュールをビルド/挿入できるかどうか疑問に思っています。たとえば、openSuse オペレーティング システムをダウンロードしたのに、カーネル ソース コードが同梱されていなかったとします。モジュールをコンパイルして、カーネルを再コンパイルせずにモジュールを挿入するにはどうすればよいですか?

カーネル ソース コードのない openSuse の場合、まったく同じバージョンのソース コードを見つけるのは非常に困難です。カーネルの構成が異なっていても、現在の openSuse 内にモジュールを挿入することはできません。

しかし、これは業界ではあり得ないことですよね?ドライバーを作成して、ユーザーに最新バージョンのソース コードをダウンロードさせ、正しい構成を理解させることはできません。

この問題は業界でどのように解決されていますか?気になります。私はこれに比較的慣れていません。

4

3 に答える 3

3

モジュールをビルドするには、ソース コード全体ではなく、カーネル ヘッダーが必要です。NVidia はこの方法でカーネル モジュールを再構築します。これは、業界が問題を解決した方法の 1 つです。Linux はバイナリのみのモジュールに対してあまり友好的ではなく、実際、カーネル開発者はバイナリのみのモジュールを壊すために ABI と構造を定期的に変更していました。

于 2012-05-04T21:59:53.383 に答える
0

あなたがハードウェア メーカーである場合、理想的には公式の Linux 開発ツリーでドライバーを取得して、最終的にすべてのディストリビューションがそれを継承するようにします。あなたは間違いなく、元の提出物に対して率直なフィードバックを得るでしょう。それを受け入れるには、コーディング スタイル/品質、インターフェイスの選択など、メンテナーが主張する変更を行う必要があります。

バイナリのみのディストリビューションが既に搭載されているボードを購入する少量のインテグレーターである場合は、技術的な課題に加えて、おそらく最終的な顧客から何らかの悲しみ (またはさらに悪いこと) を受けることになることを認識してください。そのソースを取得するように要求します。

社内でのみ使用する場合は、技術的な課題があります。アップストリームでサポートされている変更されていないアーキテクチャの場合、必要なものがわかれば、おそらく Suse から、またはアップストリーム ツリーから、十分に近いカーネル ヘッダーのセットを取得できます。ただし、ボードに公式にサポートされていない (公開データ シートがない) ハードウェアがあり、未公開のカーネル パッチや未公開の gcc パッチに依存している場合は、難しい状況にあります。ただし、ソースからビルドできるコンパイラを使用して、独自のカーネル フォーム ソースをビルドできるように、ハードウェアの独自性を十分にリバース エンジニアリングできない限り。現在、多くのグレーマーケットの Android タブレットがそのような行き詰まりに陥っています。

最終的に、ソースから再作成できない Linux や gcc などのソフトウェア ベースのバイナリにプロジェクトが依存している場合、危険な立場に置かれます。偶発的な内部使用以上のものを意図したプロジェクトである場合は、必要なサポート コード、または少なくともそれを再実装するために必要なデータ シートの詳細が公開されているプラ​​ットフォームへの切り替えを検討する必要があります。

于 2012-05-05T20:49:48.163 に答える