私は基本的にUbuntu 20.04のLayerscapeを実行するNXP Layerscape LS1012A開発ボード(FRWY)を持っています。 MurataのType 1XL PCIe WiFiモジュール(NXP WiFiチップ88W9098を使用)を開発ボードのPCIeスロットに接続し、ドライバを作成するために必要なすべてのバイナリを入手しました。
「make build」コマンドの使用に問題があります。私が読んだのは、ビルドするカーネルを正しく設定していないためです(私はカーネル5.10.35を使用しています)。このドライバのビルドを実行できるようにカーネルディレクトリを正しく設定/ビルド/準備する方法を知っている人はいますか?
答え1
一般に、カーネルモジュール(ドライバ)をビルドするための最初の要件は、ドライバをビルドしたい正確なカーネルバージョンのビルドヘッダを持つことです。ディストリビューションによっては、kernel-headers-<kernel version number>
(Fedora / RHELスタイル)またはlinux-headers-<kernel version number
(Debian / Ubuntuスタイル)にパッケージ化することができます。一部のディストリビューションでは、別のヘッダーパッケージを省略し、カーネルソースパッケージ全体をインストールしてカーネルモジュールを構築することができます(SuSEはこれを行うか、少なくとも慣れていると思います)。
したがって、Ubuntuなどのディストリビューションの場合は、まだ実行していない場合はこれを行うapt-get install linux-headers-$(uname -r)
必要があります。また、apt-get install build-essential
コンパイラと必要なすべての基本ツールがあることを確認する必要があります。
ここでの問題の1つは、最近システムを更新しましたが、まだ再起動していない場合です。パッケージマネージャは、多くの場合、複数のカーネルバージョンが共存することを許可しますが、明示的に指示しない限り、通常は最新バージョンのビルドヘッダのみを保持します。したがって、パッケージマネージャは更新されたカーネルをインストールし、次回の再起動時にアクティブになるのを待ち、一致するようにビルドヘッダも更新した可能性があります。それカーネル...これはモジュール用のモジュールの作成を防ぎます。現在のコア。
/lib/modules/$(uname -r)/build
通常、圧縮カーネルを使用し、カーネルバージョンのヘッダーを含む適切なパッケージをインストールした場合は、ヘッダーを含むディレクトリを指すシンボリックリンクが必要です。通常、サードパーティのモジュール/ドライバのビルドプロセスはそれを使用して、現在のカーネルのビルドヘッダを自動的に見つけることができます。
独自のカスタムカーネルを構築する場合は、これらのシンボリックリンクを直接作成できます。カーネルの構築に使用されたLinuxソースツリーのルートを指すだけです。たとえば、
ln -s /usr/local/src/linux-5.10.35 /lib/modules/5.10.35/build