内核达人

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4|回复: 0

gdb图形界面调试Linux内核

[复制链接]

25

主题

25

帖子

83

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
83
发表于 7 天前 | 显示全部楼层 |阅读模式
哈喽,大家好,我就是那个不喜欢在大厂搬砖,不喜欢在研究院做研究,只喜欢创业做计算机底层课程的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

改这几项即可
  1. # 下面选项如果没有选上的,选上(点击空格键,看到前面是*才可以)
  2. # 然后 save 保存设置,退出 exit。
  3. ##################################################################
  4. Device Drivers  --->
  5.     [*] Block devices  --->
  6.         <*> RAM block device support
  7.             (65536) Default RAM disk size (kbytes)
  8.    
  9. Kernel hacking  --->
  10.     Compile-time checks and compiler options  --->
  11.         [*] Compile the kernel with debug info
  12.             [*] Provide GDB scripts for kernel debugging
  13. ##################################################################
复制代码


编译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内核系列课程,我还做了很多底层课程
学底层,找子牙就对了!



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|内核达人

GMT+8, 2025-12-6 12:38 , Processed in 0.277144 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表