linux内核源码文档怎么查看
一般在Linux系统中的/usr/src/linux*.*.*(*.*.*代表的是内核版本,如2.4.23)目录下就是内核源代码(如果没有类似目录,是因为还没安装内核代码)。
另外还可从互连网上免费下载。
注意,不要总到http://www.kernel.org/去下载,最好使用它的镜像站点下载。
请在http://www.kernel.org/mirrors/里找一个合适的下载点,再到pub/linux/kernel/v2.6/目录下去下载2.4.23内核。
代码目录结构 在阅读源码之前,还应知道Linux内核源码的整体分布情况。
现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。
Linux内核源码的各个目录大致与此相对应,其组成如下(假设相对于Linux-2.4.23目录): 1.arch目录包括了所有和体系结构相关的核心代码。
它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。
PC机一般都基于此目录。
2.include目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下。
3.init目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。
这是研究核心如何工作的好起点。
4.mm目录包含了所有的内存管理代码。
与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下。
5.drivers目录中是系统中所有的设备驱动程序。
它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound。
6.ipc目录包含了核心进程间的通信代码。
7.modules目录存放了已建好的、可动态加载的模块。
8.fs目录存放Linux支持的文件系统代码。
不同的文件系统有不同的子目录对应,如ext3文件系统对应的就是ext3子目录。
Kernel内核管理的核心代码放在这里。
同时与处理器结构相关代码都放在arch/*/kernel目录下。
9.net目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面。
10.lib目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下。
11.scripts目录包含用于配置核心的脚本文件。
12.documentation目录下是一些文档,是对每个目录作用的具体说明。
一般在每个目录下都有一个.depend文件和一个Makefile文件。
这两个文件都是编译时使用的辅助文件。
仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助。
另外有的目录下还有Readme文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理解。
在阅读方法或顺序上,有纵向与横向之分。
所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是按模块进行。
它们经常结合在一起进行。
对于Linux启动的代码可顺着Linux的启动顺序一步步来阅读;对于像内存管理部分,可以单独拿出来进行阅读分析。
实际上这是一个反复的过程,不可能读一遍就理解。
如何更方便的查看Linux内核代码的更新记录
在官方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.git;a=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链接即可。
上面示例比较简单,我也说得比较粗糙,主要是由于里面的链接非常的多,一个个描述起来比较麻烦,贴图太多也只是浪费我个人网站的服务器空间而已,最好的办法是自己动手去点下链接,查看一下内容,几个回合肯定就能摸索清楚个一二了。
Linux 下如何查看内核代码?
系统安装完成后是没有源代码的,源代码是需要下载内核相应的src包来安装才会有的如,当前内核为,kernel-3.17.4-302.fc21.x86_64 那么就需要从网上下载kernel-3.17.4-302.fc21.src.rpm 源代码包来安装,然后才会有源代码。
对于fedora20安装src源码后,是在/root/rpmbuild/目录下。
对于fedora,源码包可以在https://download.fedoraproject.org/pub/fedora/linux/releases/下载。
另外,除了安装rpm包,还可以通过git在linus或其他开发者的git分支下载源代码。
当前主要的内核分支都在,https://git.kernel.org/cgit/linux/kernel/git其中,linus的分支为https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/。
怎么查看linux内核源码头文件目录
用Linux的人越来越多了,阅读Liux的人也越来越多了。
但是,很多人下了很打的功夫,收益不是很大,下面给大家介绍一下,学Linux阅读Linux内核源代码的捷径。
把内核源码解压后,你会发下,那么多文件夹,早期版本的Linux文件夹还比较少,后来越来越多,这也造成了阅读的困难,下面给大家简单的介绍一下,希望对大家的学习,起作用,能做到事半功倍。
linux下怎样用ctags查看内核源码
展开全部 ctags(Generate tag files for source code)是vim下方便代码阅读的工具。
尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。
并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。
ctags能够定位如下内容:1)用#define定义的宏2)枚举型变量的值3)函数的定义、原型和声明4)名字空间(namespace)5)类型定义(typedefs)6)变量(包括定义和声明)7)类(class)、结构(struct)、枚举类型(enum)和联合(union)8)类、结构和联合中成员变量或函数安装ctags,如果是RedHat,则直接使用yum命令安装:在指定的源码位置生成tags文件,并且我们添加很多参数来完善ctags的功能(为了体现其功能的强大,我用它来生成linux源码的tags文件):然后我们查看tags内容就可以发现,原来tags就是linux内核代码中各个元素的索引,这也就是ctags结合vim可以快速进行定位的原因了(查询就是通过这个文件内容来定位的):...
什么是开源,为什么linux是开源,windows不是?
问题很搞笑。
。
。
使用Linux必须手动输入命令是一个偏见。
本人长年累月地使用Linux,但是我并不熟悉Linux的命令。
Linux一般都部署在服务器上,为了让服务器更稳定,在服务器上安装Linux时常常不安装图形环境。
这也是让人产生“做什么事情都需要手动输入命令”的错觉。
实际上,我对开源的概念也不是十分理解。
简单地说,允许查看、修改源代码的软件就属于开源软件。
而像Win和MacOsX这样的系统,源代码都是保密的,他们都是闭源软件。
按照开源许可协议,所有的Linux发行版都必须公开源代码。
不过因为源代码很占用空间,源代码一般不会直接附在发行版的光盘中,需要您自己下载。
DOS系统是由汇编语言编写的,其余的能叫上名字的操作系统,比如Linux、DBS、Win之类的,一般都是由C语言编写的。
因为Win是闭源软件,因此您看不到它的源代码,修改起来也比较难。
要想修改Win,首先您要熟悉软件的反汇编技术,其次您要做好保密工作,不要让人发现,被发现了是要坐牢的。
顺便说一句:WinCE是开源的。
修改Linux的源代码就比较自由了。
不知到您的编程水平如何,我稍微提醒您一下,自2.6.27开始,Linux内核的代码就超过1000万行了,虽然大部分的代码都是些驱动程序。
在阅读源代码前,最好先找本介绍Linux内核原理的书。
为什么说黑客都用LINUX
展开全部 黑客这个词从诞生到现在,从来就没有解释为“高级入侵者”、“病毒制造者”或者“QQ盗号者”过。
我至今不清楚在中国是谁先把黑客和这些无聊的词汇联系在了一起,导致如此多的人被误导。
但有一点是肯定的,不负责任的媒体一直侮辱这两个字。
那个写熊猫烧什么来着的叫什么来着的也叫黑客?太可笑了。
他做鬼也当不了黑客。
请分清这两个词,hacker & cracker,别去研究他们的中文翻译。
不花力气多解释,不懂黑客是什么意思的人终究不懂,我的这篇文章也不是呼吁那些垃圾更正他们的思想(请不懂的人关闭网页窗口),而是写给那些真正怀揣着黑客梦想的人看的。
首先,有这样的梦想的人出于两种目的(不可能有第三种),真心喜欢计算机技术的,和为了炫耀的。
(后者请关闭这个网页窗口)就像我前面所说的,黑客不一定要写病毒,不一定要入侵,更不会无聊到盗号。
可能你会笑了,黑客不入侵相当于陈水扁不搞***。
其实这是错误的(我不是指阿扁会放弃搞***),请各位去查看黑客这个词在20世纪60以及70年代的解释。
“热爱探索问题,解决问题的一批人”,“热爱编出精妙程序的人”。
黑客根本不是一种技术境界,而是思想境界,它是一种文化,是一种精神(我把它理解为生活方式,就像hip-hop一样),是一门艺术。
我是因为喜欢黑客技术才接触Linux的,却发现更多的国人热衷于在盗版的Windows下用着别人写出来的软件扫什么端口,查什么漏洞,入侵什么网,会按以上这些按钮后,大肆炫耀一番。
这些人普遍智力水平低下(对不起,黑客技术到最后就是拼智力),只会用右手[注1]。
Windows从来就是被攻击的目标系统,而不是攻击者应该使用的系统,更不会是黑客的玩具。
那么什么才是呢?Unix不知道中国那么多会写病毒,会入侵的人了解、知道甚至听说过这个东西。
Unix一整套的设计理念以及哲学还有发展史就代表着黑客这两个词。
Unix诞生于1969年,1969年的东西,流传至今的有哪些?很遗憾,无论是软件还是硬件,除了Unix与创造它的C语言[注2],没有了。
为什么Unix生命力会如此旺盛?答案只有一个,在于它的黑客文化与哲学。
哲学是门高深的学问,我们不需要去很彻底的研究它,Unix的哲学就是4个英文字母:K.I.S.S[注3],这也是最核心的设计理念,Unix有许许多多优秀的哲学思想,其中这个是最重要的。
用最简单的东西去完成最复杂的东西,这也就是为什么许多没有玩过Unix从而没有机会接触Perl语言的人无法体会这个道理的原因[注4]。
Unix的设计者们全是懒人,正是因为这种懒,系统变的简单易用,稳定无比[注5],正是因为这种懒,缔造了一个不朽的传奇。
那么Unix是如何维持如此旺盛的生命力的呢?答案就是——open source movement,开源运动,Unix最初把源码分发给了各大高等学府用于研究,这些学府各自作了修改,发展出了许多不同类型的Unix,但其本质都是差不多的。
随着Richard Stallman[注6]建立了FSF并且推出了GNU Project[注7],开源社区兴起,互联网的飞速发展[注8],越来越多的来自全世界的黑客成为了Unix文化和技术的继承者。
Linus Torvalds就是其中一位Linus做梦也不会想到,当初只是开放一个自己编写的Unix-like的系统源代码会让他有资格在世界的舞台上和Bill Gates同台竞技[注9]。
Linux的诞生绝对不是偶然,而是一种必然。
有点偏题了,现在我想问一个问题就是,如果你使用的是Windows,你了解你的系统吗?敢说了解的只有两种人,有权力看代码的微软工作人员和狂妄的人。
你有没有为你不知道某个文件或者文件夹到底是干什么的而头疼不已?有没有为无法自己修改系统的某些臃肿的功能而烦恼?有没有为管理员的权限也无法删除某些不必要的系统文件而恼火?如果有,你具有黑客精神,但你用玩错了玩具,如果没有,请关闭这个窗口。
Windows是Business-Desktop Product,是用来卖钱的,可惜大多数国人素质低下,没有去维护他人权益的思想和意识[注10],买来的都是盗版,盗版又怎么样呢?Windows终究是Windows,它不会因为盗版而让你把它的技术公布出来,微软放任着中国盗版很大的一个原因是,他知道中国人的德性,先让你用习惯了,当你习惯了以后,它开始打击盗版[注11],你除了Windows什么都不会,甚至脑子里根本没有还有别的操作系统的概念,就必须花钱买正版,这时你就完了,因为你吸上毒了。
所以,更不用谈你能够从这个系统中学到些什么真正的黑客技术尤其是精神还有文化,右手谁都有。
如何查看linux 文件内容的换行符?
展开全部 catA要查看的文件路径,或者使用vim打开你要查看的文件,在末行模式输入set list。
1、看本身内容貌似必须绕过linux的文件系统了,你需要直接写程序操作数据读写,也就是自己 hack 硬盘读写部分的内核功能代码,用补丁让内核打开Fat32的 posix支持之后再去DOS Windows下面看这个文件,很绕道的办法而且并不是绝对正确,因为 AT32是非posix兼容的,这个补丁是用一个绕道的办法来让FAT32支持posix的。
2、通过命令文件名查看内容,如下命令可以查看cat 由第一行开始显示文件内容,tac从最后一行开始显示,可以看出tac与cat字母顺序相反,nl显示的时候输出行号,more一页一页的显示文件内容,less与more类似但它可以向前翻页,head只看前几行tail只看最后几行,以二进制的方式读取文件,vi和vim作为编辑器,也可以打开文件查看内容。
...
linux操作系统如何使用
Linux 下怎么安装软件要充分发挥电脑的作用,就得有大量的应用软件,完成不同的工作。
在Windows环境中安装各种应用软件的思路与方法,想必大家早已熟悉。
然而,在使用Linux时,总会被以下这些不是问题的问题所困扰: 怎么安装应用软件? 我的软件安装在什么地方? 如何删除不要的应用软件? …… 下面,我们就一起来认识一下这些方面的问题。
一、 解析Linux应用软件安装包: 通常Linux应用软件的安装包有三种: 1) tar包,如software-1.2.3-1.tar.gz。
它是使用UNIX系统的打包工具tar打包的。
2) rpm包,如software-1.2.3-1.i386.rpm。
它是Redhat Linux提供的一种包封装格式。
3) dpkg包,如software-1.2.3-1.deb。
它是Debain Linux提供的一种包封装格式。
而且,大多数Linux应用软件包的命名也有一定的规律,它遵循: 名称-版本-修正版-类型 例如: 1) software-1.2.3-1.tar.gz 意味着: 软件名称:software 版本号:1.2.3 修正版本:1 类型:tar.gz,说明是一个tar包。
2) sfotware-1.2.3-1.i386.rpm 软件名称:software 版本号:1.2.3 修正版本:1 可用平台:i386,适用于Intel 80x86平台。
类型:rpm,说明是一个rpm包。
注:由于rpm格式的通常是已编译的程序,所以需指明平台。
在后面会详细说明。
而software-1.2.3-1.deb就不用再说了吧!大家自己练习一下。
去QQ官方下载一个for linux的QQ如果是RPM的就可以直接安装如果是tar.gz的话需要编译在终端里面 把QQ复制到/tmp目录下输入 tar -zxvf 名字然后cd 名字 进入该目录查看文件./makefile.pl编译make编译测试make test安装make install然后就可以使用QQ聊天了如果不会使用linux的话 可能不好装。
转载请注明出处51数据库 » windows下查看linux内核代码用