当前位置: 技术问答>linux和unix
关于 ramdisk 不能挂载, 请教一下
来源: 互联网 发布时间:2016-07-20
本文导语: 本帖最后由 todo9351 于 2009-12-01 17:45:56 编辑 在Linux 2.4.xx上, 我想划出一小块内存(先定义了一个大数组进行模拟)当成磁盘块设备使用。 我的做法是 1 先完成 struct block_device_operations 中的函数; 2 写 rd_make_reques...
1 先完成 struct block_device_operations 中的函数;
2 写 rd_make_request(), 处理有关读写请求队列;
3 在初始化程序 rd_init() 中,
1)调用 blk_queue_make_request(BLK_DEFAULT_QUEUE(rd_major), rd_make_request) ;
2) /* 创建目录 */
devfs_myDriver_dir = devfs_mk_dir(NULL, "rd", NULL);
3)创建设备文件
devfs_register(devfs_myDriver_dir, "ramdisk", DEVFS_FL_DEFAULT, rd_major, rd_minor,
S_IFBLK | S_IRUSR | S_IWUSR,
&rd_fops, NULL);
系统初始化 rd_init(), 则在 dev/rd/目录下会有ramdisk这样一个块设备,但是, 我用 mount 时, 挂载不上去文件系统 vfat, 请问一下, 我这个过程还缺少哪些步骤?
提示 mount 返回 -19, 我查了一下, 是#define ENODEV 19 /* Operation not supported by device */
哈, 这个是因为 所mount的文件系统不支持;
又 mount 一次, 返回 -16, #define EBUSY 16 /* Device busy */
这, 个又傻了
|
应该缺少文件系统
试试mkfs.vfat /dev/rd/ramdisk
试试mkfs.vfat /dev/rd/ramdisk
|
可惜是2.4的,如果是2.6的话有兴趣完整地做一遍
手头有《Linux设备驱动开发技术及应用》 (韩)
里面有这个实验的2.6 、2.4的详细代码和步骤,不过没下到源代码,也懒得敲了
我看他是先格式化
mke2fs /dev/vrd0
之后才挂载的
手头有《Linux设备驱动开发技术及应用》 (韩)
里面有这个实验的2.6 、2.4的详细代码和步骤,不过没下到源代码,也懒得敲了
我看他是先格式化
mke2fs /dev/vrd0
之后才挂载的