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

[经验分享] redhat AS4内核配置更改再编译

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-5-14 10:06:02 | 显示全部楼层 |阅读模式
一、内核内存配置检查:  -----------------------
  可以通过以下办法来查看启动时内核是否支持64G内存
  首先要弄清启动时用的是哪个内核
[root@study ~]# cat /boot/grub/grub.conf

  ...
  default=0 (说明第一个条目是默认的启动)
  timeout=5
  splashimage=(hd0,0)/grub/splash.xpm.gz
  hiddenmenu
  title Red Hat Enterprise Linux AS (2.6.9-34.ELsmp)
  root (hd0,0)
  kernel /vmlinuz-2.6.9-34.ELsmp ro root=/dev/VolGroup00/LogVol00 rhgb quiet
  initrd /initrd-2.6.9-34.ELsmp.img
  title Red Hat Enterprise Linux AS-up (2.6.9-34.EL)
  root (hd0,0)
  kernel /vmlinuz-2.6.9-34.EL ro root=/dev/VolGroup00/LogVol00 rhgb quiet
  initrd /initrd-2.6.9-34.EL.img
  我的内核是vmlinuz-2.6.9-34.ELsmp
  对应安装时的内核编译文件就是
  /boot/config-2.6.9-34.ELsmp
  检查高内存支持
[root@study ~]# more /boot/config-2.6.9-34.ELsmp |grep 4G

  # CONFIG_X86_4G is not set
  # CONFIG_X86_4G_VM_LAYOUT is not set
  # CONFIG_HIGHMEM4G is not set
  CONFIG_HIGHMEM64G=y 说明我的内核编译时选择了64G内存支持,
  只有4G支持的情况会类似:
[root@study ~]# more /boot/config-2.6.9-34.EL |grep 4G

  # CONFIG_X86_4G is not set
  # CONFIG_X86_4G_VM_LAYOUT is not set
  CONFIG_HIGHMEM4G=y
  # CONFIG_HIGHMEM64G is not set
  -----------------------
  二、定制内核:
  -----------------------
  如果要改变内核对高内存的支持需要重新编译内核。定制内核有两种方法
  1)、redhat专有,中间可以得到一个rpm内核包,用来安装或者与别人共享。
  2)、用于所有linux发行版,不会得到rpm包,从原代码生成您定制的内核。
  这里只介绍第一种
  警告:
  定制内核超出了红帽的服务范围和支持流程。可能会使您的系统失去红帽的支持服务。风险自负。
  如果已投入运行的redhat系统,只是想改变内核的一项配置的话,按我说的步骤会把影响降到最低。
  1,检查相关工具包
[root@study ~]# system-config-packages

  在弹出的"添加或删除软件包"界面选中"开发工具",并检查它的细节中,
  kernel-devel,kernel-smp-devel,kernel-hugemem-devel,他们会产生以下文件夹:
[root@study ~]# ls /usr/src/kernels/

  2.6.9-34.EL-hugemem-i686  2.6.9-34.EL-i686  2.6.9-34.EL-smp-i686
  每个文件夹对应一个内核代码树(他们都不是完整的代码,只是可以用来编译相应的内核模块而已,
  而不能用来编译真正的内核)。
  2,准备完整的源代码环境
  请使用与您系统版本一致的软件包(cat /etc/redhat-release)。
  如果注册了红帽网络可以通过下面方法来下载安装源代码
  # up2date redhat-rpm-config rpm-build
  # up2date --get-source kernel
  # rpm -ivh /var/spool/up2date/kernel*.src.rpm
  参考

  如果没有注册红帽网络,只能手工下载安装了(我猜配发的光盘中应该可以找到这个包,但我的光盘不全无法试验)

  请下载用与您系统版本一致的软件包。
  # rpm -ivh /mnt/kernel-2.6.9-34.src.rpm
  # cd /usr/src/redhat/SPECS/
  #cd /usr/src/redhat/SPECS
  #vi kernel-2.6.spec
  主要修改如下地方:
  define buildsource 0------------我的这个在第8行,改为1,
  这就是为什么没有源代码包的原因,因为默认不生成源代码包。
  %define buildhugemem 1 支持高内存
  %define buildsmp 1  支持多处理器
  %define buildlargesmp 1 支持更多处理器
  Requires: qt-devel, gtk2-devel readline-devel ncurses-devel
  我的在1187行,如果没用用X的话,把这句注释掉,这样编译出来的包就不依赖于X-window的某些包,
  因为内核配置是可以用make xconfig,所以默认依赖X-window,如果没装X-window,可以注释掉。
  保存退出。
  #touch /etc/beehive-root
  这句命令非必须,如果不做的话,最后编译出来的包都会变成kernel-*.*-root.rpm,多了个root,
  据说是为了标示包的编译人的,如果touch了这个文件,就没有这个问题了,命名和官方rpm一样。
  #rpmbuild  -ba --target=`uname -m` ./kernel-2.6.spec
  编译i686平台(这里uname -m命令会得到i686的结果)的所有包,这样上面介绍的所有包都会生成,
  或者换成rpmbuild -bb --target=`uname -m` ./kernel-2.6.spec只编译非src.rpm。
  所有包就会生成到/usr/src/redhat/RPMS/i686下面
  如果只需要sourcecode而并非所有rpm包,那在修改spec文件时还要修改如下行:
  %ifarch noarch
  %define builddoc 1
  %define buildsource 0---------------这里0修改为1
  在编译的时候使用rpmbuild -ba --target=noarch ./kernel-2.6.spec,这样仅仅编译sourcecode和doc包,
  会节省很多时间。
  3,配置内核
  为了标识我们将来自己订制的内核,以和现有的内核区分:
