作者jserv (松鼠)
看板Soft_Job
標題Re: [請益] Linux device driver好不好自學上手?
時間Fri Sep 3 12:09:29 2021
※ 引述《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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.246.163 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1630642175.A.AE5.html
1F:→ LinuxKernel: 可惡想學 09/03 12:14
2F:推 cphe: 有神出沒,快拜 09/03 12:15
3F:→ jserv: @LinuxKernel, 請收下我的膝蓋 09/03 12:15
5F:推 lturtsamuel: 大師 09/03 12:21
6F:推 GymRat: 松鼠大,快拜 09/03 12:24
7F:推 iamgp: 快跪著看.... 09/03 12:33
8F:推 nicehorse06: 朝聖 09/03 12:36
9F:→ j0958322080: 前十推 09/03 12:46
10F:推 lolmap: jserv必須推 09/03 12:47
11F:→ jserv: @lolmap, 那 GitHub 的星星就麻煩你了 09/03 12:47
12F:推 yusheng88992: 先跪了 09/03 12:52
13F:推 neo5277: 先拜 09/03 12:53
14F:推 matthewka: 有神快推 09/03 12:55
15F:推 bill1992: 好想上大師的課 09/03 13:02
16F:推 kenshih1203: 跪著看神 09/03 13:03
17F:推 jkkert: 朝聖 09/03 13:07
18F:推 Yan5566: 老師好 09/03 13:10
19F:推 NciscalA: 推 09/03 13:11
20F:推 hans1461: 推 09/03 13:12
21F:推 shooter555: 還是免費的 快拜 09/03 13:15
22F:推 Lhmstu: 推 09/03 13:15
23F:推 pl132: 感謝大神回答~ 09/03 13:19
24F:推 f9g8h7j654: 朝聖 09/03 13:21
25F:推 pl132: 可惜相見恨晚~沒能報名今年課程 09/03 13:22
26F:→ lolmap: 已按github星星 09/03 13:28
27F:推 DCTmaybe: 已打星 09/03 13:35
28F:推 james732: 推 09/03 13:39
29F:推 deflife: 竟然出現了XD 09/03 13:40
30F:→ jserv: @pl132, 沒意外的話,今年底我還會發布另一本電子書,也有 09/03 13:47
31F:→ jserv: 對應的課程,預祝學習順利 09/03 13:48
32F:推 ianwind: 推 09/03 13:51
33F:推 lemontea0328: 感謝分享 09/03 13:52
34F:推 SuperUnison: 推推推 09/03 13:53
35F:推 b0920075: ldd 和 lkmpg 分別的定位是什麼啊?我有在看另一本日本 09/03 13:55
36F:→ b0920075: 人寫的驅動開發,但年代好像有點久,有些 code 在 linu 09/03 13:55
37F:→ b0920075: x 5.0 以上編譯不過還要自己去改QQ 09/03 13:55
38F:→ jserv: @b0920075, LDD 完整但不能自由修改,且書中範例過時 09/03 14:00
39F:→ jserv: LKMPG 的定位就是一本小書,只給你精簡的材料,可自由修改 09/03 14:01
40F:推 b0920075: 了解,感謝解惑 09/03 14:04
41F:→ jserv: 我對 LKMPG 的另一個期許是,作為學生日後貢獻 Linux 核心 09/03 14:06
42F:→ jserv: 的練習環境:學生用 Linux 核心程式碼風格撰寫程式並提交 09/03 14:06
43F:→ jserv: 對應的 git commmit (關鍵是訊息描述,英文書寫需要多練習) 09/03 14:07
44F:推 y956403: 推 09/03 14:16
45F:推 acoupleof123: 推 09/03 14:25
46F:推 hduek153: 太神了 09/03 14:43
47F:推 chiel: 有神我就推 09/03 14:53
48F:推 bab7171: 推 09/03 14:58
49F:推 kiki86151: 先拜 09/03 15:02
50F:推 loadingN: 三月的文也能釣到!? 09/03 15:17
51F:推 benjamin1023: 跪… 09/03 15:18
52F:推 devilkool: 拜見大神 09/03 15:19
53F:推 duck10704: 朝聖 09/03 16:09
54F:→ ericthree: 有神快拜 09/03 16:19
55F:推 m490521: 大神!請收下膝蓋 09/03 16:27
56F:推 h3882249: 朝聖 09/03 16:40
57F:推 whatabiggun: 推爆 09/03 16:46
58F:推 Eric0605: 大師... 09/03 17:02
59F:推 xoy232: 大神 感謝你 請收下我的膝蓋 09/03 17:18
60F:推 GTX9080: 媽我在這 09/03 17:29
61F:推 smily134: 推 09/03 17:52
62F:→ sniper2824: 大神 09/03 18:16
63F:推 Walkers: 有神快拜 09/03 18:30
64F:推 aaa1234136: 在成大的時候一直想修大大的課QQ 09/03 18:36
65F:推 wulouise: starred, push 09/03 18:40
66F:推 linnom: Jserv先推太喜歡老師的課 09/03 18:40
67F:推 askaleroux: 好色喔 色夫 09/03 18:53
68F:推 poneponecar: 朝聖推 09/03 18:55
69F:推 kangan987: 推! 09/03 19:22
70F:推 Yunyung: 朝聖 09/03 19:29
71F:推 Burwei: 朝聖推 09/03 19:49
72F:推 tw00084811: 有神快推 09/03 19:51
73F:推 TTTTTsai: 朝聖 09/03 20:08
74F:推 cococing: 朝聖 09/03 20:20
75F:推 ice831107: 跪著看jserv 09/03 20:23
76F:推 pttano: 推 09/03 20:53
77F:推 richer6605: 非常感謝分享 09/03 21:01
78F:推 laughingman: 有神快拜 09/03 21:09
79F:推 Rayishere: 推推 09/03 21:13
80F:推 ptta: 推 09/03 21:14
81F:推 unmolk: 神… 09/03 21:48
82F:推 chuegou: 未看先推 09/03 21:48
83F:推 shorty696820: 看到這個文章標題 我就知道一定會釣到了 09/03 22:09
84F:推 mmonkeyboyy: 這過這麼久才釣到他XD 09/03 22:25
85F:→ mmonkeyboyy: ldd 作者就不太更新了 09/03 22:26
86F:→ mmonkeyboyy: 有這個接上也真的很不錯捏~ 09/03 22:26
87F:→ jserv: @askaleroux, 是 "colorful" 人生的「彩色」 09/03 23:09
88F:→ jserv: @loadingN, 是聽到網友的呼喚,我只好犧牲暑假趕工寫書 09/03 23:10
89F:推 steven8411: 有神先推 09/03 23:17
90F:推 zmcx16: 推jserv 09/03 23:22
91F:推 kkroy: 朝聖 09/03 23:31
92F:推 ejnfu: 推 09/03 23:37
93F:推 pearlsally: 好猛 09/03 23:44
94F:推 knme: 推推 09/03 23:51
95F:推 babymomo0101: 推推 09/04 00:47
96F:推 ChoDino: 軟體界的福音戰士阿! 09/04 00:55
97F:推 qwefghiop1: 若能搭配開發版像是樹莓派邊做邊學就更好了。 09/04 01:48
98F:推 Gazella: 朝聖 努力學習中 09/04 03:00
99F:→ jserv: @qwefghiop1, LKMPG 裡頭有二個範例就針對 Raspberry Pi 09/04 04:57
100F:推 yupog2003: 朝聖 09/04 09:07
101F:推 bewitchsky: 推 09/04 10:51
102F:推 ID3238: 來看上帝 09/04 10:55
103F:推 mickey94378: 推爆 jserv 09/04 11:40
104F:推 pttrAin: 朝聖 09/04 11:47
105F:推 qwer495: 猛 09/04 12:18
106F:推 qwe04687: 推 早上才看到另一篇 09/04 12:23
107F:推 abcdtony2: 感謝老師 09/04 12:46
108F:推 jimjim951357: 朝聖推 09/04 13:12
109F:推 e12518166339: 感謝老師,一路以來受到很多幫助,現在能夠從事開 09/04 13:32
110F:→ e12518166339: 源貢獻真的超爽的 09/04 13:32
111F:推 tommytyc: 推 09/04 14:56
112F:推 rongyaya: 老師好 09/04 15:15
113F:推 PompelmousJ: 太神啦 09/04 17:33
114F:推 s678131: 感謝 09/04 19:51
115F:推 JavaScript: 祝福老師身體健康,可以繼續造福更多學子們 09/04 21:42
116F:推 bcew: 朝聖 09/04 23:46
117F:推 wheels: 大神推推 09/05 00:52
118F:推 chaos1993: 有大神快拜 09/05 02:21
119F:推 goldie: 朝聖推 09/05 11:19
120F:推 loveu8: 先拜XD 09/05 13:18
121F:推 AAAWhoAmI: 已跪 09/05 14:56
122F:推 IhateOGC: 我有買@@ 09/05 18:57
123F:推 Phenomenon: 推 09/05 23:03
124F:推 SmallpTsai: 有神快拜 09/05 23:10
125F:→ jserv: @IhateOGC, 你說買什麼? 09/05 23:18
126F:推 WaterLengend: 推 09/06 00:31
127F:推 YYYero: 推 09/06 00:54
128F:→ yoche2000: 有神快拜 09/06 01:17
129F:推 yuankwei: 是大神!!! 09/06 02:02
130F:推 streakray: 推推推推 09/06 06:26
131F:→ godsparticle: 有神快拜 09/06 08:07
132F:推 erolissi: 有神快拜 09/06 10:06
133F:推 MDay56: 謝謝 09/06 10:30
134F:推 sa074463: 感謝老師 09/06 12:34
135F:推 mrnegativetw: 有神快拜 09/06 19:52
136F:推 becca945: 先給星星 09/06 20:47
137F:推 tom758258: 已給星星 09/06 22:09
138F:推 a8989332: 老師帥 09/06 23:04
139F:推 morek: 感恩大大無私分享 09/07 00:26
140F:推 khalifa16: 推 09/07 09:54
141F:推 fg008kimo: 居然是大神 09/07 14:02
142F:推 tumaz: 祝老師身體健康萬事如意 09/08 14:08
143F:推 william0512: 寫超好 摸一陣driver才看到這篇 相見恨晚 09/08 21:04
144F:推 mikeqoo1: 大神給推! 09/09 15:49
145F:推 Jeniberg: 推 09/12 00:48
146F:推 cookiej4u: 推 09/12 12:25
147F:推 dyjo4949: 遇到神了!! 09/14 19:10
148F:推 Tharp: 神人快拜!! 09/16 00:19
149F:推 sintsu: 見過神人 已拜 09/16 00:25
150F:推 charliejack: 感謝老師 受惠良多 對台灣Linux Kernel人才培育 09/16 10:21