设为首页 收藏本站
查看: 1897|回复: 0

[经验分享] centos中内核升级的三种方法

[复制链接]

尚未签到

发表于 2018-4-25 09:44:12 | 显示全部楼层 |阅读模式
  本文出自 “存储之厨” 博客,请务必保留此出处http://xiamachao.blog.51cto.com/10580956/1755354
  在基于CentOS平台的工作过程中,难免有时需要升级或者降级内核以验证功能、调试性能或者更新整个系统。
  如果从头重新编译一个内核,由于现在内核特性越来越复杂,依赖的库或者工具也不少,加之重新编译耗时不菲,了解更新内核的多种方式就显得尤为必要。
  下面根据笔者最近的工作,总结了三种方法,供大家参考。
  方法一
  如果机器不能联网,可以下载现有内核包到本地机器,直接在本地更新
  1.从http://ftp.scientificlinux.org/linux/scientific/7.0/x86_64/updates/security/下载需要的版本的rpm
  2. [root@localhost os2]# scp root@192.168.1.64:/home/worker/kernel-3.10.0-123.1.2.el7.x86_64.rpm
  root@192.168.1.64's password:
  kernel-3.10.0-123.1.2.el7.x86_64.rpm                                         100%   29MB  28.9MB/s   00:00
  3.[root@localhost os2]# yum install kernel-3.10.0-123.1.2.el7.x86_64.rpm
  Loaded plugins: fastestmirror, langpacks
  Examining kernel-3.10.0-123.1.2.el7.x86_64.rpm: kernel-3.10.0-123.1.2.el7.x86_64
  Marking kernel-3.10.0-123.1.2.el7.x86_64.rpm to be installed
  Resolving Dependencies
  --> Running transaction check
  ---> Package kernel.x86_64 0:3.10.0-123.1.2.el7 will be installed
  --> Finished Dependency Resolution
  epel/x86_64/metalink                                                                    | 5.2 kB  00:00:00
  epel/x86_64                                                                           | 4.3 kB  00:00:01
  epel/x86_64/updateinfo                                                                  | 517 kB  00:00:01
  epel/x86_64/primary_db                                                                  | 4.0 MB  00:02:36
  ....
  方法二
  如果机器已经联网,直接利用包管理工具更新,需要注意的是现在3.0以上的内核引入了签名机制,需要导入签名的key,参考步骤如下:
  1、导入key
  rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
  当然,如果已经修改了repo的gpgcheck=0也可以不导入key
  2、安装elrepo的yum源
  rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
  3、安装内核
  在yum的ELRepo源中,有mainline颁布的,可以这样安装:
  yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y
  当然也可以安装long term的:
  yum --enablerepo=elrepo-kernel  install  kernel-lt -y
  其它:
http://elrepo.org/linux/kernel/el6/x86_64/RPMS/
DSC0000.gif

