linux补丁的使用

在u-boot跟linux内核(台湾叫核心)编译过程中, 有个东西叫补丁, 其实通过某些补丁文件, 可以知道它对原始的版本做过哪些修改, 比前面那个帖子的挨个文件挨个文件的修改, 显得要高级那么一丢丢.

打开韦老师的u-boot的patch文件, 可以发现有这些东西:

diff -urN u-boot-1.1.6/board/100ask24x0/100ask24x0.c u-boot-1.1.6_jz2440/board/100ask24x0/100ask24x0.c
--- u-boot-1.1.6/board/100ask24x0/100ask24x0.c    1970-01-01 07:00:00.000000000 +0700
+++ u-boot-1.1.6_jz2440/board/100ask24x0/100ask24x0.c    2010-11-26 12:54:37.034090906 +0800
@@ -0,0 +1,96 @@

....

1. diff, 从字面意思来说,diff的功能就是用来比较两个文件的不同,然后记录下来,也就是所谓的diff补丁。语法格式:diff 【选项】 源文件(夹) 目的文件(夹),就是要给源文件(夹)打个补丁,使之变成目的文件(夹),术语也就是“升级”。下面介绍三个最为常用选项:
    -r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。
    -N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。
    -u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。

2. patch文件的结构:

补丁头
补丁头是分别由---/+++开头的两行,用来表示要打补丁的文件。---开头表示旧文件,+++开头表示新文件。

--- u-boot-1.1.6/board/100ask24x0/100ask24x0.c    1970-01-01 07:00:00.000000000 +0700
+++ u-boot-1.1.6_jz2440/board/100ask24x0/100ask24x0.c    2010-11-26 12:54:37.034090906 +0800

一个补丁文件中的多个补丁
一个补丁文件中可能包含以---/+++开头的很多节,每一节用来打一个补丁。所以在一个补丁文件中可以包含好多个补丁。

块是补丁中要修改的地方。它通常由一部分不用修改的东西开始和结束。他们只是用来表示要修改的位置。他们通常以@@开始,结束于另一个块的开始或者一个新的补丁头。

即, 增加一个文件, 内容是...

块的缩进
块会缩进一列,而这一列是用来表示这一行是要增加还是要删除的。
块的第一列
+号表示这一行是要加上的。
-号表示这一行是要删除的。
没有加号也没有减号表示这里只是引用的而不需要修改。

3. patch命令, 简单的说,patch就是利用diff制作的补丁来实现源文件(夹)和目的文件(夹)的转换。这样说就意味着你可以有源文件(夹)――>目的文件(夹),也可以目的文件(夹)――>源文件(夹)。下面介绍几个最常用选项:
    -p0 选项要从当前目录查找目的文件(夹)
    -p1 选项要忽略掉第一层目录,从当前目录开始查找。

韦老师的板子的补丁命令:

$ tar xjf u-boot-1.1.6.tar.bz2
$ cd u-boot-1.1.6
$ patch -p1 < ../u-boot-1.1.6_jz2440.patch
$ make 100ask24x0_config
$ make

本文参考: http://www.cnblogs.com/itech/archive/2009/08/19/1549729.html

时间: 2024-10-10 16:53:37

linux补丁的使用的相关文章

Linux 特殊命令--dd 及Linux补丁制作

一.dd 命令详解: 官方解释: convert and copy a file ---转换并复制文件 dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换 语法: dd [OPERAND]... dd OPTION 参数: if=FILE       read from FILE instead of stdin 源文件,用于指定数据流来源 of=FILE     write to FILE instead of stdout

Linux 补丁 的简单使用: 制作补丁,打补丁,撤销补丁

背景: 补丁的使用对于嵌入式开发人员来说,在维护或者开发中都比较方便. 制作补丁: diff - 逐行比较文件. 格式: diff   参数   旧文件/旧文件夹   新文件/新文件夹    (注意顺序 新旧文件夹的顺序) diff有很多参数,但是在制作补丁中主要使用以下参数. -N 将不存在的文件看作是空的 -a 将所有文件都视为文本文件 -u 以合并的方式来显示文件内容的不同 -r 以递归地方式比较所有子目录 // 比较Test2在Test1版本上的更新并输出 diff -Naru Test

