编译安装内核5.4.69图解
内核的重要性不需多说,大家都懂,有些软件对内核版本是有要求的,比如comodo杀毒软件,或者出于提高系统安全性的需求,提高内核版本,比如,将内核版本从3.10.936 提高到3.10.0-1062版本,以利用新的内核的安全补丁,消除一些安全bug。有鉴于此,会内核编译安装是一个现实的需求了。
前面所写的关于内核升级的博客: https://www.ctyun.cn/portal/link.html?target=https%3A%2F%2Fblog.csdn.net%2Falwaysbefine%2Farticle%2Fdetails%2F108931626 现在在回头看,十分粗略,因此,写下本文。
**内核的下载地址:**https://www.ctyun.cn/portal/link.html?target=https%3A%2F%2Fcdn.kernel.org%2Fpub%2Flinux%2Fkernel%2Fv5.x%2F 这个是官方网站,各种内核版本十分详细,我选择的是下载****linux-5.4.69.tar.xz这个版本。
下载完毕后,将该文件上传到服务器上,具体位置随意,记得就好。下面是详细的安装步骤:
一,查看原有内核版本和启动文件
[root@hdp-2 ~]# uname -a
Linux hdp-2 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@hdp-2 ~]# pwd
/root
[root@hdp-2 ~]# ls
linux-5.4.69.tar.xz
可以看到,我现在在使用的版本是3.10.0.-1062内核,前面下载的文件放在了root根目录下。
cat /boot/grub2/grub.cfg 查看系统启动文件,可以看到关键的菜单选择和内核镜像文件选择这我们是只有3.10这个版本的,后续,编译安装完成,我们会在看这个文件,会向我们揭示一些系统启动的小秘密。
menuentry 'CentOS Linux (3.10.0-1062.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1062.el7.x86_64-advanced-05415307-263e-4430-9a13-88ae9fc9f0d9' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' e58de036-fbe2-4992-a1bc-00a7376febf0
else
search --no-floppy --fs-uuid --set=root e58de036-fbe2-4992-a1bc-00a7376febf0
fi
linux16 /vmlinuz-3.10.0-1062.el7.x86_64 root=/dev/mapper/centos-root ro spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
initrd16 /initramfs-3.10.0-1062.el7.x86_64.img
}
menuentry 'CentOS Linux (0-rescue-dc1a923a52f34817adf64d3531027e7c) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-dc1a923a52f34817adf64d3531027e7c-advanced-05415307-263e-4430-9a13-88ae9fc9f0d9' {
load_video
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' e58de036-fbe2-4992-a1bc-00a7376febf0
else
search --no-floppy --fs-uuid --set=root e58de036-fbe2-4992-a1bc-00a7376febf0
fi
linux16 /vmlinuz-0-rescue-dc1a923a52f34817adf64d3531027e7c root=/dev/mapper/centos-root ro spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet
二,解压文件linux-5.4.69.tar.xz后,进入解压目录
这个后缀的压缩包通常解压不加多余的参数,只需要xf即可,解压命令:
tar xf linux-5.4.69.tar.xz
[root@hdp-2 ~]# cd linux-5.4.69
[root@hdp-2 linux-5.4.69]# ls
arch certs CREDITS Documentation fs init Kbuild kernel LICENSES Makefile net samples security tools virt
block COPYING crypto drivers include ipc Kconfig lib MAINTAINERS mm README scripts sound usr
三,编译前的依赖安装
yum install gcc gcc-c++ make ncurses-devel openssl-devel flex bison elfutils-libelf-devel -y
四,开始正式编译,在此使用可视化菜单方式选择配置要编译的模块
执行命令:
make menuconfig,此时会弹出一个类似BIOS的菜单,这里就是选择各种模块的地方啦
tab键选择到save按钮回车,进入这个界面,在回车:
以上,内核模块的挑选就完成了,这里,我仅仅选择了一些文件系统的模块,其余的都是默认。保存配置文件后,看看这个文件吧:
vim .config
8000多行,一会编译就读取这个文件的内容编译哦。这个文件很关键,文件在解压目录下。
执行命令make 开始预编译阶段,这个阶段大概2个小时左右,服务器配置决定。耐心等待预编译完成后,执行命令:
make modules_install 此阶段是模块安装阶段,这个比较快,大概几分钟左右吧。
make install 此阶段是真正的编译安装阶段,比较快,几分钟的样子。
至此,内核编译工作完成,可以检查一下啦。
重启服务器,现在就可以选择新内核并使用它啦,此时,如果你有一个ntfs格式的U盘,插上Linux就可以识别了,不信的同学可以自己试试哦。