![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LINUX开发工程师小白到大师
文章平均质量分 54
lhh_qrsly
嵌入式领域软件和硬件知识分享
展开
-
7、防写一个shell 命令解释器
3、把可执行文件放到 /bin/test1 就可以像ls 命令使用了,在终端里面,感觉实现原理都是通过系统调用实现的。原创 2024-01-12 18:47:10 · 441 阅读 · 0 评论 -
6、LINUX 系统启动过程概述
系统服务启动:在特定的运行级别下,根据配置文件(例如/etc/rc.d或/etc/init.d)中的指令,初始化进程会启动相应的系统服务和守护进程。b. 系统初始化:初始化进程会根据配置文件(如/etc/inittab或/etc/init)中的设定,启动各种系统服务和守护进程。内核加载和引导:引导管理器从指定的位置读取内核镜像文件(通常是/boot目录下的vmlinuz文件),然后将内核加载到内存中。获取U-Boot源代码:从U-Boot的官方代码仓库或适合你目标平台的BSP中获取U-Boot的源代码。原创 2023-07-30 16:43:15 · 731 阅读 · 0 评论 -
5、VMWARE安装、MobaXterm SSH连接 、Ubuntu xrdp安装使用
在"Guest operating system"(客户操作系统)中选择"Linux",并在"Version"(版本)中选择"Ubuntu"。在VMware虚拟机窗口上的"VM"菜单中,选择"Install VMware Tools"选项。你可以在VMware虚拟机菜单的"VM"->"Install VMware Tools"选项中查看或验证该状态。点击"Browse"(浏览)按钮,选择之前下载的Ubuntu 22.04的镜像文件(.iso文件),然后点击"Next"(下一步)。原创 2023-07-29 23:18:19 · 1227 阅读 · 0 评论 -
4、Kprobe&Ftrace联合使用例子
在示例中,我们使用_do_fork作为我们要插入钩子的内核函数。事件格式为p:kprobe/my_probe _do_fork,其中my_probe是我们给钩子函数起的名字,可以自定义。在钩子函数kprobe_handler中,您可以添加额外的操作和分析代码,来进一步研究和理解内核函数的执行行为。这将注册我们的kprobe事件,使得钩子函数能够在_do_fork函数的入口处被调用。在上述的Kprobe应用层使用例子中,我们主要关注了_do_fork函数的执行过程,并通过插入钩子函数来触发调试点。原创 2023-07-29 16:07:02 · 249 阅读 · 0 评论 -
3、Ftrace使用例子
在这个例子中,我们使用了Ftrace的 register_trace_sched_function_call() 函数来开启Ftrace跟踪功能,并指定要跟踪的函数。上述示例中,12345.678901 是距离系统启动后的时间戳,sched_function_call 表示调用了 example_function 函数,并打印了参数值 42,sched_function_ret 表示函数返回了结果 43,Function result: 43 表示函数的返回结果。运行C代码,并触发所需的函数调用。原创 2023-07-29 15:56:42 · 148 阅读 · 0 评论 -
2、内核Kprobe的使用例子
在 handler_pre 处理程序中,我们输出了Kprobe的地址和调用指令指针的值,以及寄存器 ax、bx、cx 和 dx 的值。使用此例子,当调用 example_function 函数时,Kprobe会在函数执行前后分别调用 handler_pre 和 handler_post 处理程序,并在内核日志中打印出相应的调试信息。编译和加载此内核模块后,您可以通过调用 example_function 函数来触发Kprobe,并在内核日志中查看输出的调试信息和函数调用次数。原创 2023-07-29 15:34:27 · 588 阅读 · 5 评论 -
1、怎么阅读linux内核源码
使用调试工具和技术,如Kprobe、Ftrace等,可以帮助您更深入地了解内核代码的执行过程。阅读这些文档可以帮助您对内核代码的整体架构和工作原理有更清晰的了解。开始阅读内核代码时,可以从关键的启动代码或入口函数开始,然后根据需要跟踪代码的执行流程。同时,阅读和理解相关的注释以及函数和数据结构的定义也是非常重要的。一开始可能会感到困惑和复杂,但随着不断的学习和实践,您会逐渐掌握内核代码的阅读和分析技巧。因此,选择您感兴趣的子系统或功能模块,有助于更有针对性地学习和研究相关的代码。原创 2023-07-29 15:15:46 · 439 阅读 · 0 评论