編譯內核源碼(linux 4.3.3)

我終於編譯成功了,可以說我編譯了很久,3.16.75版本的或者是3.13.1版本的我都嘗試過還是沒有成功,我也不知爲什麼(可能環境問題,出現諸如在reboot後啓動的時候出現docker container引擎加載失敗導致啓動不了),這次我用了linux的4.3.3又做了嘗試終於成功了。希望可以給大家帶來參考:(我原始的linux環境是5.2版本的)

在選擇機器時,最好選擇沒有GPU的,因爲GPU的驅動版本可能會和編譯安裝的新內核版本發生衝突。出現類似的錯誤(直截取一部分):

Makefile:19: /Kbuild: No such file or directory make[2]: *** No rule to make target `/Kbuild'. Stop.

首先是更新yum,可能要很久大約半個小時:

sudo yum update -y

然後執行下面指令,會安裝一系列的包:

yum groupinstall "Development Tools"

如果在install過程中出現如下錯誤(截取錯誤的重要一部分展示):

here is no installed groups file

解決方法:

yum group info 'Development Tools' #顯示信息
yum groups mark install "Development Tools"
yum group list #在installed中顯示Development Tools,則表示安裝成功

安裝其他依賴包:

yum -y install gcc ncurses ncurses-devel bc openssl–devel openssl-devel perl-devel

然後執行內核下載和編譯安裝:

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.3.3.tar.xz
tar -xf linux-4.3.3.tar.xz -C /usr/src/
cd /usr/src/linux-4.3.3/
make menuconfig
sudo make -j20
sudo make modules_install
sudo make install

警告:如果make install的時候出現warning,即使不是error也會造成安裝失敗。。。

查看系統存在的內核版本:

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

設置版本爲標號是0的版本:

grub2-set-default 0

查看當前版本:

grub2-editenv list

然後執行reboot,進行重啓顯示:

[root@localhost ~]# uname -a
Linux localhost.localdomain 4.3.3 #1 SMP Wed Oct 23 21:38:24 CST 2019 x86_64 x86_64 x86_64 GNU/Linux

成功!!!

如果要刪除系統中多餘的內核版本可以執行下面幾個指令:

刪除編譯的內核:(這裏刪除的3.13.1版本的linux,所以刪除的版本因機器而異)
1.rm /boot/*3.13.1* -f
2.rm -rf /lib/modules/3.13.1/
3.grub2-mkconfig -o /boot/grub2/grub.cfg

make 和 make bzmage的區別:
 

make all = make = make bzImage + make modules

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章