Centos7通过内核源码制作rpm包 | 您所在的位置:网站首页 › 内核源码编译方法 › Centos7通过内核源码制作rpm包 |
安装编译所需软件
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 .xxxxxx替换为自定义内容 编译新内核 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 实验室设备网 版权所有 |