Yocto理论篇 | Yocto Fakeroot与Pseudo

当允许执行通常为root用户保留的某些操作时,某些任务更容易实现(例如do_installdo_package_write*do_rootfsdo_image*)。例如,do_install 任务可以将已安装文件的UID和GID设置为任意值。

允许任务执行仅限root操作的一种方法是要求BitBake 以root身份运行。但是,这种方法很麻烦,并且存在安全问题。实际使用的方法是在“fake”root环境中运行受益于root权限的任务。在这个环境中,任务及其子进程认为它们是以root用户身份运行的,并且可以看到文件系统内部一致的视图。只要生成最终输出(例如包或镜像)不需要root权限,那么在fake root 环境中运行的一些早期步骤就不会导致问题。

在fake root环境中运行任务的能力被称为“fakeroot”,它是从BitBake关键字/变量标志派生出来的,该标志为任务请求一个fake root环境。

OpenEmbedded 构建系统中,实现fakeroot的程序称为Pseudo。Pseudo通过使用环境变量LD_PRELOAD重写系统调用,这会导致以root用户身份运行的错觉。为了跟踪“fake”文件所有权和由需要root 权限的操作产生的权限,Pseudo使用SQLite 3数据库。此数据库存储在${WORKDIR}/pseudo/files.db为个人recipes。将数据库存储在一个文件中,而不是在内存中,这样可以在任务和构建之间实现持久性,而这不是使用fakeroot实现的。

注意:如果您添加自己的任务来处理与fakeroot任务相同的文件或目录,那么该任务也需要在fakeroot下运行。否则,该任务将无法运行仅限root的操作,并且无法查看其他任务设置的fake 文件所有权和权限。您还需要添加对virtual/fakeroot-native:do_populate_sysroot的依赖,给出以下内容:

fakeroot do_mytask () {
       ...
}
do_mytask[depends] += "virtual/fakeroot-native:do_populate_sysroot"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值