Differences between revisions 190 and 191

Deletions are marked like this. Additions are marked like this.
Line 98: Line 98:
[user@host]$ rpm -i http://vault.centos.org/6.10/updates/Source/SPackages/kernel-2.6.32-754.6.3.el6.src.rpm 2>&1 | grep -v exist [user@host]$ rpm -i http://vault.centos.org/6.10/updates/Source/SPackages/kernel-2.6.32-754.9.1.el6.src.rpm 2>&1 | grep -v exist
Line 114: Line 114:
~-Translation of revision 328-~ ~-Translation of revision 330-~

我需要內核的源代碼

英文版由 JohnnyHughes 建立。現時由 AlanBartlettAkemiYagi 維護。

1. 或許你不需要整個內核的源代碼

如果你需要編譯一個內核的驅動程式(模塊),很可能你並不需要安裝整個內核源代碼。也許你只需要安裝 kernel-devel 這個套件。(然而,假若你肯定須要完整的源代碼目錄樹,請遁從第二部份的指示。)

CentOS-7 只有一個 kernel-devel 套件:

  • kernel-devel(64 位元的架構)

(請留意 AltArch i386 特別興趣小組提供 32 位元 CentOS-7。)

CentOS-6 只有一個 kernel-devel 套件:

  • kernel-devel(32 及 64 位元的架構)

你可以這樣安裝 kernel-devel 套件:

[root@host]# yum install 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

當你安裝了合適的 kernel[-類型]-devel-版本.架構.rpm 套件,請嘗試編譯你的模塊。這樣做是應該行得通的。假若事實並非如此,請提供回饋給模塊的開發者,因為這是設計所有新內核模塊時應採用的編譯方式。

2. 如果你真的需要整個內核的源代碼

如果你真的因為某個原因需要整個內核的源代碼,它是有被提供的。

以一個不是 root 用戶的戶口,建立一個以 ~/rpmbuild 為基礎的目錄樹:

[user@host]$ mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
[user@host]$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

<!> 我們強烈建議你不要以 root 的身份建立套件。(見:Building Source RPM as non-root under CentOS


要在 CentOS-7 安裝源代碼套件及工具

以 root 的身份安裝 asciidoc、audit-libs-devel、bash、bc、binutils、binutils-devel、bison、diffutils、elfutils、elfutils-devel、findutils、flex、gawk、gcc、gettext、gzip、hmaccalc、hostname、java-devel、m4、make、module-init-tools、ncurses-devel、net-tools、newt-devel、numactl-devel、openssl、patch、pciutils-devel、perl、perl-ExtUtils-Embed、pesign、python-devel、redhat-rpm-config、rpm-build、sh-utils、tar、xmlto、xz 及 zlib-devel 套件:

[root@host]# yum install asciidoc audit-libs-devel bash bc binutils binutils-devel bison diffutils elfutils
[root@host]# yum install elfutils-devel findutils flex gawk gcc gettext gzip hmaccalc hostname java-devel
[root@host]# yum install m4 make module-init-tools ncurses-devel net-tools newt-devel numactl-devel openssl
[root@host]# yum install patch pciutils-devel perl perl-ExtUtils-Embed pesign python-devel redhat-rpm-config
[root@host]# yum install rpm-build sh-utils tar xmlto xz zlib-devel

從這些地方找尋內核的源代碼套件:

(請以相關的副版本編號、年度及月份取代 N.YYMM。)

以一個不是 root的普通戶口,執行以下指令來安裝源代碼套件:

[user@host]$ rpm -i http://vault.centos.org/7.6.1810/os/Source/SPackages/kernel-3.10.0-957.el7.src.rpm 2>&1 | grep -v exist


要在 CentOS-6 安裝源代碼套件及工具

以 root 的身份安裝 asciidoc、audit-libs-devel、bash、binutils、binutils-devel、bison、bzip2、diffutils、elfutils-devel、elfutils-libelf-devel、findutils、flex、gawk、gcc、gnupg、gzip、hmaccalc、m4、make、module-init-tools、net-tools、newt-devel、patch、patchutils、perl、perl-ExtUtils-Embed、python、python-devel、redhat-rpm-config、rpm-build、sh-utils、tar、xmlto 及 zlib-devel 套件:

[root@host]# yum install asciidoc audit-libs-devel bash binutils binutils-devel bison bzip2 diffutils elfutils-devel
[root@host]# yum install elfutils-libelf-devel findutils flex gawk gcc gnupg gzip hmaccalc m4 make module-init-tools
[root@host]# yum install net-tools newt-devel patch patchutils perl perl-ExtUtils-Embed python python-devel
[root@host]# yum install redhat-rpm-config rpm-build sh-utils tar xmlto zlib-devel

從這些地方找尋內核的源代碼套件:

(請以相關的副版本編號取代 N。)

以一個不是 root 用戶的戶口,執行以下指令來安裝源代碼套件:

[user@host]$ rpm -i http://vault.centos.org/6.10/updates/Source/SPackages/kernel-2.6.32-754.9.1.el6.src.rpm 2>&1 | grep -v exist


現在源代碼套件已經安裝了,請解壓及預備源代碼檔案

[user@host]$ cd ~/rpmbuild/SPECS
[user@host SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec

$(uname -m) 這個值將目標架構設定為你的現有內核的架構。一般來說這是可行的,因為多數人需要以 i686 或 x86_64 為目標。

現在內核的源代碼目錄樹可以在 ~/rpmbuild/BUILD/kernel*/linux*/ 這個目錄內找得到。

Translation of revision 330

zh-tw/HowTos/I need the Kernel Source (last edited 2018-12-10 20:40:34 by TimothyLee)