
《学活LINUX》 第二讲
内核模块和驱动模型
“各位观众晚上好。今天是7月29日,星期六,农历六月十二。欢迎收看《新闻联播》节目……台风‘杜苏芮’强度减弱,受其寒流继续北上影响,多地出现降雨天气……”
上周六是被风雨困在家中的一天,而盛格塾直播间中的格友们则在《学活Linux》的第二讲课程里度过了这个风雨交加的夜晚,掌握了Linux下内核模块和驱动模型的相关知识。
与第一讲相同,第二讲的试验设备仍是GDK8或幽兰代码本。

LKM

从操作系统层面来看,软件世界中最主要的便是内核空间和用户空间。用户空间是低特权、可见的;内核空间是高特权、不可见的。这跟传统道家哲学中的“阴”和“阳”很相似。

张老师在软件在《软件调试》(卷2)中写到:“用户空间是可见的,很多程序在上面生生不息,属阳。内核空间不可见,但是承载着上面的应用,为应用提供服务,厚德载物,本身不发光,但是却能反射应用的光辉,像月亮,属阴。”事物总是充满悖论的,软件世界中也是如此。具有高特权的、神秘的内核空间是管理者、操纵者,主宰着整个系统的行为。本讲内容,我们就要写一个小程序,并安插这个模块到内核空间,这样的程序在Linux下一般就叫做LKM,即可加载内核模块。
“刘姥姥”驱动

GDK 8和幽兰代码本已经准备好了这个LKM——“刘姥姥”。“刘姥姥”是GDK8和幽兰代码本的一大特色,它已经为大家准备好了构建驱动的环境,大家拿到机器之后就能构建驱动,可以节约更多时间成本。

C语言的发明者丹尼斯·里奇说过:“学C语言最好的方法是用C语言写程序。”
同理,学Linux内核最好的方法便是读“活”代码,学“活”代码。如何学“活”呢?方法之一是写一部分代码,把它加载起来,再把调试器挂上去看;方法之二便是后面将会讲到的以命令方式进行交互。
紧接着,张老师便给大家演示了如何构建驱动,并跟驱动进行深层次的交互,用内核调试器把它断下来(具体操作可通过文末视频链接观看课程全部内容)。
proc文件

proc是Linux操作系统的一大特色,是Linux下管理进程的一个假文件系统。一个可加载内核模块可以通过假文件系统和用户空间进行交互。“刘姥姥”驱动里也注册了一个假的proc文件,并注册了其read和reread回调。它开创了一种新的模式,把write函数做解释,通过指示不同的命令与用户空间进行交互。张老师演示了如何读“刘姥姥”等操作。

LED

GDK8的前面板是有LED的,且GDK8套件内含遥控器,大家可以操作遥控器通过数码管显示一些基本信息,如IP地址等。其工作原理也是基于内核驱动的,即其中的HT1628_driver。


直播间的朋友也一直很认真地听课及讨论,张老师对于所提出的问题也给予了详细的解答。

最后,自本讲内容起,《学活Linux》课程直播活动改变了赠书形式,不再通过有奖竞答形式,而是在直播间中进行两次抽奖活动,两位幸运观众将直接获得由异步社区赞助的《奔跑吧Linux内核》的纸质书。

未加入课程交流群的朋友可以扫描下方二维码进群交流,获得更及时、更详尽的课程信息。没参与直播的朋友也可以通过下方的视频链接观看回放,遇到问题进入微信群询问。本周六晚,哔哩哔哩“盛格塾”直播间继续《学活Linux》第三讲,张老师带你探索段错误和页机制。



// 微信群二维码 //
该二维码8月8日前有效
录播回放合集:https://space.bilibili.com/2080622547/channel/collectiondetail?sid=1559415
直播间链接:http://live.bilibili.com/24576892
直播时间:2023年7月22日至9月2日
每周六 20:00 - 21:30
【盛格塾】
正心诚意,格物致知
以人文情怀审视软件,以软件技术改变人生

格友公众号

盛格塾小程序
扫描上方二维码或在微信中搜索“盛格塾”小程序
可以阅读更多文章和有声读物
往期推荐
本文讲述了在《学活Linux》第二讲中,学习者掌握了内核模块和驱动模型的基本概念,通过实例“刘姥姥”驱动,了解了内核空间与用户空间的关系,以及如何构建和调试驱动。课程还介绍了Linux下的proc文件系统和LED控制的内核驱动应用。
1298

被折叠的 条评论
为什么被折叠?



