文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Centos中怎样快速定制二进制的内核RPM包

2023-06-16 16:48

关注

Centos中怎样快速定制二进制的内核RPM包,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

随着Linux服务器越来越多了,底层系统内核想要保持版本统一就需要定制专门的二进制安装包来便捷的升级和管理。RedHat系那当然就是使用rpmbuild来做定制化管理了。

今天我们分两个部分(root和普通用户)来讲解如何制作内核的二进制rpm包。

Building主机系统环境约定:

一、rpm包简单定制

注意: 这里我们首先要预留至少20GB的临时文件空间。

1.rpm 制作前的环境准备
yum -y groupinstall "Development Tools"yum -y install ncurses-devel qt-develyum -y install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed xmltoyum -y install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-develyum -y install newt-devel python-devel zlib-devel bc
2.准备内核的源代码组件
cd /usr/srcwget -c https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.19.1.tar.xztar -Jxvf linux-3.19.1.tar.xzln -s linux-3.19.1 linuxcd linuxmake oldconfig     # 验证和更新配置.config配置文件(如果只想在原来内核配置的基础上修改一些小地方)make menuconfig     # 简单图形化的内核配置管理
3.此时,我们就可以开始编译新内核rpm包了
make rpm     # 自动生成rpmtree,kernel.spec文件,自动编译, 会生成debug包在内的所有rpm包组件。

这个时候我们就等着吧,或者喝杯下午茶什么的。

好了,我们找一下已经编译好的内核 rpm 包。

cd /root/rpmbuild/RPMS/`uname -m`/ tree RPMS/RPMS/└── i386    ├── kernel-3.19.1-2.i386.rpm    ├── kernel-devel-3.19.1-2.i386.rpm    └── kernel-headers-3.19.1-2.i386.rpm 1 directory, 3 files
4.安装新内核
rpm -Uvh kernel-*-.rpm
5.重启,验证内核版本
uname -a

二、rpm包深度定制化

1.我们先创建好rpm的“制作车间”(我觉得这样说可能更形象一些)。
yum install rpmdevtools     # rpm 制作车间快速创建工具useradd -m builder     # 新建一个临时用户以便创建 RPM 包,如果有错误发生,构建程序不会破坏现有的系统环境。su - builderrpmdev-setuptree    # 创建”制作车间“

将会在builder用户的家目录下生成如下目录结构:

tree -L 1 ~/rpmbuild/rpmbuild/├── BUILD├── RPMS├── SOURCES├── SPECS└── SRPMS
2.编译前准备

此时我们需要包收集来的新版内核源码包放到 /home/builder/rpmbuild/SOURCES 目录下。

su - buildercd ~/rpmbuild/SOURCES wget -c https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.19.1.tar.xz       # 注意: rpmbuild 是通过gzip来做building前源码包解压工作的,所以需要把这个压缩包转换成.tar.gz格式。# 这里就不做记录了cp /boot/config-`uname -r` .    # 将现有的内核配置文件 config-`uname -r` 拷贝到 SOURCES 目录下

切换到SPECS目录下, 生成 kernel.spec:

tar Jxvf ../SOURCES/linux-3.19.1.tar.xz -C .bash ../linux-3.19.1/scripts/package/mkspec >./kernel.specrm -rf linux-3.19.1 # 这里需要我们手动利用源码包中提供的脚本生成 kernel.spec 文件# 记得生成kernel.spec完之后,清理掉 linux-3.19.1 文件夹vim kernel.spec    # 可以根据个人情况做深度定制化

到此,我们的准备工作基本完成,目录结构及内容如下:

tree rpmbuild/ -arpmbuild/├── BUILD├── RPMS├── SOURCES│   ├── config-`uname -r`│   └── linux-3.19.1.tar.gz├── SPECS│   └── kernel.spec└── SRPMS 5 directories, 3 files
3.好了,现在我们正式开始编译内核的二进制rpm包
rpmbuild -bb --with baseonly --without debug --without debuginfo --target=`uname -m` kernel.spec

rpmbuild 参数说明:

(1) --with <option> 指明编译某一种 kernel,可选的 option 有 baseonly、smponly 和 xenonly 等。

(2) --without <option> 指明去除一些功能模块,可选的 option 有  xen、smp、up、pae、kdump、debug 和 debuginfo 等。其中,debug  选项会剔除内核中的调试代码,debuginfo 选项会禁止建立 kernel-debuginfo 包。

完成以后,请到 ~/rpmbuild/RPMS/`uname -m`/ 目录中获取 rpm 安装包。

看完上述内容,你们掌握Centos中怎样快速定制二进制的内核RPM包的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