分享

Linux内核源码下载及阅读指南,想学习嵌入式Linux的同学可以参考

 西北望msm66g9f 2025-01-20

2025年,最好的投资就是自我提升

嵌入式软件工程师一对一指导


前言

有很多同学想入门Linux内核,这是Linux最核心的部分,也是学习驱动和软件流程最好的资料。今天给大家说下如何下载Linux内核,并开始阅读学习。

本文主要分为两部分

  • Linux内核源码下载方法

  • Linux内核源码阅读以及工具详解

正文

一、Linux内核源码下载方法

学习Linux看源码是最好的方法,但是很多人留言不知道怎么下载源码,下边进行了总结。

当然,如果你本地已经安装了Linux版本,在安装的linux系统下,/usr/src/linux目录下的东西就是内核源代码,下边的方法是提供几种获取具体版本的方法。

1.官网下载

官网链接https://www./

提供另一个链接,比官网下载速度快:

http://ftp./sites/ftp./pub/linux/kernel/

在下载目录中,选择所需的内核版本。例如,如果需要稳定版本,可以选择带有“stable”标签的目录。

进入所选版本目录后,下载对应的源码压缩包,如.tar.gz或.tar.xz格式的文件。

图片

2.Git仓库克隆

这种方法需要你本地先安装git工具,下面的命令我就以Ubuntu系统为例。

sudo apt updatesudo apt install git

然后,使用Git命令克隆Linux内核的官方Git仓库。

git clone https://git./pub/scm/linux/kernel/git/stable/linux.git

国内用户可以选择使用清华大学的Git镜像站,下载速度比较快:

git clone https://mirrors.tuna./git/linuxstable.git


3.使用国内镜像站点下载

为了提高下载速度,在国内的大家也可以选择使用镜像站点下载。下边是常用的一些镜像站点,进入站点后下载源码压缩包就可以;

中科大镜像站:mirrors.ustc.edu.cn//

清华大学开源软件镜像站:mirrors.tuna./kernel/

阿里云开源镜像站:mirrors.aliyun.com/kernel/

