如何更方便的查看Linux内核代码的更新记录

如何更方便的查看Linux内核代码的更新记录,第1张

在官方http://git.kernel.org/网站可以找到linux的各种git更新记录,比如virt/kvm/kvm.git,通过这个链接,可以看到kvm的各种更新。

看我们重点关注的Linux 2.6内核的更新情况,我们知道Linux 2.6内核是由linus本人维护的,所以对应的git链接为:linux/kernel/git/torvalds/linux-2.6.git,从显示来看,这个和另外一个链接linux/kernel/git/torvalds/linux.git已经没有什么差别,估计是因为linux 3.x版本的引入以及版本仓库管理做了改进与优化,不过没关系,不影响我们继续了解这个官方web git库。

首先,查找我们关注的对应版本,这在linux/kernel/git/torvalds/linux-2.6.git页面上点击tags链接即可进入到所有版本列表,http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.gita=tags,打开界面如下:

在这个页面就能找到对应的版本,以2.6.38.8为例,对应的条目即为Linux 2.6.38-rc8:

这里有好几个链接,不过点几下会发现都链到同一处,所以我们直接看最快的路径,shortlog和log,这两个链接点开后显示的都是修改日志,只是shortlog显示得比较紧凑而已。点开shortlog:

点击第一个条目:

2011-03-08 Linus Torvalds Linux 2.6.38-rc8 v2.6.38-rc8 commit | commitdiff | tree | snapsho

的tree链接,在这里可以看到2.6.38.8的所有最终代码,也就是和从http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.8.tar.bz2下载的代码一致。

下面我们举个示例,查看一下nmi到2.6.38.8这个版本为止都大致有什么更新?

跟着“[linux/kernel/git/torvalds/linux-2.6.git] / arch / x86 / include / asm /”一路链接点一下来,到这里:

找到nmi.h文件(这个文件跟NMI相关)条目,点击后面的history链接:

可以看到,从2008-10-23到当前版本的所有变动都有了。比如第一个条目2011-01-07有对nmi做修改提交,后面的commitdiff就是提交的更新内容,diff to current当然就不要了,因为自然是commitdiff一致,而其他条目则需要diff to current,因为它们的commitdiff是与后面一个版本的不同,而diff to current是针对Linux 2.6.38-rc8的不同;如果要看从2008-10-23到Linux 2.6.38-rc8的所有更新,只需点击2008-10-23这个条目的diff to current链接即可。

上面示例比较简单,我也说得比较粗糙,主要是由于里面的链接非常的多,一个个描述起来比较麻烦,贴图太多也只是浪费我个人网站的服务器空间而已,最好的办法是自己动手去点下链接,查看一下内容,几个回合肯定就能摸索清楚个一二了。

我们经常听到:系统发育树、系统进化树、系统发生树,其实都是为了推测物种进化机制、预测机制背后的关键作用位置

基于距离的方法包括:UPGMA(现在很少用了)、ME(Minimum Evolution 最小进化法)、NJ(Neighbor-Joining 邻接法)

基于特征:MP(Maximum parsimony 最大简约法)、ML(Maximum likelihood 最大似然法)、BI(Bayesian Inference贝叶斯法)

建树完成,一般需要用bootstrap(自展率)或者Posterior probability(后验概率)来评估

这种方法是最准确,但同时也最慢【貌似这是软件的通病,比如比对软件STAR也是如此】

软件的官网在: https://nbisweden.github.io/MrBayes/download.html

提供了pdf的官方教程【后台回复“mb”获取】

软件安装可以选择三大系统平台,但是我还是比较推荐linux,能用服务器就用服务器运行,一是节省时间,二是减少自己电脑消耗。

安装也很简单,直接用conda安装就好,为了避免软件安装过程中出现一些潜在的冲突问题,可以新建一个conda 环境

快速教程分为四部分:读取Nexus文件、设置进化模型、运行程序、归纳样本