Linux打补丁的一些问题

linuxpatchlinux内核文档commandheader类unix操作系统有一个很有趣的特性就是源代码级的补丁包.在windows上我们打补丁都是运行一个可执行的程序,然后就可以把补丁打完了,这对于最终用户是非常方便的,但是对我们这些求知欲比较强的Linux fans来说就有点不过瘾了,因为我们不知道里面是怎么做的.而Linux的补丁就有趣多了,我们首先获得程序的源代码和对应的补丁文件,然后给源代码打补丁,产生新的源代码文件.然后再编译这个新的源代码文件,就获得了打过补丁的新程序了. 如

Linux及FL2440使用过程遇到的各种问题和小技巧

原文链接:http://www.cnblogs.com/NickQ/p/8900474.html ## Linux及FL2440使用过程遇到的各种问题和小技巧 关于移植linux根文件系统中的问题 在最小内核移植并使用文件系统时,记得配置并保存好u-boot相关参数,否者会导致Linux内核找不到文件系统死掉. 文件系统时 JFFS2 时,设置的bootcmd和bootargs参数: set bootcmd 'nand read 30008000 100000 400000; bootm 300

【华为云技术分享】Linux内核模块依赖图绘制(1)

在上一期中,我们以Linux网络模块中的CAKE系统为例,介绍了对Linux补丁源码的分析方法,这一期中我们将介绍如何查看Linux内核中各模块的依赖关系. 一.查看Linux内核模块依赖关系 Linux内核中各个模块之间有相互依赖的关系,表现为一个模块中的文件可以包含另一个模块中的头文件,从而实现对其它模块中定义的函数和变量的调用. 为了查看模块之间的依赖关系,我们可以使用lsmod命令,该命令展示了内核已装载模块的模块列表和各个模块所依赖的模块.如果读者已经按照“Linux内核编程环境”小节

企业信息安全专题之如何避免信息泄漏探讨---活动总结

这是应国内某知名IT论坛相邀,作为嘉宾来参加互联网安全的交流活动话题的总结,最后感谢大家的参与,活动已经圆满活动结束,由于时间关系,只能每天23:00到01:00期间跟大家交流,但是还是抵不过大家的热情,提出了N个问题,本次总结文章应彭总要求,随机挑选了几个话题匆匆忙忙写了一点,,排名也不分先后,请大家见谅! 活动的背景 网络安全在很多人看来,感觉非常的神秘,普通非IT群众我就不说了,我估计,很多非互联网行业的老板都会有这样心声:"不就是一个网络安全嘛,公司的那些信息部,IT部真的是烦死了,经常

视频学习记录day02

20170309 11:00-12:50vm安装centos系统  swap 内存1.5倍把   8G内存以上就8G swap把      /boot  200M  其他的空间都给 / 根目录下载  mirrors.aliyun.com 这是国内镜像网站安装6.7  选择的是最小化安装 最安全嘛  可选包 选择 base  debugs tools和  开发环境包tools 设置ip   setup  该配置实际修改的配置  就是/etc/sysconfig/network-scripts/if

国内云计算的缺失环节: GPU并行计算(转)

[IT时代周刊编者按]云计算特有的优点和巨大的商业前景,让其成为了近年来的IT界最热门词汇之一.当然,这也与中国移动互联网的繁荣紧密相关,它们需要有相应的云计算服务作为支撑.但本文作者祁海江结合自身的经验,对国内目前的云计算服务进行观察后认为,国内云服务商多数采用过于简单粗放的"远程机房+移动大硬盘"模式,不能满足并行图形处理的计算需求,"应认清技术潮流,整合前沿计算工具,尽快推进云GPU并行计算服务,促进中国移动互联网整体技术水准攀升."那么云GPU并行计算服务有

Linux内核补丁批量自动下载工具

Linux kernel官网cgit工具不支持按变更代码进行补丁搜索,想到个办法就是把补丁都抓下来,这样可以在本地搜索.花了2个小时写了个小工具,话不多说,直接看效果: E:\docs\TOOLS\python\patch_spider>python patch_spider.py linux-3.10.y fs/ubifs 2013-08-15:get patches info...2016-08-27 eed1a4028c96cabb79747ee01e17b1057b01027c UBIF