首页 > 系统相关 >Linux|简单的内核编译安装图解

Linux|简单的内核编译安装图解

时间:2023-04-05 19:33:11浏览次数:46  
标签:hint -- make 编译 内核 Linux 图解 root


编译安装内核5.4.69图解

内核的重要性不需多说,大家都懂,有些软件对内核版本是有要求的,比如comodo杀毒软件,或者出于提高系统安全性的需求,提高内核版本,比如,将内核版本从3.10.936 提高到3.10.0-1062版本,以利用新的内核的安全补丁,消除一些安全bug。有鉴于此,会内核编译安装是一个现实的需求了。

前面所写的关于内核升级的博客:Linux centos7升级内核(两种方法:内核编译和yum更新)_晚风_END的博客博客_centos7升级内核  现在在回头看,十分粗略,因此,写下本文。

内核的下载地址:Index of /pub/linux/kernel/v5.x/  这个是官方网站,各种内核版本十分详细,我选择的是下载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 bc  -y

四,开始正式编译,在此使用可视化菜单方式选择配置要编译的模块

执行命令:

make menuconfig,此时会弹出一个类似BIOS的菜单,这里就是选择各种模块的地方啦

可能会报错如下;

make menuconfig
***
*** Compiler is too old.
***   Your GCC version:    4.8.5
***   Minimum GCC version: 5.1.0
***
scripts/Kconfig.include:44: Sorry, this compiler is not supported.
make[2]: *** [menuconfig] Error 1
make[1]: *** [menuconfig] Error 2
make: *** [__sub-make] Error 2

此时,需要安装gcc6以及以上版本,详细安装方法见本人另一个博客:

离线自由切换gcc版本并使用高版本gcc以及gcc的迁移_晚风_END的博客博客_gcc文件夹挪过来 重新激活gcc6后,即可进入下面这个菜单

Linux|简单的内核编译安装图解_内核

 

Linux|简单的内核编译安装图解_需求分析_02

 

Linux|简单的内核编译安装图解_需求分析_03

Linux|简单的内核编译安装图解_linux_04

Linux|简单的内核编译安装图解_个人开发_05

Linux|简单的内核编译安装图解_linux_06

tab键选择到save按钮回车,进入这个界面,在回车:

Linux|简单的内核编译安装图解_linux_07

 以上,内核模块的挑选就完成了,这里,我仅仅选择了一些文件系统的模块,其余的都是默认。保存配置文件后,看看这个文件吧:

vim .config

Linux|简单的内核编译安装图解_linux_08

 8000多行,一会编译就读取这个文件的内容编译哦。这个文件很关键,文件在解压目录下。

执行命令make  开始预编译阶段,这个阶段大概2个小时左右,服务器配置决定。耐心等待预编译完成后,执行命令:

make modules_install   此阶段是模块安装阶段,这个比较快,大概几分钟左右吧。

make install   此阶段是真正的编译安装阶段,比较快,几分钟的样子。

至此,内核编译工作完成,可以检查一下啦。

Linux|简单的内核编译安装图解_内核_09

Linux|简单的内核编译安装图解_需求分析_10

 重启服务器,现在就可以选择新内核并使用它啦,此时,如果你有一个ntfs格式的U盘,插上Linux就可以识别了,不信的同学可以自己试试哦。

标签:hint,--,make,编译,内核,Linux,图解,root
From: https://blog.51cto.com/u_15966109/6171427

相关文章

  • Linux运维实战:Centos7.6部署wingftpserver
    一、WingFTPServer介绍WingFTPServer是一款优秀且高速的跨平台FTP服务器软件,对比Windows中自带的FTP服务器,它支持可伸缩的处理器架构并采用异步IO,在速度和效率方面遥遥领先于其他同类产品,稳定可靠,高负载的同时也能持续地正常运行,在网络运维中它契合企业和学校的文件传输,除......
  • Linux的shell脚本编写技巧和crontab计划任务的结合(沙漠一样干的干货)
    Shell脚本的重要性我想应该不需要我在重复了,本文的目的是向读者介绍Shell编程的一些固定套路,当然,也可以称之为技巧,而crontab计划任务又和Shell脚本密切相关(一般简单任务当然是写一条命令啦,如果比较复杂的场景还是脚本比较合事宜,并且,脚本更为灵活,拓展性更强啦)。一,脚本的结构就是第一......
  • 在Linux内网搭建K8s集群
    前言本文讲述在Linux内网搭建K8s集群详细步骤,解决搭建过程中的问题。脚本基本可以不修改直接使用。准备工作需要LinuxCentOS7.x两台及以上,本文用的7.6。主机要求有2个核心及以上。安装步骤多个节点可以并行操作,默认所有操作各节点都要执行,某些操作仅主/工作节点执行在标......
  • 在Linux配置LVS实现负载均衡
    前言这篇主要是讲LVS配置来实现负载均衡,步骤非常简单,只不过为了解释配置的目的增加了一些文字解释,而显得内容很多。LVS(LinuxVirtualServer)是章文嵩博士成立的自由软件项目。Linux将其作为内核的一部分,命名为IPVS(IPVirtualServer)。配置简介在一台作为负载均衡服务器DS(Direc......
  • 在Linux搭建Zookeeper集群
    前言本文讲述在多台Linux服务器搭建ZooKeeper集群的具体步骤,共4个节点(1主2从1观察者)。ZooKeeper使用的端口:【2181】对client提供服务;【3888】选举leader;【2888】集群内通讯。准备工作ZooKeeper需要1.7及以上版本的JDK,可以参考在Linux安装JDK。给系统配置hosts......
  • mysql linux 主从配置
    mysql安装https://www.cnblogs.com/kire-cat/p/16361559.html 主从配置https://blog.csdn.net/D1179869625/article/details/120773725......
  • 在Linux部署RocketMQ可视控制台Dashboard
    前言Dashboard是一个Javaweb项目,Maven工程。通过源码编译成jar包后启动即可通过浏览器访问。通过html界面可以查看RockeMQ集群状态、创建/删除Topic、生产/消费等。安装echo"从GitHub下载源码包">/dev/nullwget-P~/soft/rocketmqhttps://github.com/apache/rocketmq......
  • 在Linux搭建Kafka集群
    前言以kafka_2.13-2.8.0版本做示例,安装架构图如下所示,4台服务器,4个节点的Zookeeper集群(1主2从1观察)以及3个Kafka服务。准备工作准备多台服务器来搭建集群环境Kafka需要Zookeeper做分布式协调,所以得先准备好Zookeeper集群。可以参考在Linux搭建Zookeeper集群给系统配置host......
  • 在Linux部署Redis主从和哨兵集群实现高可用
    前言本文主要讲述在Linux系统中配置和部署Redis主从集群和哨兵,实现高可用和自动故障迁移。准备工作参考Redis单机部署安装3个Redis服务作一主二从,本文准备了6380(主)、6381(从)和6382(从)。参考Redis单机部署安装3个Redis服务作哨兵集群,本文准备了26380......
  • 在Linux部署Redis Cluster集群
    前言本文讲述在Linux系统部署RedisCluster实现数据分片的具体步骤。请参考Redis单机部署下载编译。RedisCluster是什么?RedisCluster是官方提供的一种用数据分片来实现横向扩容的解决方案,由一个或多个Redis服务组成一个无主集群。对Key使用哈希算法将数据分散......