块设备驱动-流程

环境:centOS 虚拟机

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

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

[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 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]# ls
Makefile       Module.symvers  ramhd.ko.unsigned  ramhd_mkreq.o  ramhd.mod.o
modules.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]#dmesg
EXT3-fs (ramhda1): using internal journal
EXT3-fs (ramhda1): mounted filesystem with ordered data mode
SELinux: initialized (dev ramhda1, type ext3), uses xattr

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

卸载 #umount /my
#rmmod ramhd.ko

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值