[root@server-mysql yum.repos.d]# yum --enablerepo=elrepo-kernel  list  |grep kernel** elrepo--addon-kerneloops.x86_64               .-.el6                   @anaconda-RedHatEnterpriseLinux-.x86_64/-kernel.noarch                       -.el6                   @anaconda-RedHatEnterpriseLinux-.x86_64/.-.el6                @anaconda-RedHatEnterpriseLinux-.x86_64/-devel.x86_64                        .-.el6                @anaconda-RedHatEnterpriseLinux-.x86_64/-firmware.noarch                     .-.el6                @anaconda-RedHatEnterpriseLinux-.x86_64/-headers.x86_64                      .-.el6                @anaconda-RedHatEnterpriseLinux-.x86_64/-plugin-kerneloops.x86_64         .-.el6                   @anaconda-RedHatEnterpriseLinux-.x86_64/-addon-kerneloops.x86_64               .-.el6.centos           -kernel.noarch                       -.el6_8..-.-abi-whitelists.noarch               .-.-debug.x86_64                        .-.-debug-devel.i686                    .-.-debug-devel.x86_64                  .-.-devel.x86_64                        .-.-doc.noarch                          .-.-firmware.noarch                     .-.-headers.x86_64                      .-.-lt.x86_64                           .-.el6.elrepo         elrepo--lt-devel.x86_64                     .-.el6.elrepo         elrepo--lt-doc.noarch                       .-.el6.elrepo         elrepo--lt-firmware.noarch                  .-.el6.elrepo         elrepo--lt-headers.x86_64                   .-.el6.elrepo         elrepo--ml.x86_64                           .-.el6.elrepo            elrepo--ml-devel.x86_64                     .-.el6.elrepo            elrepo--ml-doc.noarch                       .-.el6.elrepo            elrepo--ml-firmware.noarch                  .-.el6.elrepo            elrepo--ml-headers.x86_64                   .-.el6.elrepo            elrepo--plugin-kerneloops.x86_64         .-.el6.centos           .-.el6.elrepo            elrepo-kernel

  方法三
  实际工作当中经常碰到需要修改内核配置,编译驱动,调节相关参数等,这就需要定制内核,为此需要手动生成新的内核。还是以3.10.0-123.el7为例子,一般步骤如下:
  1.先下载内核:
  wget http://vault.centos.org//7.0.1406/os/Source/SPackages/kernel-3.10.0-123.el7.src.rpm
  接着解压相关代码:
  rpm2cpio kernel-3.10.0-123.el7.src.rpm |cpio -div
  默认在/usr/src放有一份kernel的头文件,这样在不需要下载整个内核源代码的情况下就可以编译自己编写的内核模块,如果有patch需要打的话,用patch -p1 *.patch命令给内核打上相应的patch。
  2.更新配置文件.config
  可以获取系统当前的config文件,也可以用默认的配置文件,比如x86_64_defconfig:
  cp /boot/config-3.10.0-123.el7.x86_64  .config  和make oldconfig生产的config一致
  然后用make menuconfig来配置。
  3.编译和安装
  默认的情况下, 内核和initrd会安装到/boot下面,而驱动模块会安装到/lib/modules/`uname -r`下,如果可以都安装都默认的位置,直接运行下面的命令即可:
  make -j8;make modules; make modules_install;make install;
  如果需要安装到指定的路径,请设置下面的环境变量:
  export INSTALL_PATH=….
  export INSTALL_MOD_PATH=
  4.创建initrd.img
  initrd.img即为初始化的ramdisk文件,它是一个内存镜像文件。它是把一些最基本的驱动程序和命令工具打包而成,作用就是在系统还没有挂载根分区前,保证系统能够执行基础的初始化和加载一些基本的驱动,比如挂载scsi驱动等。制作initrd传统的方法是用mkinitramfs这一个系统工具,现在mkinitrd会调用dracut完成实际的工作。比如下面的命令进行:
  mkinitrd3.0.4 -o /boot/initrd.img-3.0.4
  然后把生成的initrd映像拷贝到/boot下面即可。
  5.更新grub
  为了让boot loader能够找到刚生成的内核和initrd映像,需要修改grub。注意如果使用的是grub2,不宜直接修改/boot/grub2/grub.cfg文件,而应该修改grub2的配置文件。grub2默认的配置文件在/etc/grub2.cfg。更新完这个文件之后,需要运行下面的文件:
  grub2-mkconfig
  至于启动那个linux镜像,由/etc/default/grub的GRUB_DEFAULT=saved来决定;
  其意思是上一次使用的value;
  修改内核默认启动项
  grub2-set-default 0
  这种方法需要注意kernel和模块签名的问题,如果模块签名没有通过内核检查,将不会加载,这可能导致生成系统启动失败。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-451697-1-1.html 上篇帖子: centos5 6 mount MAC 主机 ox系统 FreeBSD 下篇帖子: clamav 防病毒软件在centos 安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表