我终于编译成功了,可以说我编译了很久,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