记录编译与修改龙蜥Anolis OS内核的过程(一):下载源码与环境准备

记录编译与修改龙蜥Anolis OS内核的过程(一)

1. 安装Anolis OS 8.9

下载AnolisOS-8.9-x86_64-dvd.iso并安装。

使用uname -a查看内核版本为5.10.134-18.an8.x86_64。

[root@localhost cloud-kernel]# cat /etc/anolis-release 
Anolis OS release 8.9
[root@localhost cloud-kernel]# uname -a
Linux localhost.localdomain 5.10.134-18.an8.x86_64 #1 SMP Fri Dec 13 16:32:58 CST 2024 x86_64 x86_64 x86_64 GNU/Linux

2. 下载内核源码包

  • 安装yumdownloader
yum install yum-utils
  • 下载内核源码rpm包 kernel-5.10.134-18.an8.src.rpm
yumdownloader --source kernel

3. 准备工作

  • 安装rpmbuild工具
yum install rpm-build
  • 安装其它编译依赖
  1. 查询依赖
[root@localhost ~]# rpm -qp --requires kernel-5.10.134-18.an8.src.rpm
asciidoc
audit-libs-devel
bash
bc
binutils
binutils-devel
bison
bzip2
coreutils
diffutils
dwarves
elfutils
elfutils-devel
findutils
flex
gawk
gcc
gettext
git
gzip
hmaccalc
hostname
java-devel
kmod
libcap-devel
libcap-ng-devel
libnl3-devel
m4
make
ncurses-devel
net-tools
newt-devel
numactl-devel
openssl
openssl-devel
patch
pciutils-devel
perl(ExtUtils::Embed)
perl-Carp
perl-devel
perl-generators
perl-interpreter
python3-devel
python3-docutils
redhat-rpm-config
rpm-build
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rsync
tar
which
xmlto
xz
xz-devel
zlib-devel
  1. 安装依赖
    查询得到的依赖比较多,不同的人缺失的包可能不同,用下面的命令把依赖的包全部装一遍。
    如果已经安装了,会自动跳过。
rpm -qp --requires kernel-5.10.134-18.an8.src.rpm | awk '{print $1}' | xargs yum install -y

4. 编译

  • 安装src.rpm包,得到/root/rpmbuild目录
    • 此目录底下是把src.rpm直接解压所得,源码没有准备出来
rpm -ivh kernel-5.10.134-18.an8.src.rpm
  • 安装src.rpm包之后,通过spec文件拿到内核源码,源码在/root/rpmbuild/BUILD目录
rpm -ivh kernel-5.10.134-18.an8.src.rpm
rpmbuild -bp rpmbuild/SPECS/kernel.spec
  • 从src.rpm构建拿到内核源码,不进行构建
rpmbuild -rp kernel-5.10.134-18.an8.src.rpm

解压缩源代码并应用补丁,源码在/root/rpmbuild/BUILD目录
在这里插入图片描述

  • 从src.rpm构建二进制RPM包
rpmbuild -rb kernel-5.10.134-18.an8.src.rpm
  • 其它用法参考rpmbuild --help
[root@localhost ~]# rpmbuild --help
用法: rpmbuild [选项...]

适用于 [ <specfile> | <tarball> | <source package> ] 的构建选项:
      -bp                        依据 <specfile> 从 %prep (解压缩源代码并应用补丁) 开始构建
      -bc                        依据 <specfile> 从 %build (%prep 之后编译) 开始构建
      -bi                        依据 <specfile> 从 %install (%prep、%build 后安装) 开始构建
      -bl                        依据 <specfile> 校验 %files 部分
      -ba                        依据 <specfile> 构建源代码和二进制软件包
      -bb                        依据 <specfile> 构建二进制软件包
      -bs                        依据 <specfile> 构建源代码软件包
      -rp                        仅执行 <source package> 的 %prep 部分(解压缩源代码并应用补丁)
      -rc                        仅执行 <source package> 的 %build 部分(先执行 %prep,然后 %build)
      -ri                        依据 <source package> 从 %install (%prep、%build 然后安装)开始构建
      -rl                        依据 <source package> 校验 %files 部分
      -ra<source package> 中构建二进制和源代码 RPM 包
      -rb                        仅从 <source package> 中构建二进制 RPM 包
      -rs                        仅从 <source package> 中构建源代码 RPM 包
      -tp                        依据 <tarball> 从 %prep (解压源代码并应用补丁)开始构建
      -tc                        依据 <tarball> 从 %build (%prep,之后编译)开始构建
      -ti                        依据 <tarball> 从 %install (%prep、%build 然后安装)开始构建
      -ta                        依据 <tarball> 构建源代码和二进制软件包
      -tb                        依据 <tarball> 构建二进制软件包
      -ts                        依据 <tarball> 构建源代码软件包
      --rebuild                  依据 <source package> 构建二进制软件包
      --recompile                依据 <source package> 从 %install (%prep、%build 然后安装)开始构建
      --buildroot=DIRECTORY      重载构建根路径
      --build-in-place           在当前目录中构建
      --clean                    完成后移除构建树
      --nobuild                  不执行任何构建步骤
      --nodeps                   不检验构建依赖
      --nodirtokens              生成和 rpm v3 包管理(旧版本)兼容的软件包头
      --noclean                  构建过程中不执行 %clean 步骤
      --noprep                   不执行构建的 %prep 阶段
      --nocheck                  构建过程中不执行 %check 步骤
      --rmsource                 完成时移除源代码
      --rmspec                   完成时移除 specfile
      --short-circuit            直接跳转到指定步骤 (仅限 c,i)
      --target=CPU-VENDOR-OS     重载目标平台

所有 rpm 模式和可执行文件的通用选项:
  -D, --define=“MACRO EXPR”      定义值为 EXPR 的 MACRO
      --undefine=MACRO           未定义的 MACRO
  -E, --eval=“EXPR”              打印 EXPR 的宏展开
      --target=CPU-VENDOR-OS     Specify target platform
      --macros=<FILE:…>          从文件 <FILE:...> 读取宏,不使用默认文件
      --noplugins                不要启用任何插件
      --nodigest                 不校验软件包的摘要
      --nosignature              不验证软件包签名
      --rcfile=<FILE:…>          从文件 <FILE:...> 读取宏,不使用默认文件
  -r, --root=ROOT                使用 ROOT 作为顶级目录 (default: "/")
      --dbpath=DIRECTORY         使用 DIRECTORY 目录中的数据库
      --querytags                显示已知的查询标签
      --showrc                   显示最终的 rpmrc 和宏配置
      --quiet                    提供更少的详细信息输出
  -v, --verbose                  提供更多的详细信息输出
      --version                  打印使用的 rpm 版本号

Options implemented via popt alias/exec:
      --with=<option>            enable configure <option> for build
      --without=<option>         disable configure <option> for build
      --buildpolicy=<policy>     set buildroot <policy> (e.g. compress man pages)
      --sign                     generate GPG signature (deprecated, use command rpmsign instead)
      --nodebuginfo              do not generate debuginfo for this package

帮助选项:
  -?, --help                     显示这个帮助信息
      --usage                    显示简短的使用说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值