从udev调用rauc install无法正常工作

时间:2018-10-04 19:47:55

标签: udev

我目前使用rauc(0.1.1)更新由yocto制作的自定义发行版上的某些捆绑软件。该捆绑包来自USB设备。因此,我添加了udev规则,以便在将密钥插入设备后立即获得捆绑包。

我的钩子包含(版本A):

echo ${PATH} #/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
echo `fw_printenv slot` #slot=A
rauc_output=`rauc install ${bundle}`
echo ${PATH} #/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

但是在此版本中,如果通过udev启动,它将失败并显示starting fw_setenv failed: Failed to execute child process "fw_setenv" (No such file or directory)(如果我手动启动脚本,它将起作用)。

如果我使用此版本:

echo ${PATH} #/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
echo `fw_printenv slot` #slot=A
rauc_output=`PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin rauc install  ${bundle}`
echo ${PATH} #/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

它可以工作(手动和udev均可)

我真的不知道这里到底发生了什么。在安装之前和之后PATH都可以,但是...通过udev调用rauc时不行。此外,如果我恰好在fw_setenv之前调用rauc,就可以正确找到它。

在rauc中调用fw_setenv的代码是(4b6453e8678a48aa793c41871e3bfcfdbafce881):

sub = g_subprocess_new(G_SUBPROCESS_FLAGS_NONE, &error, UBOOT_FWSETENV_NAME,
               key, value, NULL);
if (!sub) {
    g_warning("starting fw_setenv failed: %s", error->message);
    g_clear_error(&error);
    goto out;
}

g_subprocess_newPATH中搜索。所以应该没关系。

有任何线索吗?

0 个答案:

没有答案