前言
- Linux操作系統(tǒng)最重要的部分莫過于內(nèi)核了,它負責管理系統(tǒng)的進程、內(nèi)存、驅(qū)動程序、文件系統(tǒng)和網(wǎng)絡系統(tǒng),系統(tǒng)的性能和穩(wěn)定性也由內(nèi)核來決定。由于Linux是開源的,因此Danny就在想,能不能自己將Linux內(nèi)核源碼進行編譯,根據(jù)自己的需求打造一個更高效、更穩(wěn)定的Linux內(nèi)核呢?下面Danny以Ubuntu為例帶你學習如何編譯Linux內(nèi)核。
1.下載Linux內(nèi)核源碼壓縮包
- 首先去Linux內(nèi)核官網(wǎng)(http://www.kernel.org)下載Linux內(nèi)核的壓縮文件。
2.解壓內(nèi)核源碼并復制到/usr/src下
在此說明一下,一般都將內(nèi)核源碼放到/usr/src下,并創(chuàng)建鏈接linux,類似快捷方式,便于切換到內(nèi)核路徑下。**
我下載的內(nèi)核版本是:linux-4.19.1.tar.xz;接著將內(nèi)核源碼壓縮包解壓并復制到/usr/src路徑下,此時可能需要1-2分鐘時間;解壓時注意一下你的內(nèi)核源碼所在的路徑,例如我的是在虛擬機的共享文件夾下;之后切換到/usr/src路徑下,再創(chuàng)建一個名為linux的鏈接:**
root@dannylinux:/# tar xf /mnt/hgfs/Desktop/ubuntu/linux-4.19.1.tar.xz -C /usr/src/
root@dannylinux:/usr/src# ln -sv linux-4.19.1 linux
- 此時,輸入:
root@dannylinux:/usr/src# ls
- 就可以看到生成了一個名為linux-4.19.1的文件夾和一個名為linux的鏈接。
3.安裝編譯環(huán)境
- 由于Danny在編譯Linux內(nèi)核時遇到了各種坑,為了讓大家少走坑,我們先安裝編譯時需要的依賴環(huán)境:
root@dannyLinux:/# sudo apt-get install gcc
root@dannyLinux:/# sudo apt-get install make
root@dannyLinux:/# sudo apt-get install ncurses-dev
root@dannyLinux:/# sudo apt-get install bison
root@dannylinux:/# sudo apt-get install flex
root@dannylinux:/# sudo apt-get install libssl-dev
root@dannyLinux:/# sudo apt-get install libelf-dev
4.配置
root@dannylinux:/usr/src/linux# make menuconfig`
-
使用默認配置,save 后 exit
image
image
image
image
- 注意:在我踩過深坑之后,才知道,Makefile是有問題的,要修改595行在開頭加一橫杠“-”,不然你會浪費n多小時。
image
5.編譯(4線程編譯)
- 編譯時間大概在兩個小時左右,根據(jù)你的電腦配置來決定。**
root@dannylinux:/usr/src/linux# make -j 4
- 編譯好之后,我們將進行下一步安裝內(nèi)核模塊。
6.安裝內(nèi)核模塊
root@dannylinux:/usr/src/linux# sudo make modules_install
- 此步完成之后,在/lib/modules/路徑下就會生成一個以版本號命名的一個內(nèi)核模塊了,快大功告成了,繼續(xù)安裝內(nèi)核。
7.安裝內(nèi)核
root@dannylinux:/usr/src/linux# sudo make install
安裝完內(nèi)核之后,會在/boot/路徑下生成一個內(nèi)核文件vmlinuz-4.19.1和其他幾個文件。
到此Linux內(nèi)核就編譯完了,可以打開grub.cfg配置文件看一下,會有一個新的版本:
root@dannylinux:/usr/src/linux# vim /boot/grub/grub.conf
別著急,你以為重啟就好了吧(如果是安在物理機上重啟是可以了),但是如果安裝在虛擬機上,要將內(nèi)存調(diào)至4G才可以,不然會報內(nèi)存不足的錯誤。
然后重啟吧,進入啟動項會提示你選擇內(nèi)核版本,這時候你選擇ubuntu4.19.1就可以使用你新編譯的Lniux內(nèi)核了!
原創(chuàng)申明:本文為DannyWu原創(chuàng),轉(zhuǎn)載務必注明本文鏈接,否則視為侵權(quán)!