Re: [請益] Linux device driver好不好自學上手?

看板 Soft_Job
作者 jserv (松鼠)
時間 2021-09-03 12:09:29
留言 150則留言 (124推 0噓 26→)

: 最近小弟有考上資工在職專班 : 有問到教授是做無線網路演算法 : 他說要熟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://www.ptt.cc/bbs/Soft_Job/M.1630642175.A.AE5.html

LinuxKernel: 可惡想學 09/03 12:14

cphe: 有神出沒,快拜 09/03 12:15

jserv: @LinuxKernel, 請收下我的膝蓋 09/03 12:15

jserv: https://github.com/sysprog21/lkmpg #請善心網友幫忙打星 09/03 12:18

lturtsamuel: 大師 09/03 12:21

GymRat: 松鼠大,快拜 09/03 12:24

iamgp: 快跪著看.... 09/03 12:33

nicehorse06: 朝聖 09/03 12:36

j0958322080: 前十推 09/03 12:46

lolmap: jserv必須推 09/03 12:47

jserv: @lolmap, 那 GitHub 的星星就麻煩你了 09/03 12:47

yusheng88992: 先跪了 09/03 12:52

neo5277: 先拜 09/03 12:53

matthewka: 有神快推 09/03 12:55

bill1992: 好想上大師的課 09/03 13:02

kenshih1203: 跪著看神 09/03 13:03

jkkert: 朝聖 09/03 13:07

Yan5566: 老師好 09/03 13:10

NciscalA: 推 09/03 13:11

hans1461: 推 09/03 13:12

shooter555: 還是免費的 快拜 09/03 13:15

Lhmstu: 推 09/03 13:15

pl132: 感謝大神回答~ 09/03 13:19

f9g8h7j654: 朝聖 09/03 13:21

pl132: 可惜相見恨晚~沒能報名今年課程 09/03 13:22

lolmap: 已按github星星 09/03 13:28

DCTmaybe: 已打星 09/03 13:35

james732: 推 09/03 13:39

deflife: 竟然出現了XD 09/03 13:40

jserv: @pl132, 沒意外的話,今年底我還會發布另一本電子書,也有 09/03 13:47

jserv: 對應的課程,預祝學習順利 09/03 13:48

ianwind: 推 09/03 13:51

lemontea0328: 感謝分享 09/03 13:52

SuperUnison: 推推推 09/03 13:53

b0920075: ldd 和 lkmpg 分別的定位是什麼啊?我有在看另一本日本 09/03 13:55

b0920075: 人寫的驅動開發,但年代好像有點久,有些 code 在 linu 09/03 13:55

b0920075: x 5.0 以上編譯不過還要自己去改QQ 09/03 13:55

jserv: @b0920075, LDD 完整但不能自由修改,且書中範例過時 09/03 14:00

jserv: LKMPG 的定位就是一本小書,只給你精簡的材料,可自由修改 09/03 14:01

b0920075: 了解,感謝解惑 09/03 14:04

jserv: 我對 LKMPG 的另一個期許是,作為學生日後貢獻 Linux 核心 09/03 14:06

jserv: 的練習環境:學生用 Linux 核心程式碼風格撰寫程式並提交 09/03 14:06

jserv: 對應的 git commmit (關鍵是訊息描述,英文書寫需要多練習) 09/03 14:07

y956403: 推 09/03 14:16

acoupleof123: 推 09/03 14:25

hduek153: 太神了 09/03 14:43

chiel: 有神我就推 09/03 14:53

bab7171: 推 09/03 14:58

kiki86151: 先拜 09/03 15:02

loadingN: 三月的文也能釣到!? 09/03 15:17

benjamin1023: 跪… 09/03 15:18

devilkool: 拜見大神 09/03 15:19

duck10704: 朝聖 09/03 16:09

ericthree: 有神快拜 09/03 16:19

m490521: 大神!請收下膝蓋 09/03 16:27

h3882249: 朝聖 09/03 16:40

whatabiggun: 推爆 09/03 16:46

Eric0605: 大師... 09/03 17:02

xoy232: 大神 感謝你 請收下我的膝蓋 09/03 17:18

GTX9080: 媽我在這 09/03 17:29

smily134: 推 09/03 17:52

sniper2824: 大神 09/03 18:16

Walkers: 有神快拜 09/03 18:30

aaa1234136: 在成大的時候一直想修大大的課QQ 09/03 18:36

wulouise: starred, push 09/03 18:40

linnom: Jserv先推太喜歡老師的課 09/03 18:40

askaleroux: 好色喔 色夫 09/03 18:53

poneponecar: 朝聖推 09/03 18:55

kangan987: 推! 09/03 19:22

Yunyung: 朝聖 09/03 19:29