数据格式需要是Nexus,包含比对好的核苷酸或氨基酸序列、形态学数据、限制性位点数据或者这四种数据的混合。【关于Nexus格式的介绍: http://wiki.christophchamp.com/index.php?title=NEXUS_file_format 】

Nexus数据中,不同的数据支持的字符是规定好的,例如

如果出现某些模糊的位点,可以用圆括号或者花括号注释,例如

使用 execute或者exe + 文件名(有路径的需要写路径) 来加载.nex文件

在加载数据以后,我们可以使用 showmodel 来看看针对自己的数据类型,有哪些模型可选,然后需要用到的命令: lset 定义模型结构, prset 定义模型参数的先验概率分布

lset:使用 help lset 看一下怎么设置lset lset <parameter>=<option>... <parameter>=<option>

还有一个表格,表示了参数及当前设置

行首:Model setting for partition 1,表示的是你要比较的序列都是同一类型,如果不同类型就会分成不同的partition;

第一个参数 Nucmodel : 设置核苷酸替换类型。默认是4by4(意思是核苷酸的四种形式ACGT/U);Doublet是核糖体DNA(即编码rRNA的序列)的成对茎区 [paired stem regions of ribosomal DNA]; Codon是利用密码子分析DNA序列;Protein也就是DNA转变的氨基酸序列;

第二个参数 Nst :用数字设置替换的种类。1表示所有替换率都一样(比如JC69 or F81 model);2表示所有转换和颠换的比率由一些差别(比如K80 or HKY85 model);6允许所有的替换率存在差别(如GTR model);mixed表示在所有可能的可逆替换模型中进行“马尔科夫链”抽样,并组合出不同的模型;

第三个参数 Code :只有当Nocmodel设置为Codon时才有效,默认就是全部密码子;

第四个参数 Ploidy :设置染色体倍数,"Haploid", "Diploid" or "Zlinked";

第五个参数 Rates : 设置模型的位点变异率。默认是equal(即所有位点没有变异);gamma表示位点变异符合gamma分布;lnorm表示正态分布的对数;propinv表示变异位点的分布是常数;invgamma表示变异位点的分布是常数,但是其他位点分布是gamma分布;

第六、七个参数 Ngammacat 、Nbetacat 一般用默认值4、5就好(大多数情况下,Ngammacat取4个rate categories就够了,增加rate categories数量可以增加准确度,但同时速度会变慢,4可以理解为一个折中的值);

有六种参数类型:拓扑(the topology), 分枝长度(the branch lengths), 4个stationary frequencies of the nucleotides, 6个different nucleotide substitution rates, the proportion of invariable sites 以及 the shape parameter of the gamma distribution of rate variation

默认值可以应对绝大多数分析,使用 help prset 可以看到设置

使用 shomodel 会看到目前模型的参数设置

在运行 mcmc 之前,可以用 help mcmc 看下

输入 mcmc ,首先看到这样一个表格,包括了需要用到的方法及占比

然后就开始运行,就像这样

当程序运行到设置的Ngen时,会问你要不要继续,并给出目前已经计算的结果Average standard deviation of split frequencies。一般来讲这个数小于0.01就可以退出了。但是在数据集比较大时,并不是很理想,下降的很慢,而且开始还有时会上升,如果到了Ngen还离0.01很远,比如最后还是1点几,那么还需要增加generation。如果达到了0.01到0.05之间,那么基本可以结束。

首先看下samplefreq生成的 .p 文件,不同的模型结果信息不同【这里以测试数据为例】

然后使用 sump 得到一个图一个表。生成的表格中,主要看PSRF这一列数值是否接近1.0【1.00-1.02是最理想的情况,但很难做到】

tree和branch数据存储在 .t 的文件中,也是Nexus格式

使用 sumt relburnin =yes burninfrac = 0.25 ,直接返回的结果包括:两个统计表两个图

另外,sumt还会返回5个额外的文件

.parts 文件包含了二分法分类的key值;

