Centos7通过内核源码制作rpm包 您所在的位置:网站首页 内核源码编译方法 Centos7通过内核源码制作rpm包

Centos7通过内核源码制作rpm包

2023-07-26 09:38| 来源: 网络整理| 查看: 265

安装编译所需软件 yum install asciidoc audit-libs-devel bash bc binutils binutils-devel bison diffutils elfutils yum install elfutils-devel elfutils-libelf-devel findutils flex gawk gcc gettext gzip hmaccalc hostname java-devel yum install m4 make module-init-tools ncurses-devel net-tools newt-devel numactl-devel openssl yum install patch pciutils-devel perl perl-ExtUtils-Embed pesign python-devel python-docutils redhat-rpm-config yum install rpm-build sh-utils tar xmlto xz zlib-devel yum groupinstall "Development Tools" 创建一个普通用户 useradd ker passwd ker su - ker

需要保证家目录下有大于10G的空间

创建rpm所需目录 mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros 安装内核源码组件

从这些地方找寻内核的源代码组件:

http://vault.centos.org/7.N.YYMM/os/Source/SPackages/http://vault.centos.org/7.N.YYMM/updates/Source/SPackages/ (请以相关的副版本编号、年度及月份取代 N.YYMM。)

以kernel-3.10.0-1160为例:

rpm -i http://vault.centos.org/7.9.2009/updates/Source/SPackages/kernel-3.10.0-1160.11.1.el7.src.rpm 2>&1 | grep -v exist 解压源码并生成源码 cd ~/rpmbuild/SPECS rpmbuild -bp --target=$(uname -m) kernel.spec 设置内核 cd ~/rpmbuild/BUILD/kernel-*/linux-*/ cp configs/kernel-3.10.0-`uname -m`.config .config 或 cp /boot/config-`uname -r` .config

首先执行 make oldconfig。现在你应该执行 make menuconfig、make gconfig 或 make xconfig 来自定内核的设置。当你完成后,请记得存储你的改动。

将uname -i输出的参数添加到.config文件的第一行 sed -i "1i# `uname -i`" .config 现在将 .config 档复制回 configs/ 目录内。这基本上与先前的复制指令刚刚相反: cp .config configs/kernel-3.10.0-`uname -m`.config 最后一步就是将 configs/ 目录内的所有内容复制到 ~/rpmbuild/SOURCES/ 目录内: cp configs/* ~/rpmbuild/SOURCES 更改内核的 spec 文件 cd ~/rpmbuild/SPECS cp kernel.spec kernel.spec.bak vi kernel.spec

在第 8 行,buildid 的定义本来是一个注释。 它必须被取消注释及赋予一个数值,好避免与你现时安装了的内核互相抵触。这将这行更改如下列样子般:

%define buildid .xxx

xxx替换为自定义内容

编译新内核 cd ~/rpmbuild/SPECS rpmbuild -bb --target=`uname -m` --without kabichk kernel.spec 或者后台编译 rpmbuild -bb --target=`uname -m` --without kabichk kernel.spec 2> build-err.log | tee build-out.log

你可以通过 --with 及/或 --without 这些选项及相关的引数在 rpmbuild 指令内加入一些有用的选项。值得留意的主要选项包括:

--with baseonly --without up --without debug --without debuginfo --without kabichk

举个例说,单要创建基本内核组件,请使用:

--with baseonly --without debug --without debuginfo 安装新内核 cd ~/rpmbuild/RPMS/`uname -m`/ yum localinstall kernel-*.rpm 或 rpm -ivh kernel-*.rpm 设置为默认启动内核 cat /boot/grub2/grub.cfg | grep menuentry grub2-editenv list grub2-set-default ''CentOS Linux (3.10.0-1160.el7.local.x86_64) 7 (Core)'' grub2-editenv list reboot --- uname -r 3.10.0-1160.el7.local.x86_64

注意grub2-set-default后设置的是通过cat /boot/grub2/grub.cfg | grep menuentry筛选出的开机启动项



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有