linux内核源码如何学习?

CPP开发者 CPP开发者     2022-11-28     533

关键词:



1. 学习主线

linux内核源码大而全,一个人,即使再聪明、再有精力,也不可能完全看完、看懂所有的linux内核源码。

一口君建议按照以下主线进行深入研究:

  • linux驱动架构

  • linux网络子系统

  • linux内核启动过程

  • linux内存管理机制

  • linux调度器

  • linux进程管理

  • linux虚拟机制(kvm)

  • linux内核实时化技术
  • 沿着某一个主线,深入进去,在研究清楚这个主线的同时,向其他的主线扩展、渗透和学习。

    此处之所以将驱动列为学习内核的入口,是因为内核为很多外设驱动实现了架构,比如I2C、SPI、UART、PCIE、字符设备、网络设备、块设备,我们可以从最基本的字符设备学起,学习如何编写一个简单的模块学习如何如何为一些简单的设备比如LED、KEY、ADC等编写驱动可以说驱动是我们学习内核最简单的入口,

    由点到线、由线到面、由面到体,层层深入、不断精进,是学习linux内核源码的一个有效的方法。

    2. 代码阅读工具

    对于代码阅读方法从两个角度来介绍,一个方面是需要选择一个比较有效阅读代码的工具。

    一口君强烈推荐:source insight这款阅读代码神器!

    也可以使用vscode或者vim+ctags的组合。

    不过一口君十几年的从业经验,

    99%以上的开发人员都选择SI阅读内核代码。

    代码并不是写给人看的,而是交给机器运行的。

    所以我们去理解别人的代码时,并不能像看小说一样去通篇的阅读代码,而应该是像研究化石一样去调查它,解密它。

    有时我们往往也需要把对方的一段代码亲手的实现一遍,然后自己举一反三看自己会怎么去实现它,才能真正的理解。

    3. 学习的内核版本

    有些人推荐先阅读一些低版本的内核,比如0.01版的,总代码量才1万行左右。

    阅读这个代码大概一个月应该能比较清晰了。

    但是,改代码与现在的代码差异巨大,阅读后可以理解基本思想,但对理解现有代码的帮助不是特别明显。

    3.10版本之后的内核都支持设备树!

    所以一口君建议是尽量选择3.10版本之后的代码阅读学习。

    4. 学习Linux最重要的是培养自己写代码的能力和对Linux框架结构的了解

    Linux内核中绝大部分代码都是由这个地球上顶尖的技术大牛所编写,

    这些代码的高内聚低耦合,

    其精准度,简洁度、质量都相当的高,

    每每看到一段高质量的代码,

    一口君都会被那一行行枯燥的代码背后隐藏的设计思想所震撼,所折服!

    阅读内核的代码简直就是在欣赏艺术品!

    很多粉丝问我如何提高自己的C语言编程水平,一口君不厌其烦的 重复着同样一句话:看Linux内核!

    代码中自由颜如玉!代码中自有黄金屋!

    时刻保持激情,任性和耐性!

    从量变到质变!

    水滴石穿!

    愿各位都能够熟练掌握Linux

    - EOF -

    推荐阅读  点击标题可跳转

    1、这篇 Linux 总结的很棒啊!

    2、深入理解 Linux 内核之内存寻址

    3、一个内核网络漏洞详解:容器逃逸


    关注『CPP开发者』

    看精选C/C++技术文章 

    点赞和在看就是最大的支持❤️

    为什么要学习linux内核,如何学习?

    1.为什么要学习Linux内核大多数程序员可能一辈子都没有机会从事 Linux 内核开发,也可能不会去从事Linux驱动开发的工作,那么为什么我们仍然需要学习 Linux 内核?Linux 的源码和架构都是开放的,我们可以从中... 查看详情

    瑞芯微rv1126如何配置和编译linux内核学习笔记(代码片段)

    1、配置环境./build.shdevice/rockchip/rv1126_rv1109/BoardConfig-aybering.mk2、切换到内核源码目录cdkernel3、配置内核(1)配合内核平台环境makeARCH=armrv1126_defconfig(2)使用菜单的方式配置Linux内核makeARCH 查看详情

    瑞芯微rv1126如何配置和编译linux内核学习笔记(代码片段)

    1、配置环境./build.shdevice/rockchip/rv1126_rv1109/BoardConfig-aybering.mk2、切换到内核源码目录cdkernel3、配置内核(1)配合内核平台环境makeARCH=armrv1126_defconfig(2)使用菜单的方式配置Linux内核makeARCH=armmenuconfig4、保存配置makeARCH= 查看详情

    美河linux内核学习视频

    Linux内核从原理到代码详解培训视频 Linux内核源码研读与实战演练 [7.10][美河资料发布小组@aipepsi][linux内核分析视频教程] 炼数成金Linux内核探秘 [11.23][美河资料发布小组@勿望我][尚德][linux内核编程入门(12.4更新)... 查看详情

    高效学习linux内核——从源码中的宏下手

    在阅读Linux内核代码时,在代码的开头总是有各种各样的宏定义,了解熟悉这些宏定义,对于代码的理解和快速修改代码提供了便利。有些宏相对简单,一眼便可以了解作用,有些就稍微复杂一些,需要一... 查看详情

    linux内核学习方法专题分享-2.资料推荐

    本文分享Linux内核学习方法专题分享的第二个视频:资料推荐,推荐学习Linux内核的常用参考资料文档等。1)书籍主要参考: 《Linux内核设计与实现》2.6   LKD《深入理解Linux内核》2.6.11  ULK《深入Linux内核架构》2.6.24... 查看详情

    linux内核学习之路_1_编译linux内核(代码片段)

    1.准备工作1.1学习环境1.2下载Linux内核源码1.3解压Linux内核1.4目录结构介绍1.2.2Linux内核配置1.1学习环境本系列教程使用的环境如下:操作系统版本:Linuxubuntu18.04Linux内核版本:cat/proc/versionLinuxversion4.15.0-20-generic(buildd@... 查看详情

    linux内核的配置和编译原理(代码片段)

    目录一、linux内核源码目录结构二、内核配置和编译体验三、内核的配置原理四、menuconfig的使用和演示五、menuconfig的工作原理六、Kconfig文件详解七、menuconfig的实验学习思路一、linux内核源码目录结构1、源码从哪里来(1)上篇博客... 查看详情

    10+张图来探究linux内核,以及如何高效学习(代码片段)

    来源|Linux学习教程1.前言本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是Linux内核,能看懂Linux内核。拥有超过1300万行的代码,Linux内核是世界上最大的开... 查看详情

    树莓派学习笔记树莓派linux内核开发(代码片段)

    ...派Linux源码配置1、概念2、配置步骤:二、树莓派Linux内核编译1.编译命令2.编译成功显示3.打包zImage成树莓派可用的xxx.img4.把树莓派的SD读卡器插到电脑,映射到ubuntu上:5.数据拷贝(将树莓派的SD卡插入读卡器中... 查看详情

    linux内核源码如何编译

    首先uname-r看一下你当前的linux内核版本1、linux的源码是在/usr/src这个目录下,此目录有你电脑上各个版本的linux内核源代码,用uname-r命令可以查看你当前使用的是哪套内核,你把你下载的内核源码也保存到这个目录之下。2、配置... 查看详情

    学习linux/unix编程方法的建议,学习linux的四个步骤(转)

    ...低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式系... 查看详情

    linux内核linux内核源码结构(下载linux内核源码|使用vscode阅读linux内核源码)

    文章目录一、下载Linux内核源码二、使用VSCode阅读Linux内核源码一、下载Linux内核源码参考【Linux内核】编译Linux内核①(下载指定版本的Linux内核源码|Linux内核版本号含义|主版本号|次版本号|小版本号|稳定版本)博客,下载Linux5.6.18版... 查看详情

    linux为啥要编译内核

    ...下是几个问题。1:平时在linux下c编程,也没有用到编译内核什么的,经常看到“内核源码树”这个词汇,就不懂的。难道我正在使用的这个linux系统不是编译出来的一个系统吗?为什么还要再编译一次?2:下载源码后编译出来... 查看详情

    如何在debian或ubuntu上安装完整的内核源码

    你好,在Debian上安装完整的内核源码  在下载内核源码之前,先安装dpkg-dev,其中包含你在Debian上生成源代码时需要的开发工具套件。不仅如此,dpkg-dev中还包含在用来解压Debian源码包并自动打补丁的工具dpgk-source。  $sudoapt-... 查看详情

    如何在debian或ubuntu上安装完整的内核源码

    在Debian上安装完整的内核源码在下载内核源码之前,先安装dpkg-dev,其中包含你在Debian上生成源代码时需要的开发工具套件。不仅如此,dpkg-dev中还包含在用来解压Debian源码包并自动打补丁的工具dpgk-source。$sudoapt-getinstalldpkg-dev然... 查看详情

    学习linux底层驱动开发有啥经典的参考书?

    ...低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式系... 查看详情

    求教怎么学习linux内核驱动

    1.首先要了解为什么要学习内核?下图已表明,如果要从事驱动开发或系统研究,就要学习内核。2.内核的知识就像下面的绳结一样,一环扣一环,我们要解开它们,就必须要先找到线头也就是内核中的函数接口。初学阶段,我... 查看详情