.tstat 和 .vstat 包含了partition statistics和branch length statistics

.con 包含了consensus trees,这个文件可以在FigTree中打开,展示一下后验概率以及每个枝的标准差【这个应该是比较有用的】

.trprobs 包含了在mcmc搜索中找到的树,并用后验概率排序

开始

***************

下面的信息是针对最小需求用户,介绍怎样快速上手。当然,对于一个新用户,

我们希望并鼓励您通过积极地阅读FAQ列表来得到更多的详细信息。

需要下载的文件

----------------

到http://www.delorie.com/djgpp/zip-picker.html可以看到一个基于表单

的说明,其中详细列出了你需要下载的分发包。通常情况下,用户并不需要

源文件,所以如果只是使用DJGPP那么只下载二进制包就足够了。

编译C程序,需要下载djdev203.zip, gcc*b.zip,和bnu*b.zip 。如要使用

C++则还需要下载gpp*b.zip

如果需要查找在线手册,则需要下载txi*b.zip,并且运行工具"info"。如果你使用

的是纯16位DOS则需要安装DPMI服务程序,安装包是csdpmi*b.zip(Windows

,QDPMI,386Max, NWDOS, OpenDOS, OS/2, Win/NT 和 Linux下的 DOSEmu已经提供了

良好的DPMI服务, 所以在这些环境下安装并运行DJGPP并不需要CWSDPMI)详细

信息可以查阅FAQ列表的第四章(下载faq*b.zip,且要保证是完整FAQ列表)

--"Where and What to Downlaod(在哪里并下载些什么)"

如果你使用Windows ME, 2000或者 XP,在2001年11月前的镜像文件很可能不能

正常工作,所以如果你使用以上的 *** 作系统来运行DJGPP,那么确保你下载的是

最新的分发包。

安装

------------

1. 创建一个DJGPP的工作目录,比如说C:\DJGPP. (警告:不要将DJGPP安装到诸如

C:\DEV, D:\DEV这样的目录或子目录下:那将导致它不能工作。详细原因见FAQ

列表 )不要在使用长目录名,或者任何特殊字符,如空格等。

如果你曾安装过1.x版本,最好是放弃使用它,或干脆删除掉它们。当然你也

可以仅仅把它们移动到其它目录下,但是确保移动的目标目录不在你的PATH

环境变量里出现。(据调查,某些BUG报告是因为混用两个版本的DJGPP造成

的,事实上1.x版本中唯一可以保留的文件只有'go32.exe')

如果你使用Windows NT 4.0来运行DJGPP,在安装前,你需要决定你是否想使用

长文件名还是仅仅使用DOS 8.3的文件名格式。如果需要长文件名支持,你需要

在解压DJGPP分发包前,下载并安装TSR驱动程序包(ntlfn*b.zip)。

(译者注:建议不要使用WinNT 4.0来运行DJGPP)

2. 解开所有的压缩包,同时保留目录结构。例如:

pkunzip -d djdev203

unzip32 djdev203

在Windows 9x, Windows/ME, Windows 2000 和 Windows XP下,使用支持长文件

名的解压工具unzip。最新的InfoZip的UnZip, PKUnzip和WinZip都能支持长文件

名。DJGPP站点上的解压工具unzip32.exe同样可以很好地支持长文件名。一个确保

你正确地解压出长文件名文件的方法是,查看include/sys/sysmacros.h:如果你

只看到sysmacro.h那么你的解压工具并不支持长文件名,这时你需要另找一个真正

支持它的解压工具。

你必须在解压时确保,正确地保留了目录结构。 如果你使用的是WinZip,检查

复选框"Use folder names". 如果你使用pkunzip,确信你使用了-d参数开关。

在Windows/NT(NT version 4或者更低的版本,不是WIN2000)下,如果不加挂

TSR的长文件名驱动程序LFN,则unzip并不会正确地解压出长文件名文件,同时

DJGPP也不能访问长文件名的文件。所以在这里,我们推荐使用unzip32.exe,

