本次內核編譯環境
平臺 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 gconfig
和make 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文件系統。
設置編譯版本號
- 第一步
image.png
- 第二步
image.png
- 在這里填寫你的編譯版本號,
image.png
設置文件系統
- 第一步
image.png
- 第二步,進入文件系統設置后,下拉到底部,選擇
DOS/FAT/NT Filesystems
image.png
- 第三步,選擇
NTFS file system support
image.png
- 第四步,按空格鍵選擇安裝,選擇好后保存退出。
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以及編輯器備份文件