[原]在Fedora 20環境下安裝系統內核源代碼


1、安裝Kernel Headers(頭文件)

  通過安裝kernel-devel RPM包就可以得到Kernel Headers,但默認情況下沒有被Fedora 20安裝。通過DVD ISO 或者 yum在線安裝的方式都可以安裝系統內核頭文件,這里先查看一下系統的內核版本:

[root@localhost SPECS]# uname -rm
3.16.2-200.fc20.x86_64 x86_64

  然后使用yum在線安裝Kernel Headers:

[root@localhost SPECS]# yum install kernel-devel

2、下載並安裝內核源代碼

  在大多數情況下,有了Kernel Headers文件就可以編譯系統相關的文件了,不需要再下載安裝內核源代碼。如果確實需要,則需要進行以下四個步驟來完成:

2.1 准備rpm編譯環境

  編譯內核源代碼包需要借助兩個工具:yum-utils和rpmdevtools。在線安裝這兩個工具的方式如下: 

[root@localhost ~]# yum install yum-utils rpmdevtools

   安裝這兩個工具之后,可以使用如下命令生成源代碼安裝目錄(將會在當前用戶目錄下生成rpmbuild子目錄):

[root@localhost ~]# rpmdev-setuptree

2.2 下載與當前環境匹配的內核源代碼

  使用yum在線下載內核源代碼的命令如下:

[xiaoku@localhost Downloads]$ sudo yumdownloader --source kernel

 2.3 安裝SRC.RPM源碼包

  切換到源代碼文件所在的目錄,執行如下命令安裝內核的依賴性文件:

[root@localhost Downloads]# yum-builddep ./kernel-3.16.2-200.fc20.src.rpm

   注意,這里我使用的是root用戶,如果是普通用戶,請在前面添加sudo或者su -c加單引號。我在做的過程中發現安裝了不少的依賴性文件,包括如下內容:

已安裝:
  asciidoc.noarch 0:8.6.8-3.fc20                                                
  audit-libs-devel.x86_64 0:2.4-1.fc20                                          
  binutils-devel.x86_64 0:2.23.88.0.1-13.fc20                                   
  bison.x86_64 0:2.7-3.fc20                                                     
  elfutils-devel.x86_64 0:0.158-4.fc20                                          
  flex.x86_64 0:2.5.37-4.fc20                                                   
  hmaccalc.x86_64 0:0.9.13-1.fc20                                               
  newt-devel.x86_64 0:0.52.16-2.fc20                                            
  pciutils-devel.x86_64 0:3.2.1-2.fc20                                          
  perl-ExtUtils-Embed.noarch 0:1.30-289.fc20                                    
  python-devel.x86_64 0:2.7.5-13.fc20                                           
  xmlto.x86_64 0:0.0.25-7.fc20                                                  

作為依賴被安裝:
  boost-regex.x86_64 0:1.54.0-9.fc20                                            
  ctags.x86_64 0:5.8-12.fc20                                                    
  docbook-dtds.noarch 0:1.0-62.fc20                                             
  docbook-style-xsl.noarch 0:1.78.1-2.fc20                                      
  elfutils-libelf-devel.x86_64 0:0.158-4.fc20                                   
  graphviz.x86_64 0:2.34.0-8.fc20                                               
  gts.x86_64 0:0.7.6-23.20111025.fc20                                           
  lasi.x86_64 0:1.1.1-7.fc20                                                    
  netpbm.x86_64 0:10.61.02-8.fc20                                               
  sgml-common.noarch 0:0.6.3-40.fc20                                            
  slang-devel.x86_64 0:2.2.4-11.fc20                                            
  source-highlight.x86_64 0:3.1.6-6.fc20                                        

完畢!
View Code

   安裝的過程比較簡單,但是默認會提示缺少用戶mockbuild和組mockbuild,所以我干脆輸入如下命令:

[root@localhost Downloads]# groupadd mockbuild
[root@localhost Downloads]# useradd mockbuild -g mockbuild
[root@localhost Downloads]# rpm -ivh kernel-3.16.2-200.fc20.src.rpm 
正在升級/安裝...
   1:kernel-3.16.2-200.fc20           ################################# [100%]

2.4 使用rpmbuild編譯源碼包

  進入SPECS目錄,准備編譯源代碼:

[xiaoku@localhost Downloads]$ cd ~/rpmbuild/SPECS/
[xiaoku@localhost SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec
構建目標平台:x86_64
為目標x86_64構建
錯誤:構建依賴失敗:
    pesign >= 0.10-4 被 kernel-3.16.2-200.fc20.x86_64 需要
[xiaoku@localhost SPECS]$ sudo yum install pesign

   從上面的提示信息可以看出,第一次編譯出了點問題,說是需要pesign版本大於0.10-4,這樣的話手動yum在線安裝一下即可。再次執行上述rpmbuild命令,就能夠完成編譯任務了。可以從用戶目錄下看到如下的情況:

[xiaoku@localhost kernel-3.16.fc20]$ pwd
/home/xiaoku/rpmbuild/BUILD/kernel-3.16.fc20
[xiaoku@localhost kernel-3.16.fc20]$ ls
linux-3.16.2-200.fc20.x86_64  vanilla-3.16

   這里有兩個重要的目錄:

1、linux-3.16.2-200.fc20.x86_64/arch 

  這里有包含了Fedora 補丁和更新的標准kernel.org內核源碼。系統架構與uname -m的輸出相匹配,如果有需要,你可以讓–target=選項使用noarch參數。 
2、
vanilla-3.16/

  這里只包含標准的kernel.org的kernel(沒有補丁和更新)。

詳細內容請參考從RPM包構建完整Fedora內核 官方WIKI


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM