Centos 中如何快速定制二进制的内核RPM 包

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

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

Building主机系统环境约定:

  • OS : CentOS release 6.6
  • Arch : i686

一,rpm包简单定制

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

1、rpm 制作前的环境准备:

  1. yum -y groupinstall "Development Tools"
  2. yum -y install ncurses-devel qt-devel
  3. yum -y install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed xmlto
  4. yum -y install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel
  5. yum -y install newt-devel python-devel zlib-devel bc

2、准备内核的源代码组件

  1. cd /usr/src
  2. wget -c https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.19.1.tar.xz
  3. tar -Jxvf linux-3.19.1.tar.xz
  4. ln -s linux-3.19.1 linux
  5. cd linux
  6. make oldconfig # 验证和更新配置.config配置文件(如果只想在原来内核配置的基础上修改一些小地方)
  7. make menuconfig # 简单图形化的内核配置管理

3、此时,我们就可以开始编译新内核rpm包了

  1. make rpm # 自动生成rpmtree,kernel.spec文件,自动编译, 会生成debug包在内的所有rpm包组件。

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

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

  1. cd /root/rpmbuild/RPMS/`uname -m`/
  2. tree RPMS/
  3. RPMS/
  4. └── i386
  5. ├── kernel-3.19.1-2.i386.rpm
  6. ├── kernel-devel-3.19.1-2.i386.rpm
  7. └── kernel-headers-3.19.1-2.i386.rpm
  8. 1 directory, 3 files

4、安装新内核

  1. rpm -Uvh kernel-*-.rpm

5、重启,验证内核版本

  1. uname -a

二, rpm包深度定制化

1、我们先创建好rpm的“制作车间”(我觉得这样说可能更形象一些)。

  1. yum install rpmdevtools # rpm 制作车间快速创建工具
  2. useradd -m builder # 新建一个临时用户以便创建 RPM 包,如果有错误发生,构建程序不会破坏现有的系统环境。
  3. su - builder
  4. rpmdev-setuptree # 创建”制作车间“

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

  1. tree -L 1 ~/rpmbuild/
  2. rpmbuild/
  3. ├── BUILD
  4. ├── RPMS
  5. ├── SOURCES
  6. ├── SPECS
  7. └── SRPMS

2、编译前准备

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

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

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

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

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

  1. tree rpmbuild/ -a
  2. rpmbuild/
  3. ├── BUILD
  4. ├── RPMS
  5. ├── SOURCES
  6. │   ├── config-`uname -r`
  7. │   └── linux-3.19.1.tar.gz
  8. ├── SPECS
  9. │   └── kernel.spec
  10. └── SRPMS
  11. 5 directories, 3 files

3、好了,现在我们正式开始编译内核的二进制rpm包:

  1. 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 安装包。

rpm 包 building 参考文档:

时间: 2024-08-23 20:23:13

Centos 中如何快速定制二进制的内核RPM 包的相关文章

Centos 中如何快速定制二进制的内核 RPM 包

1.rpm 制作前的环境准备: yum install -y ncurses-devel qt-devel rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed xmlto audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel newt-devel python-devel zlib-devel bc 2.准备内核的源代码组件 cd /

Red Hat 系列如何快速定制二进制内核 RPM 包?

随着Linux服务器越来越多了,底层系统内核想要保持版本统一就需要定制专门的二进制安装包来便捷的升级和管理. RedHat系那当然就是使用rpmbuild来做定制化管理了. 今天我们分俩个部分(root和普通用户)来讲解如何制作内核的二进制rpm包. Building主机系统环境约定: OS : CentOS release 6.6 Arch : i686 第一部分,rpm包简单定制 注意: 这里我们首先要预留至少20GB的临时文件空间. 一.rpm 制作前的环境准备: yum -y group

如何在没有外网的情况下,通过Centos系统光盘创建yum源,结果rpm包依赖性问题

如何在没有外网的情况下,通过Centos系统光盘创建yum源,结果rpm包依赖性问题 相信作为Linux系统管理员在安装rpm包的过程中或多或少都会遇到软件依赖性.通常我们的解决方法: 1.通过yum工具连接外网上的yum服务器来安装,自动帮忙解决软甲依赖性. 该方法能够快速解决软件依赖性问题,但是解决的前提是生产环境中有外光.如果我们的生产环境不允许连接或者不具备外网条件,基本上就没有办法解决了. 2.手动安装依赖性软件.这种方法较为原始的安装方法,只适合对软件依赖性较少的情况,如果所安装的软

使用ruby的fpm模块实现对二进制MySQL的RPM包制作,实现一键安装

随着互联网的发展,一些互联网企业,甚至于传统企业的服务器也是越来越多.将面临的挑战其中之一就是自动化运维管理.假设我们需要自动化部署很多的应用,而这些应用又很复杂,过程多,需要源码安装.就算你能够用自动化来完成这些工作,但配置起来也是相当的麻烦.那么现在就有一种技术可以将源码安装的应用封装成rpm包,或者deb包等,完成一键安装,此方法运用得当可谓是如虎添翼 关于rpm包的封装制作方法有好多,我这里介绍的是一种相对简单的方法使用ruby的fpm模块来实现.学习成本低,方便,快捷 实验环境:最小化

我的第一个shell 脚本 用作快速复制已安装的rpm包

#!/bin/basha=1while truedo p=`echo $a` name=`awk NR==$p isaname.txt` name1=${name%*.rpm}   #将结尾的.rpm去除 echo "$name1" if [ -z "$name" ];then echo "finish" break fi ret=` grep $name1 local.txt` if [ -n "${ret}" ]; the

Linux中centos中httpd源码安装过程详解

在Linux中软件安装有两大类,一类是软件包安装,一类是源代码安装.软件包安装就是指将编译好的二进制封装成rpm包,可以直接使用rpm工具和yum工具安装.源代码安装是指没有编译成二进制,需要通过手动编译的.使用源代码安装的原因有两个,一个就是想使用最新版的软件,另一类就是想自定义其功能的. 在httpd的源码安装过程中需要用到:APR.APR-UTIL. PCRE.httpd源码安装过程:1.展开压缩文件,把压缩文件解压缩到/usr/local/src.2.在解压文件目录使用 ./config

linux中的centos中的http安装过程

在linux中安装软件有大类,一类是软件包安装,一类是源代码安装.软件包安装就是指将编译好的二进制封装成RPM包,可以直接使用RPM工具和yum工具安装.源代码安装是指没有编译成二进制,需要通过手动编译的.源码安装过程:一:于centos中没有安装gcc.gcc-c++的虚拟机,需要先输入yum install gcc gcc-c++.在浏览器中找到apr,apr-util,http,prce的下载源,在通过wget IP地址,对这些包进行下载,下载完成之后解压到/usr/local/src二:

CentOS中Python pip包管理工具的安装和使用

Python有很多第三方的模块或包,要管理这些包,有很多方法.python的pip包管理工具,类似与CentOS中yum,使用该工具安装Python包非常方便. 从Python内部来说,pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品.distribute是setuptools的取代(Setuptools包后期不再维护了),pip是easy_install的取代. pip的安装前需要setuptools 或者 distribute,如果你使用的是P

Linux-什么是二进制包,源码包,RPM包,软件仓库

博文说明[前言]: 本文将通过个人口吻介绍什么是二进制包,RPM包,源码RPM包(SRPM包),源码包,以及RPM常用命令,源码rpm的安装(*.src.rpm),源码包的安装步骤知识(./configure,make,make install)相关知识. 在目前时间点[2017年6月12号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 本文参考文献引用链接: 1.http://m