官方网站

官网介绍了内核的基本信息,里面有长期支持版本和具体信息:

官网说明: 

HTTP:网页可供下载各版本压缩包,补丁包,变更列表,工具软件等。

GIT:git代码说明?RSYNC:是什么?

[tarball]长期支持版完整压缩包下载链接,

[pgp]压缩包签名,

[patch]当前版本最新的补丁文件,此补丁文件描述了当前版本所有的补丁修改

[inc.patch],最后2个补丁文件修改信息

[view diff],查看相对上一个稳定版修改的文件信息

[browse],查看当前版本状态源文件

[changelog],查看相对上一个稳定版变更提交信息

内核版本

内核各版本路径里面可看到全部的版本信息:

内核介绍

点击进入一个版本,如3.x中,Index of /pub/linux/kernel/v3.x/,主要分几个部分:

1、ChangeLog

ChangeLog-3.0.10 表示单独某一版补丁的补丁修改日志

ChangeLog-3.0.10.sign 表示更改补丁日志的签名信息

根据日志查看补丁修改 

vi ./ChangeLog-3.15.3 +2522

 进入官网的[browse]页面,输入信息查询:

点击进入就能看到具体的修改信息:

 

2、linux源码

3种不同压缩格式,sign表示签名文件,表示单独某一版源码

3、Linux补丁

gz文件解压:gunzip

xz文件解压:xz -d

bz2文件解压: bunzip2

3种不同压缩格式(.gz文件必有),sign表示签名文件,补丁文件不是单独某一版的修改,而是前面补丁修改的所有累加和,所以可以看到补丁文件size随着补丁号增加而递增。

这样修改的文件都是基于前面的修改,打补丁时也只需打一个补丁。如果是中间补丁版本打新补丁版本会有问题吗?

查看某一版修改只能对比前后2个补丁文件差异,查看ChangeLog里面某一个log的提交日志修改文件怎么看呢?

搜索ChangeLog里面发现某个问题的修改提交在很多的子版本里面都有提交,说明子版本被分支出去后又合入了前面修改的bug:

批量下载补丁日志用于搜索关键字

测试用C代码:下载3.10到3.18变更文件,下载补丁文件类似。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
 
int main(void)
{
 	int major=10;
 	int minor=0;
	int patch=0;
	int count=0;
 	char path[1024]={0,};
 	memset(path, 0, 1024);
 
	while(major <= 18)
	{
		switch(major){
			case 10:
				patch = 108;
				break;
			case 11:
				patch = 10;
				break;
			case 12:
				patch = 69;
				break;
			case 13:
				patch = 11;
				break;
			case 14:
				patch = 79;
				break;
			case 15:
				patch = 10;
				break;
			case 16:
				patch = 63;
				break;
			case 17:
				patch = 8;
				break;
			case 18:
				patch = 20;
				break;
			default:
				break;
		}
		
		for(minor=1;minor<=patch;minor++)
		{
			sprintf(path,"wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.%d.%d", major,minor);
			if(system(path) < 0)
			{
				perror("system");
			}
			else
				count++;
		}
		
		major++;
 
	}
	printf("count=%d\n",count);//count=378
	return 1024;
}

下载后使用grep命令搜索关键字,然后获取出内核补丁版本,然后下载补丁文件进行查看修改差异。

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