它将能正确解压。

3. 正确解压完成后,设置环境变量指向在DJGPP安装目录下的文件DJGPP.ENV

并将DJGPP的BIN目录加入PATH环境变量队列中去。

确切的设置环境变量的方法取决于你使用的 *** 作系统:

* 对于 Windows 98 系统:

- 单击 开始

- 选择 程序->设置->系统工具->系统信息

- 单击菜单栏上的 工具, 并选择 "系统配置"

- 按照如下所说的编辑 AUTOEXEC.BAT

* 对于 Windows ME 系统:

- 单击 开始, 选择 运行, 输入 msconfig.exe单击 确定

- 单击 "环境" 分页

- 编辑 PATH 系统变量将DJGPP 的bin子目录加入

- 加入一个新变量DJGPP,并将它的值设置为DJGPP.ENV的全路径名。

(下面还有更详细的介绍)

* 对于 Windows NT 系统:

- 右键单击 "我的电脑", 选择 "属性"

- 单击 环境 分页

- 编辑 PATH 系统变量将DJGPP 的bin子目录加入

(如果你不是管理员〈administrator〉,将bin目录加入当前用户的PATH

变量中)

- 加入一个新变量DJGPP,并将它的值设置为DJGPP.ENV的全路径名。

(下面还有更详细的介绍)

* 对于 Windows 2000 或 Windows XP 系统:

- 右键单击 "我的电脑", 选择 "属性"

- 单击 高级 分页然后单击 "环境变量"按钮

- 编辑 PATH 系统变量将DJGPP 的bin子目录加入

(如果你不是管理员〈administrator〉,将bin目录加入当前用户的PATH

变量中)

- 加入一个新变量DJGPP,并将它的值设置为DJGPP.ENV的全路径名。

(下面还有更详细的介绍)

* 对于其它系统(DOS, Windows 3.x 和 Windows 95):使用标准的EDIT程序

编辑启动盘根目录下的AUTOEXEC.BAT就可以了。

作为编辑AUTOEXEC或全局变量的替代方案,你可能希望创建一个

DJGPP的快捷方式。如果这样做的话,需要创建一个批处理文件(*.bat)

并包含以下介绍的命令行。这种做法适于安装了多个编译系统的计算机。

无论使用哪种方式,我们都假设你将DJGPP安装至C:\DJGPP目录下,这样

需要设置的两个环境变量的命令就如下所写:

set DJGPP=C:\DJGPP\DJGPP.ENV

set PATH=C:\DJGPP\BIN%PATH%

4. 重新启动。 这样可以使两行命令启用(在 Windows NT ,Windows 2000 和

Windows XP 环境变量即时生效, 所以如果你使用以上系统便无需重启。但是

还是需要关闭正在运行的DOS窗口,然后再次运行一个新的DOS窗口)

5. 运行程序 go32-v2.exe,不加任何参数:

go32-v2

它将报告可供DJGPP使用的DPMI内存及虚拟空间(swap)的大小,就像这样:

DPMI memory available: 8020 Kb

DPMI swap space available: 39413 Kb

确切的数字取决于你安装了多少物理内存,有多少硬盘空间和DPMI服务

程序的能力。 但是,如果go32-v2报告的两项空间加起来少于4MB,请阅读

FAQ列表的3.9节。"How to configure your system for DJGPP"(怎样为

DJGPP配置你的系统)(如果想在已经大于8MB的情况下优化运行

,那么你同样也可以参阅这一部分FAQ)

编译

-----------

GCC是可以在DOS命令行下使用的基于命令行的编译器,可以使用如下命令来编译并

连接单个C程序源文件:

gcc myfile.c -o myfile.exe -lm

-lm参数要求编译器连接时使用lib/libm.a库(三角数学函)。(连接要求需要

显式声明。这意味着,如果你需要使用libm.a就必须在编译时,在命令行结尾

加上参数'-lm')

