web-dev-qa-db-ja.com

「/ lib / modules / $(uname -r)/ build」が間違ったフォルダーを指していると思います

カーネルの独自のdebパッケージをコンパイル/作成します:

make-kpkg --rootcmd fakeroot --initrd --append-to-version=$version --revision=1 kernel_image kernel_headers

しかし、両方のパッケージを/ lib/modules /(* name_kernel_compiled *)にインストールすると、コンパイル済みの2つのリンクsources and buildが作成され、ソースのあるフォルダーを指します。

ソースリンクは正しいが、ビルドは/ usr/src/linux---(バージョンカーネル)を指している必要がありますか?

5
Juan Simón

ソリューションはmake-kpkgドキュメントにあります:

Examplesディレクトリにある他の例を見ることができます:/usr/share/kernel-package/examples/cp/etc/kernelにしたい他のサンプルスクリプトがあるかどうかを確認します。


たとえば、linux-headers-*パッケージを使用してサードパーティのモジュールをコンパイルし、sourcesディレクトリを保持する必要がない場合、次のことに興味があるかもしれません。

/etc/kernel/header_postinst.d/link
/etc/kernel/header_postrm.d/link
/etc/kernel/header_prerm.d/link
/etc/kernel/postinst.d/force-build-link
/etc/kernel/postrm.d/force-build-link

これらのスクリプトは、シンボリックリンク/lib/modules/$VERSION/buildが正しいことを確認しようとします。つまり、最初にイメージパッケージをインストールするか、ヘッダーパッケージを最初にインストールするかに関係なく、ヘッダーパッケージを指します。パッケージがインストールされます。

2
Juan Simón

/lib/modules/<version>/buildシンボリックリンクは、ビルドディレクトリ、つまり、カーネルのビルド中にオブジェクトファイルが配置された場所を指す必要があります。あなたの場合、ソースディレクトリはビルドディレクトリと同じであるため、両方のシンボリックリンクは同じディレクトリを指します。

3
Jeremy Kerr