[root@study kernel-2.6.9]# cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/

[root@study linux-2.6.9]# vi Makefile

  找到EXTRAVERSION改成下面的形式:
  EXTRAVERSION = -custom-2.6.9-34
  因为我的/boot/config-2.6.9-34.EL内核不支持64G内存,我要“克隆”一个新的,并支持64G内存。
[root@study linux-2.6.9]# diff .config /boot/config-2.6.9-34.EL 比较这两个配置文件,

  一般无输出,也就是没有差异,如果有差异就:
[root@study linux-2.6.9]# cp  /boot/config-2.6.9-34.EL .config

  cp:是否覆盖 '.config' ? y
  我们的目的是在原来的基础上只修改内存配置,这个.config文件决定了编译内核的选项。
  不建议直接修改.config,而通过下面的方法:
[root@study linux-2.6.9]#make menuconfig

  在界面中选择  Processor type and features  --->
  再选择 High Memory Support (4GB)  --->
  ( ) off
  ( ) 4GB
  (X) 64GB
  退出,退出,再退出,当下面信息出现,一定要选yes
  Do you wish to save your new kernel configuration?
  4,编译并安装内核
  这里有两种选择,结果一致,任选其一。
  1)这时候您可以做一个rpm
[root@study linux-2.6.9]# make rpm

  安装完成的这个内核rpm包
[root@study linux-2.6.9]# rpm -ivh /usr/src/redhat/RPMS/i386/kernel-2.6.9custom2.6.934-2.i386.rpm

  可以看到/boot下面多了我们的新内核文件vmlinuz-2.6.9-custom-2.6.9-34
  /lib/modules下面多了文件夹2.6.9-custom-2.6.9-34,其中包含了新内核的所有模块。
  为我们的新内核制作一个内存盘,确保新内核能够启动
[root@study linux-2.6.9]#  mkinitrd /boot/initrd-2.6.9-custom-2.6.9-34.img 2.6.9-custom-2.6.9-34

  在启动引导器grub的配置文件中添加属于新内核的一段配置
[root@study linux-2.6.9]# vi /boot/grub/grub/conf

  default=2 因为我的新内核配置段排在第3位,这样把新内核作为默认启动项
  ...

  >  root (hd0,0)
  kernel /vmlinuz-2.6.9-custom-2.6.9-34 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
  initrd /initrd-2.6.9-custom-2.6.9-34.img
  2)[root@study linux-2.6.9]# make
[root@study linux-2.6.9]# make modules_install

[root@study linux-2.6.9]# make install

  新的kernel, initrd 和 system.map 会自动拷贝到/boot目录,新的内核也会自动加入到grub.conf的启动列表里面。
  在上面两个步骤之一完成后
  重新启动时系统就使用我们订制的内核了。
[root@study linux-2.6.9]# reboot

  请检查系统及各个服务的运行状况,如果有错误,可以更改/boot/grub/grub.conf的default值,选原来的配置段,
  重新启动后,就恢复使用原来的内核了。

运维网声明 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-459796-1-1.html 上篇帖子: 让NTFS在linux(redhat as 5) 下游刃有余 下篇帖子: Redhat、Fedora Linux常见守护进程(服务)列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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