scull例子程序与devfs,ldd2

问题描述:

scull编译通过以后,insmod安装,并创建了/dev/scull文件。但对/dev/scull操作时,系统提示bash: /dev/scull: No such device

问题分析:

lsmod可以见到scull模块已加载,但cat /proc/devices没有scull。检查发现,CONFIG_DEVFS_FS宏已在内核中打开,所以设备采用devfs_register注册,而不是register_chrdev。查看内核编译配置.config文件,发现:

CONFIG_DEVFS_FS=y
# CONFIG_DEVFS_MOUNT is not set

尽管内核支持devfs,但并未在系统启动时加载。

解决:

scull.h中#undef CONFIG_DEVFS_FS;
或内核中关闭devfs配置;
或使用devfsd虚拟文件系统支持devfs

通用线程: 高级文件系统实现者指南,第 5 部分
http://www-128.ibm.com/developerworks/cn/linux/filesystem/l-fs5/
通用线程: 高级文件系统实现者指南,第 6 部分
http://www-128.ibm.com/developerworks/cn/linux/filesystem/l-fs6/
Using devfs with Debian GNU/Linux and kernel 2.4.0
http://www.yk.rim.or.jp/~ishikawa/devfsd-2nd.txt


相关文章

Speak Your Mind

If you want a pic to show with your comment, go get a gravatar!