哈喽,大家好,我就是那个不喜欢在大厂搬砖,不喜欢在研究院做研究,只喜欢创业做计算机底层课程的coder,子牙老师
经常有学员问我:为什么要学Linux内核、学Linux内核有什么用、需要什么基础才能看懂Linux内核、Linux内核调试环境如何搭建、现在玩哪个Linux内核版本是主流、有没有书籍推荐、你觉得把Linux内核玩通了的标志是什么……
为什么要学Linux内核呢?我从自己的角度来说:其一、Linux内核是今天科技世界的地基:服务器70%用的是Linux系统、IOT经常用Android或直接Linux内核,Android内核用的是Linux内核、绝大多数车机系统用的是Linux内核、大模型100%用的是Linux系统…市场非常庞大,前途或钱途非常光明,拿下它的门槛又很高,能真正拿下的人极少,拿下了,就可以躺着赚钱,所以我才愿意花费巨大的时间与精力研究它。其二、实力的证明,Linux内核是全球所有TOP级别的程序员写出来的,软件架构、设计思想、代码水平,都是一绝,拿下它,不用言说,不会有人怀疑你的实力。其三、因为是全球所有TOP级别的程序员写的,所以阅读它的代码,是一种享受,能学到很多很多先进的思想与经验 学Linux内核有什么用?我觉得两个方面:一、能提升你的技术实力、技术视野,从而提升你当前所处行业你能够到的天花板。比如学Linux内核之前,你只能玩应用层,c、c++、汇编以下的,一点玩不了,或者勉强能玩,学完Linux内核,直到硬件层,随便玩。很多人只对升职加薪四个字敏感,能做到此,不就是升职加薪吗?但是升职加薪不会自动到你手上,你得去争。有实力,才有底气争啊!二、看你是否愿意相信,学会Linux内核,未来有机会,或者你运气好,遇到了机会,因为Linux内核在整个科技圈的应用太广了,处处皆是Linux内核 我不知道你可有过这样的感受:看到那些技术大拿受万人敬仰,心里会暗暗告诉自己,我也要成为这样的人;学习上或工作上遇到问题,自己的技术实力受限,下不去,需要讨好的问别人,心里暗暗告诉自己,与其求人不如求己,我要自己成为实力的拥有者……这些,都是我的曾经,所以今天,我成为了技术大牛。我今天的实力,在计算机的世界,我想玩什么就可以玩,想写什么就可以写,一切尽在掌控中的感觉…
需要什么基础才能玩转Linux内核呢?汇编、C语言、操作系统导论、计算机组成原理,缺一不可。外面那些汇编、C语言教程的水平,你学了达不到看懂Linux内核的要求,你需要精通汇编、C语言,并能将它们融会贯通才可以。你可以学习我讲的汇编、C语言视频,关注公众号【硬核子牙】回复【汇编教程】,免费领取 操作系统导论、计算机组成原理,是大学计算机系专业课,也是计算机考研408必考课。这两门课,光看视频是没用的,需要动手实战,最好的项目肯定是写一个操作系统,才能真正理解真正掌握这两门课。你也可以自己在外面找资料看,也可以学习我的99元的手写操作系统先导课,或者259元的纯汇编写操作系统课 99元的手写操作系统先导课
259元的纯汇编写操作系统课
Linux内核调试环境如何搭建?我给你全网最简单便捷的吧,gdb+clion,图形界面 如何搭建呢: - 在Windows系统中安装虚拟机VMware,建议最新版,注册码自己去百度找
- 在虚拟机中安装Ubuntu16,一般玩底层都是这样玩
- 把Linux5.4.259内核的源码copy到Ubuntu16中,解压,编译
- 使用clion打开,调试模式运行Linux内核
- 配置clion+gdb,调试Linux内核
如何编译Linux内核呢?先安装依赖
sudo apt install vim build-essential flex bison libssl-dev libelf-dev libncurses-dev terminator git qemu -y
再配置编译选项
cd linux-5.4.259sudo make menuconfig
改这几项即可 - # 下面选项如果没有选上的,选上(点击空格键,看到前面是*才可以)
- # 然后 save 保存设置,退出 exit。
- ##################################################################
- Device Drivers --->
- [*] Block devices --->
- <*> RAM block device support
- (65536) Default RAM disk size (kbytes)
-
- Kernel hacking --->
- Compile-time checks and compiler options --->
- [*] Compile the kernel with debug info
- [*] Provide GDB scripts for kernel debugging
- ##################################################################
复制代码
编译sudo make -j8(8指CPU的个数,并行编译,速度更快)
当你看到这个界面,表示编译成功了
调试模式将Linux内核运行起来 qemu-system-x86_64 -m 5G -kernel ./arch/x86/boot/bzImage -append nokaslr -s -S下断点:init/main.c 使用clion启动gdb连接内核 大功告成! 玩哪个版本的Linux内核是主流?玩5.4的就够了 有没有书籍推荐?讲真,在做这个课程的时候,我把所有讲Linux内核的书都看了,实在话,没有特别好的 学通Linux内核的标志,我觉得有三个: - 有能力动手编译Linux内核,单步调试Linux内核
- [color=rgba(0, 0, 0, 0.9)]有能力写Linux内核驱动代码做实验
- [color=rgba(0, 0, 0, 0.9)]有能力给Linux内核做扩展
编译Linux内核,单步调试Linux内核已经给你了,剩下的两个,你们自行研究吧,有的人说现在有AI了,不需要别人教,借助AI自己可以学会,大家也可以去试试 当然,如果你想快速学会,欢迎找班主任咨询我的课程《实战Linux内核》 除了操作系统、Linux内核系列课程,我还做了很多底层课程 学底层,找子牙就对了!
|