※ 引述《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