IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:Kernel Module

共 3 篇相关文章

IT 累计浏览 2,503

BLCR(Berkeley Lab Checkpoint/Restart)介绍及Checkpoint架构剖析

这篇讲的是进程检查点(Checkpoint)工具BLCR的核心架构剖析。作者从`cr_checkpoint`命令的用法出发,深入讲解了BLCR如何通过特定信号(64号实时信号)与内核模块协作,来实现对进程状态的“快照”保存。 文章重点剖析了用户态工具与内核模块通过`/proc`文件系统交互的机制。核心在于,BLCR需要为目标进程预先注册一个专用的信号处理函数。为此,它设计了两种等效的接入方式:一种是使用`cr_run`脚本启动程序,通过`LD_PRELOAD`预加载`libcr_run.so`库;另一种是在编译时直接链接`libcr`库。文章进而深入内核,解析了检查点请求(`cr_chkpt_req`)的构建过程,以及内核如何通过创建任务对象和进程请求对象来跟踪目标进程树,并最终完成内存的转储。 最巧妙的是,文章对比了两种接入方式在底层实现上的微妙差异:链接`libcr.so`的程序在信号处理函数中会通过两次`ioctl`调用来完成操作并通知完成;而通过`cr_run`启动的程序则使用汇编实现的信号处理函数,一次性完成转储并依赖一个特殊标志(`_CR_CHECKPOINT_STUB`)在内核侧直接触发完成流程。这种对源码细节的深挖,揭示了BLCR在兼容性和设计灵活性上的考量。

IT 累计浏览 2,943

深入浅出Flashcache(三)

这篇是“深入浅出Flashcache”系列的第三篇,作者在回顾了block device和device mapper的基础概念后,将话题转向Linux内核模块编写的基础知识。由于Flashcache本身是一个内核模块,要真正理解其源码实现,必须先掌握内核编程的基本框架,因此这一篇专注于讲解模块的加载机制、核心结构和编写要点。作者以自谦的门外汉视角,现学现卖地梳理了module_init和module_exit宏的作用、模块参数的定义方式,以及内核模块的常见结构。虽然对于已经熟悉内核开发的读者来说,这些内容可能显得浅显,但它为整个系列后续深入分析Flashcache的代码扫清了必要的障碍。通过这篇铺垫,读者能更顺畅地跟随作者进入Flashcache的技术深水区,理解它如何在内核层与块设备交互并实现缓存功能。

IT 累计浏览 3,182

如何在关闭某个内核模块

这篇讲的是如何在系统中精确禁用不需要的Linux内核模块,特别适用于模块与当前硬件不兼容或存在冲突的场景。 文章直接切入操作核心:通过编辑`/etc/hotplug/blacklist`文件,将特定的模块名添加到黑名单中,从而阻止系统自动加载它们。作者以实际服务器配置为例,清晰地展示了禁用`usb_storage`、`i5000_edac`和`edac_mc`模块的具体写法,并解释了黑名单文件的工作原理——阻止热插拔脚本加载指定模块,以便让其他驱动接管或彻底禁用功能。 这种方法直接有效,尤其当系统默认加载的模块引发故障或资源冲突时,能提供最底层的控制。对于需要精细管理系统启动行为或解决特定硬件兼容性问题的系统管理员来说,这篇指南提供了一个明确的、可立即操作的解决方案。