关键词:
1. 学习主线
linux内核源码大而全,一个人,即使再聪明、再有精力,也不可能完全看完、看懂所有的linux内核源码。
一口君建议按照以下主线进行深入研究:
linux驱动架构
linux网络子系统
linux内核启动过程
linux内存管理机制
linux调度器
linux进程管理
linux虚拟机制(kvm)
沿着某一个主线,深入进去,在研究清楚这个主线的同时,向其他的主线扩展、渗透和学习。
此处之所以将驱动列为学习内核的入口,是因为内核为很多外设驱动实现了架构,比如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.内核的知识就像下面的绳结一样,一环扣一环,我们要解开它们,就必须要先找到线头也就是内核中的函数接口。初学阶段,我... 查看详情