+ -
当前位置:首页 → 问答吧 → 为什么使用fakeroot创建设备节点后,设备节点的属性改变?

为什么使用fakeroot创建设备节点后,设备节点的属性改变?

时间:2008-11-10

来源:互联网

我使用fakeroot绕开root为嵌入式文件系统创建几个设备节点,然后使用lzma来制成Image,但是发现在板子上系统起不来,后来查看在生成文件系统前 /dev目录下的设备节点属性发生了改变,不知到是否是这个原因导致kernel不能bootup。
我是用普通用户 qinguang登陆 编译kernel和文件系统的,下面是部分例子:

[qinguang@rdfwdev2 SDK3200]$ /home/qinguang/SDK3200/tools/bin/fakeroot
[root@rdfwdev2 SDK3200]# cd source/romfs/dev
[root@rdfwdev2 dev]# mknod ttyS0 c 5 1
[root@rdfwdev2 dev]# mknod ttyS1 c 5 2
[root@rdfwdev2 dev]# mknod mtd b 100 1

[root@rdfwdev2 dev]# ls -l ttyS*
crw-r--r-- 1 root root 5, 1 Nov 10 14:26 ttyS0
crw-r--r-- 1 root root 5, 2 Nov 10 14:26 ttyS1
[root@rdfwdev2 dev]# exit
exit
[qinguang@rdfwdev2 SDK3200]$ ls -l source/romfs/dev/ttyS*
-rw--w--w- 1 qinguang firmware 0 Nov 10 14:26 source/romfs/dev/ttyS0
-rw--w--w- 1 qinguang firmware 0 Nov 10 14:26 source/romfs/dev/ttyS1

为什么设备节点的属性和  host机器里/dev目录下的设备属性不一样???????   急呀!      

作者: topeqin   发布时间: 2008-11-10

创建的文件是错误的(是一些普通文件而不是设备文件)。
您直接用cp -a  /dev/*     your_dir/ 命令拷贝设备文件到您的目标目录吧。      

作者: 风雪狂客   发布时间: 2008-11-17

也要看你shell(简化shell),c库吧

或许还包括文件系统是否支持属性

mknod我觉得不可能创建成普通文件

      

作者: AIKO_sex   发布时间: 2008-11-18


不管怎样我还是感谢这位仁兄。问题我已经解决了。 在创建完设备节点后,用fakeroot身份看到的是正确的,那是因为fakeroot的库“欺骗”了我们,换句话说就是他像真实的root一样创建了节点、属性、uid、gid,但是并没有check uid、gid。  如果退出该环境就没有了fakeroot的信息了。  解决的方法就是你把这些设备节点打包、或是压缩。 当一真实的root登陆解压或市使用时就是正确的。      

作者: topeqin   发布时间: 2008-11-19