我打算使用 "setcap" 在 Yocto 镜像中包含的二进制文件上设置一些功能。但是,这里提到的解决方案出现了问题: Linux capabilities with yocto 。我已经检查过在 rootfs 创建目录中运行 "getcap" 命令来查看我的二进制文件:
getcap ${IMAGE_ROOTFS}/usr/bin/mybinary
这段文字的意思是“没有返回任何内容。在最终运行的sdcard镜像中也找不到这些功能。”
接下来,我尝试使用IMAGE_PREPROCESS_COMMAND方法。我将setcap命令封装在小的shell函数中,例如:
my_setcap_function() {
sudo setcap cap_ipc_owner+ep ${IMAGE_ROOTFS}/usr/bin/mybinary
}
并将函数名称附加到IMAGE_PREPROCESS_COMMAND。这在某种程度上有效,因为现在在{IMAGE_ROOTFS}目录中运行二进制文件时,getcap会显示正确的cap设置。但是,在最终运行的sdcard映像中仍然无法获得功能。
此外,如果我使用-o loop将rootfs ext4(用于创建最终sdcard映像)挂载到目录上,则看不到我的二进制文件中的功能。 对我来说,当使用mkfs.ext4创建ext4时,似乎功能会丢失。
我必须附加sudo以设置cap,否则它会抱怨说“无法设置CAP_SETFCAP有效能力:操作不允许”。尽管我的理解是IMAGE_PREPROCESS_COMMAND命令使用fakeroot运行,因此不需要sudo。
因此,总结我的问题:
1.如何在使用ext4 rootfs映像制作的sdcard映像上获取功能? 2.我想使用不需要使用“sudo”的方法。
我正在使用Yocto Krogoth,目前无法升级。
-o user_xattr
吗? - Nayfe