Linux內核編譯

本次內核編譯環境

平臺 CentOS 7(字符終端)
編譯內核版本 4.12,內核可以去官網https://www.kernel.org/下載
yum安裝開發包組

1. 解壓內核壓縮包,安裝開發包組

[root@lCentos ~]# ls                                #查看下載文件
linux-4.12.tar.xz                                  #下載好的的內核文件
[root@Centos ~]# tar xf linux-4.12.tar.xz          #使用 tar xf 解壓內核壓縮包
[root@Centosn ~]# ls                                #查看解壓后的內核文件
linux-4.12  linux-4.12.tar.xz                      
[root@Centos ~]# cd linux-4.12                     #進入內核源碼目錄
[root@Centos linux-4.12]# cp /boot/config-3.10.0-514.el7.x86_64 .config
                          #復制現有內核的config文件,并改名為.config,在現有內核配置上進行修改。
[root@CentosCentosCentosCentosCentosCentos linux-4.12]# yum -y groupinstall 'Development Tools'  #使用yum安裝開發包組

2. 編輯.config配置文件

1. make config         :基于命令行以遍歷的方式去配置內核中可配置的每個選項
2. make menuconfig     :基于curses的文本窗口界面(推薦在字符終端中使用)
3. make gconfig        :基于GTK (GNOME)環境窗口界面(推薦圖形界面使用)
4. make xconfig        :基于QT(KDE)環境的窗口界面支持“全新配置”模式進行配置(推薦圖形界面使用)
5. make defconfig      :基于內核為目標平臺提供的“默認”配置進行配置
6. make allyesconfig   : 所有選項均回答為“yes“
7. make allnoconfig    : 所有選項均回答
8. make ARCH=arch_name :編譯的目標平臺與當前平臺不相同

因為本次編譯是在字符終端中,所以這里選擇使用make menuconfig編輯配置文件。如果圖形界面下編譯推薦按照自己的使用的圖形界面軟件選擇make gconfigmake xconfig中的一種。最后一項根據平臺編譯可以是使用幫助命令make ARCH=arch_name help來查看特定目標平臺的幫助。

[root@Centos linux-4.12]# yum -y install ncurses-devel         #使用 make menuconfig 需要安裝軟件包 “ncurses-devel"
root@Centos linux-4.12]# make menuconfig                       #軟件包安裝好后開始編輯配置文件                
menuconfig界面.jpg
1. 64-bit kernel 
2. General setup                       #普通設置
3. Enable loadable module support 
4. Enable the block layer  
5. Processor type and features  
6. Power management and ACPI options  
7. Bus options (PCI etc.)  
8. Executable file formats / Emulations  
9. Networking support    #網絡設置
10. Device Drivers       #關于硬件的設置
11. Firmware Drivers     #防火墻
12. File systems         #文件系統
13. Kernel hacking                             #kernelhacking"菜單中的很多特性和設置包含了關于內核本身的很多設置。這些特性是調試工具,并有一些控制著內核的行為。
14. Security options  
15. Cryptographic API 
16. Virtualization 
17. Library routines 

選項“[]”表示

1. “*”表示集成在內核中
2. “m”表示以模塊化方式安裝
3. 空表示不安裝

示例:在現有內核配置的基礎上讓內核支持NTFS文件系統。

設置編譯版本號

  1. 第一步
image.png
  1. 第二步
image.png
  1. 在這里填寫你的編譯版本號,
image.png

設置文件系統

  1. 第一步
image.png
  1. 第二步,進入文件系統設置后,下拉到底部,選擇DOS/FAT/NT Filesystems
image.png
  1. 第三步,選擇NTFS file system support
image.png
  1. 第四步,按空格鍵選擇安裝,選擇好后保存退出。
image.png

編譯,編譯完成后,主要生成了./arch/x86/boot/bzImage和initrd.image文件

[root@Centos linux-4.12]# make -j 1 

如果編譯過程中提示出現錯誤,一般都是缺少軟件引起的,按照他的提示安裝那個軟件包就行了,

scripts/sign-file.c:25:30: fatal error: openssl/opensslv.h: No such file or directory 
#出這個錯誤提示是因為opensll引起的安裝下面這個軟件包就行了
yum install openssl-devel 

還可以只編譯內核的一部分功能:

1. 只編譯某子目錄中的相關代碼
  make 子目錄
2. 只編譯一個特定的模塊
   make dir/file.ko
例如:只為e1000編譯驅動:
 make drivers/net/ethernet/intel/e1000/e1000.ko

安裝內核和內核模塊

make install                        #安裝內核 
make modules_install                #安裝驅動

內核安裝好后,重啟主機就可以在啟動項看到編譯好的內核了。

打包工具

1. make rpm       :生成內核的RMP包 
2. make rpm-pkg   :生成帶源碼的RPM包 
3. make binrpm-pkg:生成包含內核和驅動的RMP包
4. make deb-pkg   :生成包含內核和驅動的debian包

打包之后就可以通過安裝軟件的方式來安裝內核了。

生成文檔工具

1. make xmldocs :生成xml文檔 
2. make pdfdocs :生成pdf文檔 
3. maek htmldocs:生成html文檔

清理編譯產生的文件

1. make clean    :清理大多數編譯生成的文件,但會保留config文件等
2. make mrproper :清理所有編譯生成的文件、config及某些備份文件
3. make distclean:mrproper、patches以及編輯器備份文件
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 我們說的Linux其實指的就是 內核(kernel)而已。這個內核控制你主機的所有硬件并提供系統所有的功能,所以它...
    Zhang21閱讀 7,464評論 0 18
  • 一:前言 1:內核的概念: Kernel(內核)是操作系統的核心,掌控著所有硬件設備的控制權。計算機所要完成的各項...
    芷_念閱讀 2,204評論 0 3
  • 首先讓我們腦補一下什么是系統調用,個人理解系統調用就是調用系統函數(內核狀態下的函數)。在linux系統中,用戶通...
    litesky閱讀 4,536評論 0 2
  • 冬日的金色陽光之下,我們開始每日的工作。金色的陽光溫柔的親撫這地上的人,縱使生活壓在每個人身上的擔子都很重,這陽光...
    愛讀書的李大仁閱讀 326評論 0 1
  • Stage 1: Stored XSS 進入tom的編輯頁面,將任意輸入框中的數據改為 alert(/xss/);...
    斷弦Kaka閱讀 1,367評論 0 0