openSUSE使用教程给内核源代码打补丁

系统 Linux
上篇报道已经将原始的内核源代码放入 /usr/src/linux-版本号 的目录中。在上篇报道使用的例子中,使用官方 src.rpm 的源代码应该在 /usr/src/linux-2.6.16 目录;而自行下载原始内核源码的在 /usr/src/linux-2.6.18 目录。

内核源码升级可能使某个补丁失效,所以并不是一个补丁可以"补"所有版本内核的。如果补丁无法在新内核上使用,有两种情况,一是内核已经被收入内核不必再"补",或者补丁已经对新版内核代码失效。不管如何,如果出现错误请搜索或根据原补丁自行制作新补丁。

openSUSE使用教程选择需要的补丁
这是考验你对系统了解的时候,地球上硬件和补丁众多,具体什么系统和硬件选择什么补丁并不在本文档讨论范围中。但选择需要补丁的标准很简单,首先是硬件需要,其次是功能需要,***是心理需要。没必要把找到的所有补丁全部打上,极端一点说,补丁越多,系统越慢。

硬件需要是根据你的硬件来选择补丁,小部分硬件使用原始内核会出现功能不同程度的紊乱或衰弱,也有的并不影响正常使用,只不过在日志中不断报错;此时可以用补丁修复这种情况。

在 kernel-source 的 src.rpm 中有大量的补丁存在,解压 patches 开头的几个 bz2 压缩文件。先 root 权限 lsmod 看看已经加载哪些模块,再找找那些补丁文件名中有没有带其中某个模块名称。如果有,再核对系统架构以及其他信息。不必每个文件名都仔细看,大体浏览下有印 象就可以。如果你是 Acer 的笔记本那么文件名中带 ibm asus 的基本与你无关;同理,如果你是 32 位的系统,文件名中带 x86_64 ia64 ppc 的补丁对你也没有意义;如果你使用 AMD CPU 和芯片组那就不必看名称带 intel 字样的补丁。实在拿不准是否需要该补丁,可以点开看看文件开头的注释信息。

切记,如果你对自己的硬件只有大概的了解,可以先不打或少打几个你认为是必要的硬件方面补丁,出现问题再根据日志的提示,搜索看是不是需要某个补丁,然后打上补丁重新编译。功能需要是某些软件需要补丁实现自己的功能,为了使这些软件正常运行而不得不打补丁,比如下面要提到的 Bootsplash 补丁。如果你对这些也不了解,也可以等出了问题再搜索看看。心理需要是对某些补丁出于各种原因产生感情依赖,不打该补丁会导致用户进入恶劣心境。为避免严重的不可预知的后果,此时应该打相应补丁避免此类情况发生。

openSUSE使用教程常见补丁系
MM系补丁:
http://kernel.org/patchtypes/mm.html
由 2.6 维护者 Andrew Morton 整理的一系列补丁,有很多对内核部件的升级和硬件兼容补丁。非常重要且常用。

AC系补丁:
http://kerneltrap.org/forum/linux/kernel/2.6/ac
一套由 Redhat 的 Alan Cox 维护的补丁集。一般是增加硬件支持的补丁。

CK系补丁:
http://members.optusnet.com.au/ckolivas/kernel/
一套由 Con Kolivas 维护的补丁集。含大量性能优化补丁,针对桌面和服务器各有一套。如果你想给系统提速,可以挑选使用其中部分补丁,全部使用可能导致死机。

openSUSE使用教程SUSE 常用补丁
Apparmor 补丁- 配合 Novell Apparmor 软件,作为 SUSE 特有安全模块。
Bootsplash 补丁- 开机进入系统时的动画。
flush-o-fat 补丁 - 写入 FAT 格式硬盘加 -o 提速参数,不加此补丁可能无法自动挂载 FAT 格式移动硬盘。

openSUSE使用教程打补丁的顺序和方法

顺序
打补丁有顺序,一般是先打官方提供的增量升级补丁,其次是硬件需要的补丁,之后是功能需要补丁。心理需求补丁的优先级在所有补丁之上,甚至远远高于内核源代码本身。
使用 src.rpm 才需要增量升级补丁,作用是将增量升级原有内核源码至新版本;自行下载的原始内核可以是***的,不必走这一步。

openSUSE使用教程单个补丁文件
单个补丁文件可能有如下后缀 .diff .patch 或者没有后缀,本质上都是纯文本文件,可用文本编辑器打开修改。补丁方法如下:
#cd /usr/src/linux-版本号#patch -p1 -i /路径/补丁文件名
例如,我对自行下载的纯净内核打单文件补丁 bootsplash ,实现开机进入 X 前的动画,下载到适合***版本内核的补丁,文件是 /home/truth/new/patches/bootsplash-2.6.18.diff
#cd /usr/src/linux-2.6.18#patch -p1 -i ~truth/new/patches/bootsplash-2.6.18.diff

openSUSE使用教程gz/bz2 格式的补丁
并不是所有 gz/bz2 压缩文件都可以用下面方式打上补丁。这类文件必须仅仅包含一个以上单文件补丁,不应含其它杂质;所以用本方法应先打开 gz/bz2 压缩包检查是否符合条件。这种补丁方法本质上就是按照压缩包内文件名升序排列的顺序挨个打上单文件补丁。使用命令为:
#cd /usr/src/linux-版本号gz 压缩包: #zcat 路径/文件名.gz | patch -p1bz2 压缩包: #bzcat 路径/文件名.bz2 | patch -p1
这里用上面提到的使用官方 src.rpm 的源码作为例子,内核增量补丁是从 src.rpm 解压出来的 patches.kernel.org.tar.bz2 在 /home/truth/new/patches/ 目录
#cd /usr/src/linux-2.6.16#bzcat ~truth/new/patches/patches.kernel.org.tar.bz2 | patch -p1
有些压缩包中的补丁对所在路径有要求,一般将它们放到 /usr/src/ 目录即可。关于 patch 命令更多用法请 info patch ,本文不作深究。

【编辑推荐】

  1. 硬盘安装openSUSE11的具体实现
  2. 介绍lupa的4个openSUSE设置源
  3. Opensuse源列表推荐
  4. openSUSE安装源软件指南
  5. openSUSE mplayer编译安装的实现过程


 

责任编辑:chenqingxiang 来源: linuxdiyf
相关推荐

2010-06-10 10:20:29

openSUSE使用教

2010-06-10 10:11:35

openSUSE使用教

2010-06-10 10:41:38

openSUSE使用教

2021-02-05 20:36:21

Linux内核补丁内核开发

2014-04-01 16:52:10

SUSEkGraftLinux内核

2010-06-10 10:49:32

openSUSE使用教

2010-07-29 16:44:18

系统管理员系统更新安全补丁

2010-03-26 14:22:03

Chrome浏览器

2020-05-11 17:53:05

Windows微软补丁

2011-08-17 11:02:41

2009-03-03 11:23:21

2011-05-17 14:34:24

2009-10-20 10:40:23

补丁远程系统

2010-12-28 13:22:46

2011-07-21 16:44:04

2010-03-29 16:48:18

Nginx内核优化

2019-07-01 06:30:07

微软开发Linux

2013-10-31 14:15:10

2011-03-30 09:59:31

ThunderboltHTC

2015-01-05 14:24:12

点赞
收藏

51CTO技术栈公众号