如何在Intel Galileo的Yocto Linux中启动可执行的Linux二进制文件

时间:2015-06-01 07:48:47

标签: linux yocto intel-galileo

我正在尝试在Intel Galelio Board上实施LWM2M客户端(eclipse/wakaama · GitHub)。我已经实现了一个功能,在我的客户端(Galileo板)将重新启动一旦执行从服务器重新启动,但在重新启动时我的客户端应该自动重启,这是一个可执行的二进制文件。我在各种论坛上尝试了所有选项,但没有成功。我给了适当的权限,更新了rc.d并且它在运行级别3中可见,但我的二进制文件没有被执行。任何人都可以帮我这个吗?

我已尝试过此link

中的所有步骤

2 个答案:

答案 0 :(得分:1)

它必须从远处说出来。一些让它运作的想法:

  1. 您不应该直接链接您的可执行文件; /etc/init.d中的文件应该是使用正确选项调用可执行文件的脚本。

  2. 安装脚本后,尝试从命令行运行它以确保其正常工作。

  3. 选择在运行级别中运行的两个脚本之间的数字。因此,如果您的脚本包含数字1020,请提供您的脚本15。如果您在启动过程中看到20脚本运行,则可以确定您的脚本在此之前运行。

  4. 向脚本添加日志记录以检查它是否在某些时候失败。一个简单的

     echo "1" >> /tmp/l2m.log
    

    足以看出你的剧本有多远。

  5. -x添加到启动脚本的hashbang行,使其在执行前打印每个命令。

  6. 确保正确重定向可执行文件的输出,以便您可以实际看到任何错误。

答案 1 :(得分:1)

使用Systemd.Service我可以解决此问题。

基本上你制作'服务'(指定你要运行的程序的文本文件)并将它们放在'/ lib / systemd / system /'文件夹中

然后运行'systemctl enable myservice'以在启动时启用服务,如果进程终止,则有各种参数可以重新启动服务,或者在启动网络接口之前或之后启动服务。

向/ lib / systemd / system添加一个新的服务脚本 - 看看那里的脚本,一个很好的例子是iotkit-agent.service脚本。 所以你有了yourscript.service文件。 首先,刷新systemd,然后尝试启动新服务    systemctl daemon-reload    systemcrl启动yourscript.service

然后,您可以使用'systemctl status yourscript.service'查看它是否已启动并存活。

如果您希望它在启动时启动,则必须“启用”它    systemcrl启用yourscript.service
从/ etc / systemd / system /中的相关目录创建脚本的软链接 现在重新启动,看看它是否正常。

如果您的脚本调用需要设置环境变量的二进制文件,请确保将它们包含在脚本中,LD_LIBRARY_PATH是需要的常见变量: LD_LIBRARY_PATH = / lib目录:/ usr / lib中:在/ usr / local / lib目录 export LD_LIBRARY_PATH

您可以查看此link进行完整讨论&信息