使用以下命令,从而将C或C++源码编译为OBJ文件:

gcc -c -Wall myfile.c (for C source)

gcc -c -Wall myfile.cc (for C++ source)

这样便编译出文件myfile.o。 参数开关`-Wall'打开了GCC编译器的警告

模式,这些警告信息对于新用户是十分有用的。(GCC也支持其它很多扩展名,

如.cpp。 关于这些可以参阅FAQ的8.4节 "How does GCC recognize the

source language")

使用如下命令行,将多个目标文件(OBJ)编译成为可执行文件:

gcc -o myprog.exe mymain.o mysub1.o mysub2.o

这样便编译出在DOS下的可执行文件`myprog.exe'

可以像这样连接C++程序:

gxx -o myprog.exe mymain.o mysub1.o mysub2.o

这时,程序会自动搜索C++的库,所以你完全不必像上面一样,担心需要设置

有关 C++ 库的参数。

你也可以将编译和连接这两个步骤一起执行:

gcc -Wall -o myprog.exe mymain.c mysub1.c mysub2.c

更多的关于GCC运行参数的资料,可以参阅在线文档。在阅读前,你必需确认

是否正确地安装了Texinfo在线文档阅读工具。(找到txi*b.zip,并阅读下面

有关在线文档的章节)

安装成功后,可以这样查找有关资料:

info gcc invoking

开发环境 (aka IDE)

---------------------------------

诚然,DJGPP并没有一个自己的集成环境。但这也意味着,你可以自由地

选择任何可以运行DOS程序,查看运行后输出的编辑器来作为IDE。许多

程序员都使用一个基于DOS的GNU Emacs与DJGPP协同工作。(可以在

v2gnu子目录中找到它)Emacs 是一个非常强大的编辑器(比如,它拥有内置

的Info阅读机能,这样你就可以不用退出编辑器去阅读DJGPP的在线文档

),当然其它很多免费的编辑器同样也可以胜任IDE的工作。这些准IDE

(包括Emacs)唯一不能胜任的工作就是,进行全屏幕的调试工作。

一个被称作RHIDE,专属DJGPP的IDE,不久前向所有DJGPP

用户发布了。它具有Turbo C风格的IDE界面,自动缩进,语句着色,高亮

显示语句,自动调用DJGPP编译器,自动生成Makefile,可以方便地阅读在线

文档。而且更激动人心的是,RHIDE还集成了如同GNU Debugger (gdb)一

般强大的高度集成的调试环境。因为RHIDE还是一个新生的软件,现在还

有众多BUG等待调试。所以如果您感兴趣的话,请访问:

http://www.tu-chemnitz.de/~sho/rho/rhide.html

来获取最新的资料。

(译者注:RIHID已经成为广泛使用的工具包了,建议大家都下载并掌握

它的使用)

调试

---------

如果需要调试程序,你必需在编译时加入参数开关`-g':

gcc -c -Wall -g mymain.c

gcc -c -Wall -g mysub1.c

gcc -c -Wall -g mysub2.c

当然也可以在连接时加入参数`-g':

gcc -g -o myprog.exe mymain.o mysub1.o mysub2.o

(注意:如果使用DJGPP v2.01版本时,并没有任何必要将程序输出成COFF

以便调试程序。(省略文件名中的`.exe'后缀名就可以达到这个目的) v2.01版

及其之后版本的调试器完全有能力直接读取可执行文件来进行调试,如同调试C

OFF格式文件一样。当然,如果你无法完全明了这是什么意思,也无需担心。)

然后在调试器下运行你的程序:

fsdb myprog.exe

gdb myprog.exe

再或

edebug32 myprog.exe

(如果你希望使用GDB调试程序,那么你需要下载gdb*b.zip)

FSDB有自己的帮助画面,可以按下F1调用帮助。 GDB的帮助文件只能使用

Info来阅读。Edebug32是一个很少使用的集成调试器,运行后按'h'来调用

帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7111366.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存