OK,上边几个方法就足够下载使用了,还有更多的方法也可以自己补充使用。

    二、Linux内核源码阅读以及工具详解

    这里我主要想介绍的阅读Linux内核阅读的工具是source insight。

    source insight是一付费软件,也是很多C语言开发工程师很喜欢的软件。对于源码的阅读搜索修改都堪称神器。

    下载地址:https://www./download/

    下面就正式开始介绍;

    阅读Linux内核源代码对于许多人来说可能显得有些令人生畏,但实际上,这种恐惧并无必要。诚然,Linux内核作为一个庞大且复杂的系统代码,阅读起来确实存在不少挑战,但它并非高不可攀。只要有坚持不懈的决心,任何困难都是可以克服的。而且,我们往往都是在不断学习和实践中成长的,不是吗?

    要想顺利阅读源代码,正确的方法和工具至关重要。对于Linux内核源代码的阅读也同样如此。下面,我将分享一些自己阅读内核源代码的经验。

    在阅读之前,最好对源代码的知识背景有一定的了解。对于Linux内核源代码来说,我认为至少需要具备以下基本知识:操作系统的基本原理、熟悉C语言,以及最好了解一些汇编语言和GNU C对标准C的扩展。此外,还应该对Linux内核源代码的整体结构有一个大致的了解。现代操作系统一般由进程管理、内存管理、文件系统、驱动程序、网络等组成部分构成,Linux内核源代码的目录结构也大致对应了这些方面。

    • arch 目录包含了与特定硬件体系结构相关的核心代码。

    • include 目录包含了核心的大多数头文件。

    • init 目录包含了核心启动代码。

    • mm 目录包含了所有的内存管理代码。

    • net 目录包含了核心的网络部分代码。

    • lib 目录包含了核心的库代码。

    • scripts 目录包含了用于配置核心的脚本文件。

    • Documentation 目录提供了一些参考文档。

    了解了源代码的结构组成后,就可以着手阅读了。阅读方法或顺序可以分为纵向和横向两种。纵向阅读就是顺着程序的执行顺序逐步进行;横向阅读则是分模块进行。实际上,这两种方法并不是绝对的,而是经常结合在一起使用。对于Linux源代码来说,启动代码可以顺着Linux的启动顺序一步一步来阅读,而像内存管理等部分则可以单独拿出来进行阅读分析。

    我的建议是:开始最好按顺序阅读启动代码,然后进行专题阅读,如进程部分、内存管理部分等。在每个功能函数内部,应该一步步来阅读和理解。实际上,这是一个反复的过程,不可能读一遍就能完全理解。

    “工欲善其事,必先利其器”。阅读像Linux内核代码这样的复杂程序确实是一项艰巨的任务。它就像一个越滚越大的雪球,阅读某个部分时经常需要引用好几个其他的相关文件,很容易让人迷失方向。因此,一个好的工具是必不可少的。考虑到许多用户对Windows平台比较熟悉,并且经常使用Windows系列平台,我今天介绍的这款Windows下的工具软件-Source Insight。这是一款有30天免费试用期的软件,可以从其官方网站下载。安装非常简单,只需双击安装文件名,然后按照提示进行安装即可。安装完成后,就可以启动该程序了。

    Source Insight的使用非常简单,是一款阅读源代码的好工具。

    下面简要介绍一下它的使用方法:

    1.首先选择“Project”菜单下的“New”选项,新建一个工程,并输入工程名。

    2.接着,将想要阅读的源代码添加到工程中(可以整个目录添加)。添加完成后,该软件会自动分析所添加的源代码。分析完成后,就可以开始阅读了。

    在阅读过程中,如果想要查看某个变量的定义,只需将光标定位在该变量上,然后点击工具条上的相应选项,该变量的定义就会显示出来。对于函数的定义与实现也可以进行同样的操作。Source Insight还有许多其他功能,在此就不一一介绍了。有兴趣的朋友可以下载安装Source Insight试试看,相信它一定会大大提高你阅读源代码的效率。

    下边是Source Insight在没有创建工程前的界面,可以根据自己习惯修改布局,改变背景色,修改快捷键等。

    图片

    下面就带大家一起创建一个Linux内核的项目。

    这里我比较建议大家下载一个老版本的内核用来学习,我下载的是2.6.24版本,这样的话有很多可以参考的书籍可以配套学习。

    我就通过上边的镜像网站进入Linux 内核的文件下,找到对应的版本号,下载到本地后解压待用:

    图片

    可以在源码的同级创建一个工程文件夹(SI-linux-2.6.24)。

    图片

    软件内点击,创建新工程。

    图片

    定义工程名称和工程保存位置,后续都点击OK即可。

    图片

    图片

    下一步是选择需要添加的源码。

    在这个对话框中,你可以将想要阅读的源代码文件添加到工程中。添加文件有两种主要方式:

    1. 通过文件名添加:

      • 在“File Name”输入框中输入你想要添加的源代码文件的名称。

      • 点击“Add”按钮,将该文件加入到工程中。

    2. 通过目录添加:

      • 使用“Add All”按钮:这个选项会提供两种方式来添加文件,一种是仅添加顶层文件,另一种是递归地添加选中目录及其所有子目录中的文件。

      • 使用“Add Tree”按钮:这个按钮相当于“Add All”选项中的递归添加所有文件的方式。它会自动将选中目录及其所有子目录中的文件全部加入到工程中。

    我个人更喜欢使用“Add Tree”按钮,因为它可以一键将整个目录树中的文件全部添加进来,非常方便快捷。而且,由于Source Insight采用了部分打开文件的方式,即只有当你实际需要查看某个文件时,该程序才会打开它,所以即使你加入了数千个文件,也不用担心会超出程序所能处理的最大文件数量。比如,我就是使用“Add Tree”的方式,将Linux 2.4内核的20487十一个文件全部加入到了工程中。

    图片

    图片

    下面就是最关键的工作界面;

    按照排序依次是:

    1. 函数列表

    2. 关系窗口

    3. 定义窗口,显示当前项目的文件夹结构和库文件列表。

    4. 文件窗口,这个窗口可以以文件列表的方式,列出所有的文件,点击一个文件就可以打开该文件

    5. 源文件窗口,编辑修改代码

    6. 功能快捷键,显示可用的工具和插件列表。

    图片

    当然了,这只是简单的一个介绍,Source Insight的使用还有很多技巧,但是还是那句话,先搞起来起来再说,很多细节都可以慢慢积累。

    然后就可以按照教材或者书籍开始学习研究Linux内核源码了。

      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多