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.moles目录存放了已建好的、可动态加载的模块。
8.fs目录存放Linux支持的凳判文件系统代码。不同的文件系统有不同的子目录对应,如ext3文件系统对应的就是ext3子目录。
Kernel内核管理的核心代码放在这里。同时与处理器结构相关代码都放在arch/*/kernel目录下。
9.net目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面。
10.lib目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下。
11.scripts目录包含用于配置核心的脚本文件。
12.documentation目录下是一些文档,是对每个目录作用的具体说明。
一般在每个目录下都有一个.depend文件和一个Makefile文件。这两个文件都是编译时使用的辅助文件。仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助。另外有的目录下还有Readme文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理解。
在阅读方法或顺序上,有纵向与横向之分。所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是按模块进行。它们经常结合在一起进行。对于Linux启动的代码可顺着Linux的启动顺序一步步来阅读;对于像内存管理部分,可以单独拿出来进行阅读分析。实际上这是一个反复的过程,不可能读一遍就理解。
B. 如何从源码里看Linux内核版本
在颤歼Linux内核慎洞橘的顶层Makefile中,顶端就有,格式为
VERSION = 3
PATCHLEVEL = 0
SUBLEVEL = 8
EXTRAVERSION =
NAME = Sneaky Weasel
以宽团上的版本号就是3.08
C. 如何 源文件 查看 linux 内核 版本
.1.1
linux版本linux内核的版本号可以从源代码的顶层目录下的makefile中看到,比如2.6.29.1内核的makefile中:version
=
2patchlevel
=
6sublevel
=
29extraversion
=
.1其中的“version”和“patchlevel”组成主版本号,比如2.4、2.5、2.6等,稳定版本的德主版本号用偶数表示(比如2.6的内核),开发中的版本号用奇数表示(比如2.5),它是下一个稳定版本内核的前身。“sublevel”称为次版本号,它不分奇偶,顺序递增,每隔1~2个月发布一个稳定版本。“extraversion”称为扩展版本号,它不分奇偶,顺序递增,每周发布几次扩展本版号。
D. Linux内核有多大,不同Linux版本内核有什么差别呢
根据版本的不同,内核大小也不同,新版本为几百M。
1、发行版的不同,主要是对于版本的选择,稳定性的测试,还有错误修正补丁都会让每个发行版有自己特殊的内核。
2、官方内核的不同,这个区别很好说,官方的开发是基于 git 版本控制的,去看两个 git 版本就知道了。一般是硬件支持,还有新的功能算法,还有驱动增减,错误修补什么的。
Linux的内核版本编号有点像如下的样子:
2.6.32-642.el6.x86_64
主版本.次版本。发布版本-修改版本。
虽然编号就是如上的方式来编写,不过依据Linux内核的发展历程,内核版本的定义有点不太相同。
奇数、偶数版本分类:
在2.6x版本以前,托瓦斯将内核的发展方向分为两类,并根据这两类内核的发展分别给予不同的内核编号,那就是:
主、次版本为奇数:开发中版本。
如2.5.xx,这种内核版本主要用于测试与发展新功能,所以通常这种版本仅有内核开发工程师会使用。如果有新增的内核程序代码,会加到这种版本当中,等到很多工程师测试没问题后,才加入下一版本的稳定内核中;
主、次版本为偶数:稳定版本。
如2.6.xx,等到内核功能发展成熟后会加到这类版本中,主要用在一般家庭计算机以及企业版本中,重点在于提供一个用户相对稳定的Linux操作环境平台。
至于发布版本则是在主、次版本架构不变的情况下,新增的功能累积到一定程度后新发布的内核版本。而由于Linux 的内核是使用CPL的授权,因此大家都能够进行内核程序代码的修改。
因此,如果有针对一个版本的内核修改过的部分程序代码,那么这个被修改过的新内核版本就可以加上所谓的修改版本。
Linux内核版本与Linux发行版本。
Linux内核版本与发行版本的版本并不相同,因为所谓的Linux版本指的应该是内核版本,而目前最新的内核版本应该是4.7.2(2016/08)才对,并不会有7.x的版本出现。
(4)linux源码内核版本扩展阅读:
Linux内核的任务:
1、从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。
2、从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层。在实际工作中内核抽象了相关细节。
3、内核是一个资源管理程序。负责将可用的共享资源(CPU时间、磁盘空间、网络连接等)分配得到各个系统进程。
4、内核就像一个库,提供了一组面向系统的命令。系统调用对于应用程序来说,就像调用普通函数一样。
E. 如何查看 linux 内核源代码
一般在Linux系统中的/usr/src/linux***(***代表的是内核版本,如2423)目录下就是内核源代码(如果没有类似目录,是因为还没安装内核代码)。另外还可从互连网上免费下载。注意,不要总到去下载,最好使用它的镜像如何查看 linux 内核源代码
F. 如何从源码里看Linux内核版本
在Linux内核的顶层Makefile中,顶神丛端就有,格式为
VERSION = 3
PATCHLEVEL = 0
SUBLEVEL = 8
EXTRAVERSION =
NAME = linuxprobe。com
以上的版本号就是3.08《Linux就该这游升樱笑渗么学》这本书上有详细的介绍
G. 如何查询Linux内核版本
如何查询Linux内核版本
终端下输入
[xxxx@ ~]uname -r
3.5.0-34-generic
查看内核版本命令:
1) [root@q1test01 ~]# cat /proc/version
Linux version 2.6.9-22.EL *** p ([email protected].) (g version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005
2) [root@q1test01 ~]# uname -a
Linux
q1test01 2.6.9-22.EL *** p #1 SMP Mon Sep 19 18:00:54 EDT 2005 x86_64
x86_64 x86_64 GNU/Linux3) [root@q1test01 ~]# uname -r2.6.9-22.EL *** p
如何查询Linux内核函数
如果要看这两个函数在标准库中的定义用ctags或cscope生成索引.h,cscope,可以跳转到函数定义,man malloc,声明见stdlib。
如果仍然找不到,可以用ctags,si或grep。
windows下用source insight也可,然后查找函数定义,用grep -r 搜索关键字,atoi和malloc在C的标准库中有定义。
1.安装ctags
在源代码目录下运行
ctags -R
这样,会递归生成当前目录下及其子目录的tags文件。
2.使用VIM根据tags文件查找函数或结构定义。
1.在源码目录下查找
vi -t tagname
2.如果要在任意位置使用,则需要把该tags文件添加到~/.vimrc文件中
set tags=/home/money/sda8/2.6232/tags
3.如果要在代码中实时跟踪,则光标移动到函数名上,使用CTRL+]键,按CTRL+t可以返回。
如果要跟踪系统函数,使用shift+K可以自动跳转道光标所在函数的手册。
如何分析LINUX内核2.6.29版本
uname -a 显示版本号,是这意思吗?
这个问题洞桥太大了,近似于说:请教下我怎么编写一个Linux内核。
分析内核唯一可以做的就是一行行看代码,Linux早期版本有完整的代码分析,如果是指定2.6.29的话,猛唤那估计有人做出来就可以出书收钱了……
如何根据linux内核判断linux版本
在Linux内核的顶层Makefile中,顶端就有,格式为
VERSION = 3
PATCHLEVEL = 0
SUBLEVEL = 8
EXTRAVERSION =
NAME = Sneaky Weasel
以上的版本号就是3.08
如何修改linux内核版本号
得重新编译内核,之前修改源代码的顶层纳知猛目录下的Makefile文件,比如2.6.29.1内核的Makefile中:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 29
EXTRAVERSION = .1
在Qt C/C++中怎样查询Linux内核版本号
查询Linux内核版本号可以调用uname函数,uname函数的函数原型是这样的:
int uname(struct utsname *name);
uname函数在调用时需要向它传递一个utsname结构体指针(或地址),uname函数会写入name参数指向的utsname结构体,Linux的内核版本号就保存在utsname结构体的release成员里面,代码就像下面这样:
struct utsname uts;
if(uname(&uts) >= 0) {
printf("The version is %s
", uts.release);
}
注意,使用uname函数需要包含sys/utsname.h头文件:
#include <sys/utsname.h>
H. linux的内核版本是什么
一般地,可以从Linux内核版本号来区分系统是否是Linux稳定版还是测试版。以版本2.4.0为例,2代表主版本号,4代表次版本号,0代表改动较小的末版本号。在版本号中,序号的第二位为偶数的版本表明这是一个可以使用的稳定版本,如2.2.5,而序号的第二位为奇数的版本一般有一些新的东西加入,是个不一定很稳定的测试版本,如2.3.1。这样稳定版本来源于上一个侍孝测试版升级版本号,而一个稳定版本发展到完全成熟后就不再发展。x0dx0aLinux内核的版本号命名是有一定规则的,版本号的格式通常为“主版本号.次版本号.修正号”。主版本号和次版本号标志着重要的功能变动,修正号表示较小的功能变更。以2.6.22版本为例,2代表主版本号,6代表次版本号,22代表修正号。其中次版本还有特定的意义:如果是偶数数字,就表示该内核是一个可以放心使用的稳定版;如果是奇数数字,则表示该内核加入了某些测试的新功能,是一个内部可能存在着BUG测试版。x0dx0ax0dx0a2.发行版本x0dx0a仅有内核而没有应用软件的操作系统是无法使用的,所以许多公司或社团将内核、源代码及相关的应用程序组织构成一个完整的操作系统,让一般的用户可以简便地安装和使用Linux,这就是所谓的发行版本(distribution),一般谈论的Linux系统便是针对这些发行版本的。目前估计各种发行版本有数十种,它们的发行版本号各不相同,使用的内核版本号也可能不一样,下面就为读者介绍目前比较着名的几个发行版本x0dx0aRed Hat Linux
Red Hat是最成功的Linux发行版本之一,它的特点是安装和使用简单。Red Hat可以让用户很快享受到Linux的强大功能而免去繁琐的安装与设置工作。Red Hat是全球最流行的Linux,Red Hat已经成为Linux的代名词,许多人一猛唯提到Linux就老知稿会毫不犹豫地想到Red Hat。它曾被权威计算机杂志InfoWorld评为最佳Linux。