http://www.moses.uklinux.net/patches/dontdiff 
但是,就我而言,我还是不知道为什么要这么做,或者说不进行make distclean的目的是什么。如果有那位朋友知道的话,非常感谢你告诉我一声,或者是把这部分内容补充到这份文档中。 




制作一个官方的补丁文件 
你已经安装了一个新的Linux,我们称它为Linux-2.4.2。但是差不多每个月,都会有新的Linux补丁推出,这些补丁或者修补了一些问题,或者支持了一些新的硬件或其它新的特性。所以,当你安装了Linux-2.4.2几个月以后,就会有新的稳定发行版推出,我们称它为Linux-2.4.5。 


我们将要描述的过程解释了你如何最简便的将自己的Linux从2.4.2升级为最新的2.4.5。 

关键的窍门在于使用一系列的补丁文件。 
***************************************************************************** 
第0步:理解官方的Linux补丁文件是如何制作的。 
***************************************************************************** 

每一个官方的Linux补丁文件都是一个使用diff工具在两个连续的Linux版本中所有文件间产生的diff文件。 

作为一个例子,我们假定这个补丁文件是用来将Linux-2.4.2升级到Linux-2.4.5的,这个补丁文件通过如下方法获得: 
cd /usr/src/linux-2.4.2 
make distclean 
cd /usr/src/linux-2.4.3 
make distclean 
ln -s linux-2.4.2 linux 
diff -ruN linux linux-2.4.3 > patch_2.4.3 
gzip patch_2.4.3 

这些补丁文件按照顺序使用gzip压缩,以节省Linux发行版本站点的下载时间。例如我们生成的补丁文件——patch_2.4.3.gz,就是一个经过压缩的补丁文件。 

Linux官方补丁总是认为缺省的源代码子树名字为“Linux”。这种方法可能有点混淆,但是它允许一些(版本)连续的补丁不用修改源代码子树的名字就可以连续的被修改到源代码子树上。(下面我们可以看到) 

这些补丁文件的名字都是标准的: 
patch_2.4.3 记录着linux-2.4.3 和 linux-2.4.2之间的版本差异。 
patch_2.4.4 记录着linux-2.4.4 and linux-2.4.3之间的版本差异。 
patch_2.4.5 记录着linux-2.4.5 and linux-2.4.4之间的版本差异。 

在我们的例子中,我们正好需要这3个补丁文件,他们的名字是patch_2.4.3.gz、patch_2.4.4.gz和patch_2.4.5.gz,用来将Linux-2.4.2升级到Linux-2.4.5。 

***************************************************************************** 
第1步:升级Linux源代码目录的名字和Linux符号连接。 
***************************************************************************** 

假定内核源代码的路径是:/usr/src/linux-2.4.2/ 
并且所有需要的压缩补丁文件都已经存放在目录/usr/src 中了。 
执行下列命令: 
cd /usr/src 
mv linux-2.4.2 linux-2.4.5 
rm linux 
ln -s linux-2.4.5 linux 

***************************************************************************** 
第2步:清理源代码目录(删除中间目标文件和配置文件)。 
***************************************************************************** 
执行下列命令: 
cd linux 
make distclean 
***************************************************************************** 
第3步:解压缩补丁文件。 
***************************************************************************** 
in our example, execute: 

cd /usr/src 
gunzip patch-2.4.3.gz 
gunzip patch-2.4.4.gz 
gunzip patch-2.4.5.gz 
***************************************************************************** 
第4步:重复执行patch命令。 
***************************************************************************** 
执行下列命令: 
for i in 3 4 5; do 
patch -p0 < patch_2-4.$i 
done 
其中 
patch -p0 < patchfile 

命令作用在输入的补丁文件上,并将对应的老版本的内核源代码中所有的文件和子目录升级到对应的新版本(在我们的例子中,老版本的内核源代码目录是/usr/src/linux)。在我们的例子中,旧的内核源代码版本是Linux-2.4.5kh2。这里参数–p0用来保证文件名不被改变(既不被修改,也不被删除)。 
目标目录是Linux,就是说旧版本的内核源代码经过patch以后,就被升级成了新版本的内核源代码。 

相关文章:

  • 2022-12-23
  • 2021-11-29
  • 2022-02-07
  • 2022-12-23
  • 2021-07-27
  • 2021-12-21
  • 2021-09-09
猜你喜欢
  • 2021-06-19
  • 2022-01-30
  • 2022-01-30
  • 2021-11-08
  • 2022-01-14
  • 2022-12-23
  • 2021-06-10
相关资源
相似解决方案