Burwei: 朝聖推 09/03 19:49

tw00084811: 有神快推 09/03 19:51

TTTTTsai: 朝聖 09/03 20:08

cococing: 朝聖 09/03 20:20

ice831107: 跪著看jserv 09/03 20:23

pttano: 推 09/03 20:53

richer6605: 非常感謝分享 09/03 21:01

laughingman: 有神快拜 09/03 21:09

Rayishere: 推推 09/03 21:13

ptta: 推 09/03 21:14

unmolk: 神… 09/03 21:48

chuegou: 未看先推 09/03 21:48

shorty696820: 看到這個文章標題 我就知道一定會釣到了 09/03 22:09

mmonkeyboyy: 這過這麼久才釣到他XD 09/03 22:25

mmonkeyboyy: ldd 作者就不太更新了 09/03 22:26

mmonkeyboyy: 有這個接上也真的很不錯捏~ 09/03 22:26

jserv: @askaleroux, 是 "colorful" 人生的「彩色」 09/03 23:09

jserv: @loadingN, 是聽到網友的呼喚,我只好犧牲暑假趕工寫書 09/03 23:10

steven8411: 有神先推 09/03 23:17

zmcx16: 推jserv 09/03 23:22

kkroy: 朝聖 09/03 23:31

ejnfu: 推 09/03 23:37

pearlsally: 好猛 09/03 23:44

knme: 推推 09/03 23:51

babymomo0101: 推推 09/04 00:47

ChoDino: 軟體界的福音戰士阿! 09/04 00:55

qwefghiop1: 若能搭配開發版像是樹莓派邊做邊學就更好了。 09/04 01:48

Gazella: 朝聖 努力學習中 09/04 03:00

jserv: @qwefghiop1, LKMPG 裡頭有二個範例就針對 Raspberry Pi 09/04 04:57

yupog2003: 朝聖 09/04 09:07

bewitchsky: 推 09/04 10:51

ID3238: 來看上帝 09/04 10:55

mickey94378: 推爆 jserv 09/04 11:40

pttrAin: 朝聖 09/04 11:47

qwer495: 猛 09/04 12:18

qwe04687: 推 早上才看到另一篇 09/04 12:23

abcdtony2: 感謝老師 09/04 12:46

jimjim951357: 朝聖推 09/04 13:12

e12518166339: 感謝老師,一路以來受到很多幫助,現在能夠從事開 09/04 13:32

e12518166339: 源貢獻真的超爽的 09/04 13:32

tommytyc: 推 09/04 14:56

rongyaya: 老師好 09/04 15:15

PompelmousJ: 太神啦 09/04 17:33

s678131: 感謝 09/04 19:51

JavaScript: 祝福老師身體健康,可以繼續造福更多學子們 09/04 21:42

bcew: 朝聖 09/04 23:46

wheels: 大神推推 09/05 00:52

chaos1993: 有大神快拜 09/05 02:21

goldie: 朝聖推 09/05 11:19

loveu8: 先拜XD 09/05 13:18

AAAWhoAmI: 已跪 09/05 14:56

IhateOGC: 我有買@@ 09/05 18:57

Phenomenon: 推 09/05 23:03

SmallpTsai: 有神快拜 09/05 23:10

jserv: @IhateOGC, 你說買什麼? 09/05 23:18

WaterLengend: 推 09/06 00:31

YYYero: 推 09/06 00:54

yoche2000: 有神快拜 09/06 01:17

yuankwei: 是大神!!! 09/06 02:02

streakray: 推推推推 09/06 06:26

godsparticle: 有神快拜 09/06 08:07

erolissi: 有神快拜 09/06 10:06

MDay56: 謝謝 09/06 10:30

sa074463: 感謝老師 09/06 12:34

mrnegativetw: 有神快拜 09/06 19:52

becca945: 先給星星 09/06 20:47

tom758258: 已給星星 09/06 22:09

a8989332: 老師帥 09/06 23:04

morek: 感恩大大無私分享 09/07 00:26

khalifa16: 推 09/07 09:54

fg008kimo: 居然是大神 09/07 14:02

tumaz: 祝老師身體健康萬事如意 09/08 14:08

william0512: 寫超好 摸一陣driver才看到這篇 相見恨晚 09/08 21:04

mikeqoo1: 大神給推! 09/09 15:49

Jeniberg: 推 09/12 00:48

cookiej4u: 推 09/12 12:25

dyjo4949: 遇到神了!! 09/14 19:10

Tharp: 神人快拜!! 09/16 00:19

sintsu: 見過神人 已拜 09/16 00:25

charliejack: 感謝老師 受惠良多 對台灣Linux Kernel人才培育 09/16 10:21

您可能感興趣