gpt4 book ai didi

linux - 在 Yocto ext4 Image 中设置 Linux 功能

转载 作者:行者123 更新时间:2023-12-01 03:17:49 28 4
gpt4 key购买 nike

我打算使用“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 确实显示正确的大写设置。但是,我仍然没有在最终运行的 sdcard 镜像中获得这些功能。

此外,如果我使用 -o 循环将 rootfs ext4(用于创建最终的 sdcard 镜像)挂载到目录上,我将看不到二进制文件的功能。
在我看来,当使用 mkfs.ext4 创建 ext4 时,功能会以某种方式丢失。

我必须将 sudo 附加到 setcap,否则它会提示说“无法设置 CAP_SETFCAP 有效能力:不允许操作”。虽然我的理解是 IMAGE_PREPROCESS_COMMAND 命令是使用 fakeroot 运行的,所以不需要这个 sudo。

所以,总结一下我的问题:
  • 如何获得使用 ext4 rootfs 镜像制作的 sdcard 镜像的功能?
  • 我想使用一种不需要使用“sudo”的方式。

  • 我正在使用 Yocto Krogoth,目前无法升级。

    最佳答案

    您是否真的在最终图像或 yocto 构建的 rootfs 文件夹中对其进行了测试?

    我对 rootfs 文件夹中的文件运行 getcap,在那里没有设置。

    因为 yocto 使用伪库来拦截 chown、chmod 调用,在 sqlite db 中跟踪它们(使用 LD_PRELOAD 进行拦截)。

    所以这个属性不是为“rootfs”文件夹中的文件设置的,而是在创建 image/rootfs 时添加的。

    您可以在配方中使用 setcap,您必须添加

    DEPENDS = "libcap-native"

    在你的食谱里。

    关于linux - 在 Yocto ext4 Image 中设置 Linux 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50376706/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com