前言

  通常情况rpm包组件管理方式下的linux环境,常用打补丁的方式只有一种:修改spec文件定义的Patch和patch字段,其实spec文件中调用的底层命令还是patch.  因为业务需要要编译内核,需要测试某一阶段不同补丁对内核的影响,但是通过修改spec文件进行编译时每次都是全量编译,验证周期非常长,因为执行rpmbuil -bp SPECS/xxx.spec --define="_topdir `pwd`"会重建BUILD目录;

问题思考

  分析spec中打补丁的本质是调用patch进行打补丁,所以考虑对BUILD下源码目录进行手工打补丁,这样不会每次重建BUILD目录,可以利用Make -j num_of_thread方式进行增量编译,可以快速缩短验证周期;

内核编译注意事项:

解决办法

基本命令语法:
patch [-R] {-p(n)} [--dry-run] < patch_file_name
p:为path的缩写。
n:指将patch文件中的path第n条’/’及其左边部分取消。
-R:卸载patch包。
--dry-run:尝试patch软件,并不真正修改软件。
使用实例:
/home/sense/patch-2.6.19.1
=============================================================
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index d12fb97..c8f96cf 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -333,7 +333,7 @@ acpi_parse_ioapic(acpi_table_entry_heade
/*
   * Parse Interrupt Source Override for the ACPI SCI
   */
-static void acpi_sci_ioapic_setup(u32 bus_irq, u32 gsi, u16 polarity, u16 trigger)
+static void acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger)
=============================================================
此patch文件的path=a/arch/i386/kernel/acpi
[sense@ssn src]$ pwd
/usr/src
[sense@ssn src]$ tree
.
`-- a
`-- arch
       `-- i386
         `-- kernel
            `-- acpi
和a/同目录时:
[sense@ssn src]$ pwd
/usr/src
[sense@ssn src]$ patch -p0 < /home/sense/patch-2.6.19.1   安装补丁
[sense@ssn src]$ patch -p0 -R < /home/sense/patch-2.6.19.1   卸载补丁
和a/arch/同目录时:
[sense@ssn src]$ pwd
/usr/src/a/
[sense@ssn src]$ patch -p1 < /home/sense/patch-2.6.19.1   安装补丁
[sense@ssn src]$ patch -p1 -R < /home/sense/patch-2.6.19.1   卸载补丁
和a/arch/i386/同目录时:
[sense@ssn src]$ pwd
/usr/src/a/arch/
[sense@ssn src]$ patch -p2 < /home/sense/patch-2.6.19.1   安装补丁
[sense@ssn src]$ patch -p2 -R < /home/sense/patch-2.6.19.1   卸载补丁

最新文章

  1. TP5验证规则
  2. CPU
  3. input lable水平对齐
  4. Javascript实现AutoComplete自动匹配功能
  5. JavaScript Function(函数表达式)
  6. /cdrom /media /mnt
  7. javascript高级知识点——临时作用域
  8. android 高效显示Bitmap - 开发文档翻译
  9. Swift3GCD
  10. ListView在异步加载动态图片时,往往最后一项或几项被遮盖(IM场景居多)
  11. PC-lint集成于SourceInsight 范例以及简单分析;提高代码的健壮性;
  12. 201521123015 《JAVA程序设计》第11周学习总结
  13. 不想再被鄙视?那就看进来! 一文搞懂Python2字符编码
  14. win10 安装 face_recognition
  15. docker 12 docker容器数据卷
  16. 关于在 java 8 下开启 TLS_RSA_WITH_3DES_EDE_CBC_SHA 支持 xp ie8 tls1.0 的正常访问
  17. elasticsearch6.0.0源码导入到idea总结
  18. resure挽救笔记本系统和一些相关的操作记录
  19. HDU - 1400 Mondriaan&#39;s Dream
  20. SpringBoot08 请求方式、参数获取注解、参数验证、前后台属性名不一致问题、自定义参数验证注解、BeanUtils的使用

热门文章

  1. python 列表总结大全
  2. Vue / keep-alive使用
  3. 安卓构架组件&mdash;&mdash;向项目添加组件(Adding Components to your Project)
  4. valueOf()对象返回值
  5. 基于英伟达Jetson TX1的GPU处理平台
  6. React(6) --双向数据绑定及列表数据循环
  7. React(5) --绑定函数事件
  8. 自己关于SSM框架的搭建
  9. Go 数组(2)
  10. vue中引入了sass,又引入cssnano报错