2013-10-21 57 views
4

我從git存儲庫編譯了各種Linux內核。有時我將內核複製到其他系統並需要內核頭文件來編譯外部模塊。如何提取內核頭文件以便稍後編譯內核模塊

我試圖運行「make headers_install」,但它只生成一個include /文件夾。當我試圖將外部模塊指向該文件夾時,它會抱怨找不到Makefile。

什麼是打包內核頭部署的正確方法?

謝謝。

+0

你是什麼意思?有時我將內核複製到其他系統,需要內核頭文件來編譯外部模塊。將內核根目錄複製到另一個系統?如果是的話,那麼你只需要找出如何通過提供構建內核的路徑來構建模塊。 –

+0

@VivekS我不想將整個內核根目錄複製到另一個系統,因爲它是一個git樹,所以它很大。我只想複製內核源碼的快照。即使如此,我也不想使用git歸檔文件,因爲對於構建內核模塊,我不需要.c文件。 – Patrick

回答

3

改爲創建內核包,這是基於dpkg的發行版的「make deb-pkg」,基於RPM的發行版是「make rpm-pkg」。這些創建多個包,其中一個是可用於外部模塊構建的包。這應該是Debian軟件包的linux-headers- *和RPM版本的「devel」軟件包。

+0

這幾乎就是我正在尋找的東西。如果它只生成頭文件,它會是完美的,因爲我的內核映像很大(〜500MB),所以需要一段時間才能生成未使用的內核映像。儘管如此,如果沒有別的,這是一個可行的解決方案! – Patrick

+0

我剛剛發現還有一個binrpm-pkg目標,它至少不應該構建源代碼包(除非devel包被視爲源包,我不知道)。 Makefile和腳本都在腳本/包中。我對RPM的構建知之甚少,但如果你這樣做了,你可以在Makefile中修改rpm調用來構建你需要的包。 –

+0

在Debian上,有'kernel-package'包中的'make-kpkg'程序;我發現爲安裝構建內核映像和頭文件的最簡單方法。 –

0

在某些方面,這只是the previous answer的擴展。如果您查看內核源代碼中的scripts/package/builddeb文件,您會發現腳本代碼,用於從內核構建中選擇構建外部模塊所需的文件,並將它們放入/ usr/src/linux-headers- $ version。通過在builddeb文件中搜索字符串「#Build kernel header package」,我可以在我的本地內核版本中找到該腳本代碼。如果您想手動執行該操作,則可以手動執行該腳本代碼。