sys 和 proc 是内核启动后生成的虚拟文件系统,将他们挂载到根文件系统后便可以查看其中的内容, 挂载方法是
mount -t sysfs sys /sys
mount -t proc proc /proc
例如 hello 模块驱动, 创建一个字符设备 hello
static int __init hello_init(void)
{
major = register_chrdev(0, "hello", &drv_hello);
hello_class = class_create(THIS_MODULE, "hello_class");
device_create(hello_class, NULL, MKDEV(major, 0), NULL,"hello");
return 0;
}
执行 insmod 后在 sys 中查找相关信息
/root # find /sys -name "*hello*"
/sys/devices/virtual/hello_class
/sys/devices/virtual/hello_class/hello
/sys/class/hello_class
/sys/class/hello_class/hello
/sys/module/drv_hello
/root #
设备实际的位置是在 /sys/devices/virtual/hello_class/hello, 但在 class 也有内容, class 只是一种分类方式, module 中有是因为 /sys/module 目录包含所有被载入Kernel的模块,无论这些模块是以内联(inlined)方式编译到内核映像文件中还是编译为外模块(.ko文件)
网友评论