※ 引述《pl132 (pl132)》之铭言:
: 最近小弟有考上资工在职专班
: 有问到教授是做无线网络算法
: 他说要熟linux device driver怎么写
: 但是无奈小弟是用python做仪控比较多
: 实在不熟C,大学非本科,程式是上班后自学的
: 想请问各位版友这块到底好不好做啊?自学上手要多久呢?
同学你好,我最近跟学生一起编撰《The Linux Kernel Module Programming Guide》,
这本电子书原本在 2007 年 (相当于 Linux v2.6.20 释出的年代) 就停止更新,但秉持
“路见不平,拿 patch 来填”的精神,我们就接手维护,更新书中描述和对应的范例程
式码到 Linux v5.x (配合 Ubuntu Linux LTS 的发布)。可线上免费存取:
https://sysprog21.github.io/lkmpg/
这本书简称为 LKMPG,尽管有很多地方需要改进,但关于 Linux 装置驱动程式开发的
基本概念应已涵盖。我知道好几位读者都用下班时间自学 [1],只要脚步踏实,仍可累
积些认知和成果。
另外,我也准备 vwifi 这个针对 Linux cfg80211 子系统 [2] 的虚拟无线网络驱动程
式,仅用不到 300 行就可开发,支援无线网络的扫描、连接,和断线等功能,请见:
https://github.com/sysprog21/vwifi
Linux 核心装置驱动程式和内部实作需要对 C 语言有更入的掌握,欢迎利用线上免费
讲座“你所不知道的 C 语言”来学习:
https://hackmd.io/@sysprog/c-prog
以及“Linux 核心设计”系列讲座:
https://hackmd.io/@sysprog/linux-kernel-internal
关于“自学上手要多久”这样的问题,我没有资格回复,毕竟我从 1997 年学习 Linux
以来,一直认为自己不理解 Linux 核心,一如苏格拉底所说:“我唯一知道的,就是我
一无所知”。
[1] 暑期 Linux 核心课程大约六成的学员是上班族:
https://hackmd.io/@sysprog/linux2021-summer
[2] cfg80211 子系统:
https://www.kernel.org/doc/html/latest/driver-api/80211/cfg80211.html