[Fedora 20]
- 安裝與 Kernel 相同版本的 kernel-devel 與 kernel-headers
- 可以由 uname -a 查出版號
# uname -a
Linux localhost.localdomain <html><font color=“red”>3.11.10-301.fc20.i686+PAE</font></html> #1 SMP Thu Dec 5 14:12:06 UTC 2013 i686 i686 i386 GNU/Linux - 相同版本的檔案可由原始光碟取出, 並使用 rpm 安裝
# rpm -ivh kernel-PAE-devel-3.11.10-301.fc20.i686.rpm
# rpm -ivh kernel-headers-3.11.10-301.fc20.i686.rpm - Make kernel, 但須要裝 gcc, g++ and ncurses
# yum install gcc
# yum install gcc-c++
# yum install ncurses-devel - make menuconfig
# make menuconfig - make
# make vmlinux ⇐=未經壓縮的核心
# make modules ⇐=僅核心模組
# make bzImage ⇐=經壓縮過的核心(預設)
# make all ⇐=進行上述的三個動作 - 但會有問題, 最後重新下載 kernel source 才可
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.11.10.tar.xz
[CentOS 5/6/7]
1. 或許你不需要整個內核的源代碼
如果你需要編譯一個內核的驅動程式(模塊),很可能你並不需要安裝整個內核源代碼。也許你只需要安裝 kernel-devel 這個套件。(然而,假若你肯定須要完整的源代碼目錄樹,請遁從第二部份的指示。)
CentOS-7 只有一個 kernel-devel 套件:
- kernel-devel(64 位元的架構)
CentOS-6 只有一個 kernel-devel 套件:
- kernel-devel(32 及 64 位元的架構)
CentOS-5 總共有三個 kernel-devel 套件:
- kernel-devel(32 及 64 位元的架構)
- kernel-xen-devel(32 及 64 位元的架構)
- kernel-PAE-devel(只支援 32 位元的架構)
如果你使用標準內核(舉個例說),你可以這樣安裝 kernel-devel:
[root@host]# yum install kernel-devel
你可以用這個指令來斷定使用中的內核版本:
[root@host]# uname -r
它的輸出會有以下的樣子:
2.6.18-412.el5xen
在這個範例裡,所安裝的內核是 xen,而安裝相關的 kernel-devel 套件的方法是:
[root@host]# yum install kernel-xen-devel
<!> 請確定你所安裝的 kernel-devel 套件吻合你所採用的內核。詳情請參閱這條常見問題。
如果你的內核因為來自較舊的目錄樹而未被 yum 列出,你可以手動式地從 CentOS Vault下載它。
CentOS-7:請在 7.N.YYMM/os/x86_64/Packages/ 或 7.N.YYMM/updates/x86_64/Packages/ 目錄內找尋 kernel-devel-版本.x86_64.rpm
CentOS-6:請在 6.N/os/arch/Packages/ 或 6.N/updates/arch/Packages/ 目錄內找尋 kernel-devel-版本.架構.rpm
CentOS-5:請在 5.N/os/arch/CentOS/ 或 5.N/updates/arch/RPMS/ 目錄內找尋kernel[-類型]-devel-版本.架構.rpm
當你安裝了合適的 kernel[-類型]-devel-版本.架構.rpm 套件,請嘗試編譯你的模塊。這樣做是應該行得通的。假若事實並非如此,請提供回饋給模塊的開發者,因為這是設計所有新內核模塊時應採用的編譯方式。