主题 : 为什么我用NFS做根文件系统启动的内核下/sys文件夹下是空的? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 51637
精华: 0
发帖: 40
金钱: 205 两
威望: 41 点
综合积分: 80 分
注册时间: 2011-07-05
最后登录: 2015-10-08
楼主  发表于: 2012-01-19 17:06

 为什么我用NFS做根文件系统启动的内核下/sys文件夹下是空的?

最近在学总线设备模型,改了几个例程到板子上运行,看图:

启动后/sys下是空的,不知道为什么~



启动却都可以成功加载,最后device_driver.probe成功被调用,可是/sys下一直都是空的,而/proc下却有很多文件



我的在板子上对NFS根文件系统完全没有写权限,宿主机的exports里已经设置了RW权限,但还是无法进行修改和删除操作,只有在宿主机上依次设置777权限才行,是不是跟这个有关系呢?但我改了/SYS的权限也是空的~

还有,既然发了贴就再问一个问题吧:

写模块的时候,包含的头文件路径有点搞不懂。应该是在Makefile文件里找吧,如果KDIR是源代码路径的话,这时候如果在模块代码中加入
#include <mach/hardware.h>
那到底是包含哪一个路径下的hardware.h呢?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2012-01-19 21:54
只有在把sysfs挂在到/sys目录下之后你才能在/sys文件夹下面看到东西。用mount命令不带任何参数可以查看当前所有已经挂载的文件系统。用"mount -t sysfs none /sys"可以把sysfs挂载到/sys目录下。


写模块的时候,包含的头文件路径有点搞不懂。应该是在Makefile文件里找吧,如果KDIR是源代码路径的话,这时候如果在模块代码中加入
#include <mach/hardware.h>
那到底是包含哪一个路径下的hardware.h呢?

这是在arch/arm/Makefile里指定的:
234 machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
235 platdirs := $(patsubst %,arch/arm/plat-%/,$(plat-y))
236
237 ifeq ($(KBUILD_SRC),)
238 KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs))
239 else
240 KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs))
241 endif

变量machine-y和plat-y的值也是在这个文件里根据内核的配置而决定的,对于S3C6410的硬件平台来说,有
176 machine-$(CONFIG_ARCH_S3C64XX)          := s3c64xx
...
205 plat-$(CONFIG_ARCH_S3C64XX)     := samsung

所以,实际包含的文件就是arch/arm/mach-s3c64xx/include/mach/hardware.h或者arch/arm/plat-samsung/include/mach/hardware.h
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 51637
精华: 0
发帖: 40
金钱: 205 两
威望: 41 点
综合积分: 80 分
注册时间: 2011-07-05
最后登录: 2015-10-08
2楼  发表于: 2012-01-20 00:25

老大,我爱死你了~