環境:centos 虛擬機器
[zyq@promote disk]$ cat makefile
obj-m := ramhd.o
ramhd-objs := ramhd_mkreq.o
kerneldir
:= /lib/modules
/$(shell uname -r)/build
pwd:= $(shell pwd)
default:
make -c
$(kerneldir) m=$(
pwd) modules
clean:
rm -f *.o *.ko *.mod.*
注意:
make -c ***;rm -f *** 前面不是空格而是tab鍵(通過tab來鑑定是命令列)。
還有,字母不要寫錯(我就是把第二個kerneldir寫成了kerneldir 乙個l 乙個l,就沒能讀出核心中/lib/modules/2.6.32-504.el6.x86_64/build,報錯找不到此檔案)
若核心中沒有 /lib/modules/2.6.32-504.el6.x86_64/build,就要重新編譯核心
[zyq@promote disk]#make 編譯生成.o .ko 檔案
[zyq@promote disk]# ls
makefile module.symvers ramhd.ko
.unsigned ramhd_mkreq.o ramhd.mod
.omodules.order ramhd.ko ramhd_mkreq.c ramhd.mod
.c ramhd.o
[zyq@promote disk]#insmod ramhd.ko 載入模組
[zyq@promote disk]#dmesg
–出現–
ramhda: unknown partition table
ramhdb: unknown partition table
[zyq@promote disk]#ls /dev/ram* 檢視裝置,多了兩個新裝置,這就是我們塊裝置驅動載入出來的。
/dev/ramhda
/dev/ramhdb
[root@promote disk]# fdisk /dev/ramhda
參考
[root@promote disk]# mkfs.ext3 /dev/ramhda1
[root@promote disk]#dmesg
[root@promote disk]# mount /dev/ramhda1 /my
[root@promote disk]#dmesg
ext3-fs (ramhda1): using
internal journal
ext3-fs (ramhda1): mounted filesystem with ordered data mode
selinux: initialized (dev ramhda1, type ext3), uses xattr
解除安裝 #umount /my
#rmmod ramhd.ko
塊裝置驅動
若塊裝置驅動程式也按以下字元裝置驅動程式的簡單思想來寫 1.硬碟 磁碟的讀寫其實非常快,慢在機械結構讀寫裝置的定位上面,從乙個 磁頭 的某 柱面 某 扇區 讀到資料後 步驟 r0 跳到另乙個 磁頭 的某 柱面 的某 扇區 去寫 步驟 w 接著再跳回原 磁頭 相同柱面的下乙個 扇區 去讀 步驟r1 慢...
裝置驅動 塊裝置驅動程式
塊裝置驅動程式提供對面向塊的裝置的訪問,這種裝置以隨機訪問的方式傳輸資料,並且資料總是具有固定大小的塊。典型的塊裝置是磁碟驅動器,也有其它型別的塊裝置。塊裝置和字元裝置有很大區別。比如塊裝置上可以掛載檔案系統,字元裝置不可以。這是隨機訪問帶來的優勢,因為檔案系統需要能按塊儲存資料,同時更需要能隨機讀...
Linux塊裝置驅動
塊裝置提供塊裝置提供裝置的訪問,裝置的訪問,可以隨機的以固定大小的塊傳輸資料,例如我們最為常見的磁碟裝置,當然塊裝置和字元裝置有較大差別,塊裝置有自己的驅動介面。簡單來說,核心決定乙個塊是固定的4096 位元組,當然該值可以隨著依賴檔案系統的變化而改變。塊裝置驅動採用register blkdev向...