linux 内核源码 下载 linux编译内核
今天给各位分享linux 内核源码 下载的知识,其中也会对linux编译内核进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
何处下载CentOS的Linux内核的源代码
今天既不分析内核源代码,也不讲如何编译源代码,只说从何处下载你的CentOS所对应的Linux内核的源代码。
一、准备工作
1.如何查询你的CentOS的版本
参见:
2.如何查询Linux内核版本
[root@syy~]# uname-r
2.6.32-431.3.1.el6.i686
二、何处下载
经过上面的准备工作,我知道我的 CentOS的发布版本是 6.5,内核版本是2.6.32-431.3.1。
源代码的官网:
进入官网后,依次是进入 6.5/,进入os/,进入Source/,进入SPackages/,找到 kernel-2.6.32-431.el6.src.rpm,下载就行了。
linux源码阅读工具linux源码阅读
如何阅读linux内核代码?
要想深入了解Linux,就需要阅读和分析linux内核的源代码。Linux的内核源代码可以从很多途径得到。一般来讲,在安装的linux系统下可以查看
Linux是开源的,那么如何查看源代码?
Linux的内核源代码可以从很多途径得到。一般来讲,在安装的linux系统下,/usr/src/linux目录下的东西就是内核源代码。
如何查看linux内核源代码?
一般在Linux系统中的/usr/src/linux*.*.*(*.*.*代表的是内核版本,如2.4.23)目录下就是内核源代码(如果没有类似目录,是因为还没安装内核代码)。另外还可从互连网上免费下载。注意,不要总到去下载,最好使用它的镜像站点下载。请在里找一个合适的下载点,再到pub/linux/kernel/v2.6/目录下去下载2.4.23内核。
代码目录结构
在阅读源码之前,还应知道Linux内核源码的整体分布情况。现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。Linux内核源码的各个目录大致与此相对应,其组成如下(假设相对于Linux-2.4.23目录):
1.arch目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是IntelCPU及与之相兼容体系结构的子目录。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下命令源码?
命令的源码是一个软件包为单元的,放在一个软件包的源码中。若要下载一个命令的源码,就要把这个命令所属的软件包的源码都下载下来。命令的源码就在下载的源码的相关文件夹内。一般是src文件夹,对应的主文件名称为cmd.c,当中cmd为详细的命令,如ls命令的主程序文件为ls.c。
因为在不同的Linux发行版上。源码的获取方法并不同样。所以以下以Ubuntu和CentOS这两种经常使用的Linux发行版为样例进行说明。
1、Ubuntu中系统命令源码的获取方法
以32位Ubuntu14.04下,获取ls命令的源码为例,能够使用例如以下的方法下载源码:
1)使用which命令查看ls命令的位置,例如以下:
whichls#输出:/bin/ls
2)使用dpkg命令查询ls命令所属的包。例如以下:
dpkg-S/bin/ls#输出:coreutils:/bin/ls
3)使用apt-get命令来下载ls命令所在的包的源码。例如以下:
apt-getsourcecoreutils
注:
1)在使用dpkg时。若出现错误。能够使用sudo命令使其以root权限运行。
2)使用apt-getsource下载的源码保存到当前文件夹下。
。此外,当我们知道了命令所属的包后,也能够到对应的官方站点下载。
2、CentOS中系统命令源码的获取方法
以32位CentOS6.6下,获取ls命令的源码为例,能够使用例如以下的方法下载源码:
1)配置源码的源
在CentOS中,源的配置文件为:/etc/yum.repos.d/CentOS-Base.repo,改动该文件须要root权限。
打开该文件,查看该文件的内容,在本人的机子上,该文件的内容例如以下:
#CentOS-Base.repo
#
#ThemirrorsystemusestheconnectingIPaddressoftheclientandthe
#updatestatusofeachmirrortopickmirrorsthatareupdatedtoand
#geographicallyclosetotheclient.YoushouldusethisforCentOSupdates
#unlessyouaremanuallypickingothermirrors.
#
#Ifthemirrorlist=doesnotworkforyou,asafallbackyoucantrythe
#remarkedoutbaseurl=lineinstead.
#
#
name=CentOS-$releasever-Base
mirrorlist=$releaseverarch=$basearchrepo=os
#baseurl=$releasever/os/$basearch/
gpgcheck=1
gpgkey=
#releasedupdates
name=CentOS-$releasever-Updates
mirrorlist=$releaseverarch=$basearchrepo=updates
#baseurl=$releasever/updates/$basearch/
gpgcheck=1
gpgkey=
#additionalpackagesthatmaybeuseful
name=CentOS-$releasever-Extras
mirrorlist=?
release=$releaseverarch=$basearchrepo=extras
#baseurl=$releasever/extras/$basearch/
gpgcheck=1
gpgkey=
#additionalpackagesthatextendfunctionalityofexistingpackages
name=CentOS-$releasever-Plus
mirrorlist=$releaseverarch=$basearchrepo=centosplus
#baseurl=$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=
#contrib-packagesbyCentosUsers
name=CentOS-$releasever-Contrib
mirrorlist=$releaseverarch=$basearchrepo=contrib
#baseurl=$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=
该文件里有两个变量:releasever和basearch。分别表示release版本号和分支,如本人的机子上,这两个值分别为6和i386。注意。releasever并不会细分为次级版本号。即不会是6.6之类的。
从该文件的内容能够知道,该文件共同拥有5个节。也就是说本人的机子的软件来源有5处,分别为base、updates、extras、centosplus和contrib。所以仅仅须要为例如以下的5处软件源指定其源码的源就可以。在文件的末尾加上例如以下的内容:
name=CentOS-$releasever-Basesrc
baseurl=
gpgcheck=1
gpgkey=
name=CentOS-$releasever-Updatessrc-centos
baseurl=
gpgcheck=1
gpgkey=
name=CentOS-$releasever-Extrassrc-centos
baseurl=
gpgcheck=1
gpgkey=
name=CentOS-$releasever-Plussrc-centos
baseurl=
gpgcheck=1
gpgkey=
name=CentOS-$releasever-Contribsrc-centos
baseurl=
gpgcheck=1
gpgkey=
因为不同的版本号设置会有所不同,所以其设置会有所不同,方法可总结为例如以下:
(1)gpgkey与该文件里已有的节的gpgkey同样
(2)为了确认文件的存在和情况,能够打开站点查看详细的情况,再依据详细的情况来填写
(3)设置baseurl时须要依据自己的系统的版本号来设置,如本人的机子为CentOS-6.6,则在设置时,相关的_数就设置为6.6。即后接的子路径为6.6。
该文件的作用是为yum其及相关工作的下载提供一个源。如在使用yumdownloader(以下会讲到)下载源码时。会发生例如以下动作:
(1)下载$baseurl/repodata/repomd.xml文件。若该repomd.xml文件比系统中的新。更新系统中的对应的repomd.xml
(2)下载$baseurl/SPackages/中的对应的源码rpm包。
2)使用which命令查看ls命令的位置,例如以下:
whichls
#输出:/bin/ls
3)使用rpm命令查询ls命令所属的包,例如以下:
rpm-qf/bin/ls
#输出:coreutils-8.4-37.el6.i686
4)yumdownloader是一个从RPM源下载RPM的程序,能够使用yumdownloader命令安装源码。例如以下:
yumdownloader--sourcecoreutils-8.4-37.el6.i686
注:
(1)若yumdownloader命令没有安装,则能够使用此命令安装:yuminstallyum-utils。
(2)下载的文件在当前文件夹下。能够使用_数--destdir指定下载到哪一个文件夹。
5)使用yumdownloader下载到的是一个安装包文件rpm,能够使用例如以下的命令查询rpm中的tar文件:
rpm-qplcoreutils-8.4-37.el6.src.rpm|greptar
#输出:coreutils-8.4.tar.xz
6)使用rpm2cpio命令将rpm包文件转换成cpio归档文件,再使用cpio命令,从cpio归档文件复制提取出一个归档文件。出例如以下:
rpm2cpiocoreutils-8.4-37.el6.src.rpm|cpio-idvcoreutils-8.4.tar.xz
#输出:
#coreutils-8.4.tar.xz
#9561blocks
cpio的man解释为:cpiocopiesfilesintoanarchive
-i:与--extract等同。提取之意
-d:与--make-directories等同,当有须要时创建一个载入文件夹
-v:列出文件的处理过程
7)使用tar命令对coreutils-8.4.tar.xz压缩包进行解压缩,例如以下:
tar-xvf./coreutils-8.4.tar.xz
至此,命令的源码获取完毕。
Linux如何获取内核源码linux获取内核源码
Linux获取内核源码
Linux是一款开源的操作系统,它的内核源码可以免费获取,但正确获取内核源码的方式可以使我们的任务更轻松。那么,Linux如何获取内核源码呢?在以下小编将为您介绍几种获取简单、便捷的方法。
首先,我们可以使用Linux Network Mirroring来获取内核源码。Linux Network mirroring是一种使用HTTP和FTP协议获取Linux内核源码的服务,我们可以在Linux.org上搜索并下载最新内核源码,内核源码包的文件名格式为 linux-........................-,下载后将文件解压即可获得Linux内核源码。
第二,我们也可以使用GitHub获取Linux内核源码,GitHub是一个强大的开源代码托管平台,在其上有大量的开源项目以及Linux开发者的源码。我们可以使用GitHub的搜索功能搜索linux kernel,在搜索结果中选择torvalds/linux,然后点击Clone或download,就可以将Linux获得内核源码下载到本地了。
最后,您还可以使用Linux Kernel Archive来获取内核源码。Linux Kernel Archive也是一种使用HTTP和FTP协议获取Linux内核源码的服务,除了可以获取最新的内核源码之外,还提供了之前版本的内核源码,我们可以在主站上找到所有的内核源码,然后根据需要下载相关内核源码。
以上就是Linux获取内核源码的几种方法,使用以上任何一种方法都可以获取到Linux内核源码,您可以根据自己的情况进行选择。如果想要定制或修改Linux内核,那么就必不可少的要获取最新的Linux内核源码。