塊裝置驅動 流程

2021-07-09 05:04:33 字數 1645 閱讀 4348

環境: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向...