fakeroot 与设备节点

fakeroot 在 buildroot 中到底做了什么
fakeroot 的意义在于创建一些root设备才能创建的设备,但是对于 字符设备这一类型,就显得无力了
但是 buildroot 中的 fakeroot 还是完成了这个使命
fakeroot 将 rootfs 打成了包,里面的dev目录有很多字符文件
但是如果你解包的话,就需要root权限了,root权限可以获得正确的设备文件
// 如果你用普通权限解包,会丢失 dev下的设备文件名 对应的文件 , 但是 "非设备文件的文件" 不会丢失 
// 如果你用fakeroot解包,那么dev下的设备文件会解压出来 普通文件
所以本质上,fakeroot 还是不能 在 真实环境下 创建 字符文件 做出来!!!
	buildroot 中的fakeroot 其实是这么做的:
		在fakeroot环境下(用makedevs, 参考package/makedevs/README)创建字符文件
		然后打包
		然后退出fakeroot环境
		
这也是为什么buildroot的生成物 不能为 目录,而是以tarball存在 的问题!!!

// 在 target 目录中,只存在这些非设备文件的文件
buildroot/output$ ls target/dev/ -l 
total 8
lrwxrwxrwx 1 suweishuai dev   15 Jul 10  2021 fd -> ../proc/self/fd
lrwxrwxrwx 1 suweishuai dev   10 Jul 10  2021 log -> ../tmp/log
drwxr-xr-x 2 suweishuai dev 4096 Jul 10  2021 pts
drwxr-xr-x 2 suweishuai dev 4096 Jul 10  2021 shm
lrwxrwxrwx 1 suweishuai dev   17 Jul 10  2021 stderr -> ../proc/self/fd/2
lrwxrwxrwx 1 suweishuai dev   17 Jul 10  2021 stdin -> ../proc/self/fd/0
lrwxrwxrwx 1 suweishuai dev   17 Jul 10  2021 stdout -> ../proc/self/fd/1
字符设备 基于 “创建时间” 上的分类
有些必须在init进程前启动     						: 第一类
有些可以在init启动过程中创建,或者是系统运行时创建   : 第二类
  • 系统启动时,执行init进程前需要准备好的设备节点
目前高版本内核(实测5.4)在启动时,
	如果 busybox linuxrc 启动, /etc/inittab 中的内容为 console::askfirst:-/bin/sh
	只需要 console 节点这一个,而不需要null 节点,更不需要其他的设备节点
第一类节点如何创建
  • 1.在/dev/中制作静态节点
  • 2.CONFIG_INITRAMFS_SOURCE 指定,内核创建,参考这里
如果有 initramfs , 可以用内核创建,具体创建什么,用CONFIG_INITRAMFS_SOURCE 指定,
第二类节点如何创建
  • 1.在/dev/中制作静态节点
  • 2.CONFIG_INITRAMFS_SOURCE 指定,内核创建
  • 3.动态设备管理机制创建,参考这里
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值