最常見的 kernel module 就是 device driver了,也就是各種硬體 (顯示卡、磁碟、serial port 等等) 的驅動程式。像是在 Linux 中,在 /dev/ 目錄下的每一個檔案 (就稱為 device file),都是代表一個硬體,而使用者的程式就可以透過這些 device file 來跟硬體做溝通。譬如說,你要將資料燒錄到光碟機中,只需要將 ISO 建立到 /dev/cdrom 裡。又或者播放程式要播放音樂,就必須要跟音效卡 (/dev/sound) 做溝通,但程式本身不用去管音效卡是什麼。
在 /dev 目錄地下的 device file,都有兩個數字分別是 major number 與 minor number。用來區別不同的 driver 與個別的硬體。每個硬體設備都會有唯一的 major, minor number 組合,如果 major number 相同,代表他們使用一樣的 driver,而不同的 minor number,則連結到不同的硬體。例如下圖,表示所有的磁碟 (/dev/sd*) 的 major number 都是 8,代表他們都使用同一個驅動程式。
[root@Pomelo-14-61 ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 0 Jun 16 08:59 /dev/sda
brw-rw---- 1 root disk 8, 1 Jun 16 08:59 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jun 16 08:59 /dev/sda2
brw-rw---- 1 root disk 8, 3 Jun 16 08:59 /dev/sda3
brw-rw---- 1 root disk 8, 16 Jun 16 08:59 /dev/sdb
brw-rw---- 1 root disk 8, 32 Jun 16 08:59 /dev/sdc
brw-rw---- 1 root disk 8, 48 Jun 16 08:59 /dev/sdd