Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114607
  • 博文数量: 153
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 882
  • 用 户 组: 普通用户
  • 注册时间: 2022-03-12 10:39
个人简介

不积小流,无以成江海。

文章分类

全部博文(153)

文章存档

2023年(50)

2022年(90)

我的朋友

分类: 系统运维

2022-09-15 15:26:33

需求描述:修改drivers目录的一行.c代码,然后编译内核,将编出的rpm替换原始ISO里的文件,并作用U盘启动盘。

步骤分解:
1、下载对应的源码,先不修改,在虚拟机上编译;并在虚拟机上重启来验证;
2、将1中的rpm包替换到原始ISO中,生成新的ISO (名字为new),基于new在vmware中创建虚拟机;
3、修改源码并编译,并在2中验证;
4、到实际环境中验证。

0915:当前1、2已完成。先总结下踩过的坑。
结论1: 如果编译源码,虚拟机安装时,硬盘大小设置的大点,默认是20G,建议60G; 虚拟机上的安装的包勾选开发需要的gcc等(在图形化安装是,有software包的选择)
结论2:转载下3个比较好的帖子。

第一个, 比较好的编译内核的链接:
CentOS7 内核编译
作者:芒子
https://www.jianshu.com/p/28cbb310bb8a?u_atoken=b044f63d-084a-4e66-8dc1-2eab96f15323&u_asession=01AMB3oHighDbWLfgRNgemzc-DQbiO-0HAtgenR1p9cSZhXoP9P0DBfz0yS5nfv0s3X0KNBwm7Lovlpxjd_P_q4JsKWYrT3W_NKPr8w6oU7K-o0n2k3Q5KG1Qeu6uR1zPmPn5sJEo90JdruCukG2OVYmBkFo3NEHBv0PZUm6pbxQU&u_asig=05ESJ0rAXmqHXPIepLzgwTZgyXMilrOGjyLtiUeel9MYFR0d4fnhB40XxMRi8IR89SQbnTa12bN-1KC3519tnOX-XNNeXIj3WwEtwIjsJlQGSlsFbtPG6ajgCjqsFv_EOKaEO3S24XyAIN6PcuxF2p5yL4UqtxcDGiV_QjnZ1GcfD9JS7q8ZD7Xtz2Ly-b0kmuyAKRFSVJkkdwVUnyHAIJzZW4b9XpL6GvbfdEwyk1B-f2ZvGLAkPbadELzfQI3etuLoLNx2oKfcIBo1yjPF0Bne3h9VXwMyh6PgyDIVSG1W_bgbo51Pu8l7Hri8EwK8vHjuZXcjltmzQ68zJCLh7e-6K3VZ_E6sK44aycIiaCm_aXZwH3Sv10KgCL1Fh2sjfRmWspDxyAEEo4kbsryBKb9Q&u_aref=X33%2FmLIOfvr7YSUNGFjn9OACWtQ%3D
第二个:
替换CentOS ISO内核
作者:starguard,比较具体。
链接: https://starguard.cn/blog/post/admin/%E6%9B%BF%E6%8D%A2CentOS-ISO%E5%86%85%E6%A0%B8#title-4

ps:本人参照此贴,但略过了下面3个部分:

Initrd.img以及squashfs.img,还有umlinuz

制成的ISO (如下centos7.iso),  然后基于此ISO创建虚拟机后,起来的内核是自己编译的。


另一个是 无名老卒的《基于centos7.6制作自定义的ISO镜像》,地址:
https://
www.
wumingx.com/linux/centos-iso.html

0921:注意:对于第3步(修改源码,编译内核),可以参考如下的帖子:
https://blog.csdn.net/weixin_39999781/article/details/116727253
linux 内核改包,CentOS 7内核源码包(kernel.src.rpm)的修改和打补丁编译,但由于我改的是.c文件,利用“修改源码后压缩成.tar.xz并替换原有的.tar.xz”的方式遇到了问题,
1 out of 1 hunk ignored -- saving rejects to file arch/x86/kernel/setup.c.rej
于是又尝试补丁的方式,也遇到了问题。
Bad exit status from /var/tmp/rpm-tmp.HFzvZm (%prep)
  同事说文件的格式可能有问题,让情况下patch文件,只保留个custom.patch的空文件,这样编译过了。说明很可能就是格式有问题。
后来把自己做的patch和SOURCES目录下的原有的patch内容、格式做了比较,自己的patch确实格式上有些差异。不过正好自己修改的代码网上有对应的diff文件,就把diff文件改成了补丁的名字custom.patch,就编译过了。怀疑要用diff git生成的patch才能被编译脚本识别。

待续。


阅读(626) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~