linux内核源码较多,在修改完内核并发布新内核的时候,一般采用补丁的方式进行发布,而不是整个内核打包发布的。
采用补丁的方式发布有很多好处,1.首先体积很小,通常内核修改很小,生成补丁可能不到1k的大小,方便别人获取更新;2.体积小的补丁也方便保存,可以在本地保存好几个版本的内核;3.使用起来非常方便快捷,只需要把补丁放到源码目录,然后输入patch的指令即可完成打补丁。下面以linux0.11的内核演示一下如何生成补丁和如何打补丁。
一、生成补丁
我手头上有两个版本的linux0.11,一个不带中文注释"linux-0.11",一个带中文注释"linux011_new"。生成补丁一般用diff命令,
diff -uprN 原版linux目录 修改过的源码目录 > linux.patch
实际执行的命令是:
sudo diff -uprN linux-0.11/ linux011_new/ > linux.patch
生成的补丁名称是“linux.patch”,其实这个名词可以随便起,不过比较规范都算patch结尾,代表这是个补丁。
二、使用补丁
首先应该明确的是打补丁是需要在原版的linux目录下执行命令的,否则打补丁无效,或者产生类似“.rej”的文件。打补丁的命令是:
patch -p0 > linux.patch
-p后面的参数代表忽略哪一级路径。实际我打补丁的详细信息如下:
root@maya-g450:/home/maya/work_space/github/test# patch -p0 < linux.patch
patching file linux-0.11/boot/bootsect.s
patching file linux-0.11/boot/head.s
patching file linux-0.11/boot/setup.s
patching file linux-0.11/cscope.out
patching file linux-0.11/fs/bitmap.c
patching file linux-0.11/fs/block_dev.c
patching file linux-0.11/fs/buffer.c
patching file linux-0.11/fs/char_dev.c
patching file linux-0.11/fs/exec.c
...................省略若干信息........................
patching file linux-0.11/Makefile
patching file linu