CentOS Wiki
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Navigation

  • FrontPage
  • Documentation
  • TipsAndTricks
  • HowTos
  • FAQ
  • Events
  • Contribute
  • ReportBugs
  • RecentChanges

Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

  • zh-tw
  • HowTos
  • I_need_the_Kernel_Source

我需要內核的源代碼

英文版由 JohnnyHughes 建立。現時由 AlanBartlett 及 AkemiYagi 維護。

Contents

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

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

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

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

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

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

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

[root@host]# yum install kernel-devel

如果你的內核因為來自較舊的目錄樹而未被 yum 列出,你可以手動式地從 CentOS Vault下載它。

請在 7.N.YYMM/os/x86_64/Packages/ 或 7.N.YYMM/updates/x86_64/Packages/ 目錄內找尋 kernel-devel-版本.x86_64.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、elfutils-libelf-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、python-docutils、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 elfutils-libelf-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 python-docutils redhat-rpm-config
[root@host]# yum install rpm-build sh-utils tar xmlto xz zlib-devel

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

  • http://vault.centos.org/7.N.YYMM/os/Source/SPackages/

  • http://vault.centos.org/7.N.YYMM/updates/Source/SPackages/

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

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

user@host]$ rpm -i http://vault.centos.org/7.9.2009/updates/Source/SPackages/kernel-3.10.0-1160.11.1.el7.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 377

  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01