块设备驱动-流程

来源:互联网 发布:淘宝评论看不见 编辑:程序博客网 时间:2024/05/21 23:00

环境:centOS 虚拟机

1.下载了一个块设备驱动源码 类似于ramdisk 源码ramhd_mkreq.c

2.生成Makefile文件,来编译此c文件

[zyq@promote disk]$ cat Makefile obj-m := ramhd.oramhd-objs := ramhd_mkreq.oKERNELDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)default:        make -C $(KERNELDIR) M=$(PWD) modulesclean:        rm -f *.o *.ko *.mod.*

注意:
make -C xxx;rm -f xxx 前面不是空格而是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,就要重新编译内核

3.此时/home/zyq/disk下有ramhd_mkreq.c Makefile 两个文件。

4.make 编译

[zyq@promote disk]#make       编译生成.o  .ko 文件[zyq@promote disk]# lsMakefile       Module.symvers  ramhd.ko.unsigned  ramhd_mkreq.o  ramhd.mod.omodules.order  ramhd.ko        ramhd_mkreq.c      ramhd.mod.c    ramhd.o

5.将编译生成的模块ramhd.ko加入内核

[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

6.对设备进行分区

[root@promote disk]# fdisk /dev/ramhda

参考 http://www.jb51.net/LINUXjishu/57192.html

7.为设备创建文件系统

[root@promote disk]# mkfs.ext3 /dev/ramhda1[root@promote disk]#dmesg

8.设备有文件系统后,可以被挂载

[root@promote disk]# mount /dev/ramhda1 /my[root@promote disk]#dmesgEXT3-fs (ramhda1): using internal journalEXT3-fs (ramhda1): mounted filesystem with ordered data modeSELinux: initialized (dev ramhda1, type ext3), uses xattr

最后可以在/my下创建目录,文件,(都是属于ext3文件系统属性)

卸载 #umount /my
#rmmod ramhd.ko

0 0
原创粉丝点击