【问题标题】:autolaunch of application in linux在linux中自动启动应用程序
【发布时间】:2012-05-25 12:17:46
【问题描述】:

我的 Leopard 目标板上有 linux 操作系统,带有 tms320dm368 处理器。它是一个只有内核和 rfs 的原始板。目标板上没有 linux 发行版(ubuntu、fedora、red hat 等)。 我创建了如下脚本文件

#!/bin/sh
echo "my application is here"
./helloworld  # helloworld is our application
  1. 创建脚本文件后,我将其复制到init.d
  2. 我给了命令chmod +x /etc/init.d/vcc_appvcc_app是我创建的脚本的名称)
  3. 然后我给了命令ln -s /etc/init.d/vcc_app /etc/rc.d/vcc_apprc.d是运行级目录)

但是当我重新启动板时,我的应用程序不会自动执行。谁能帮帮我?

【问题讨论】:

  • 既然你说'它是一个只有内核的原始板':你有'sh'吗? (抱歉,我不知道 'rfs' 是什么意思)

标签: linux embedded


【解决方案1】:

你应该把你的脚本放在 /etc/rcX.d/vcc_app 中,将 X 更改为你想要执行的初始化级别,如果你想在 init 5 上运行它,那么脚本应该放在:

/etc/rc5.d/vcc_app

更多初始化级别信息,check this link

此外,在某些发行版中,您可以添加一个命令以在 /etc/rc.local 处启动您的脚本 或/etc/rc.d/rc.local,检查哪些文件存在并添加命令。

【讨论】:

  • 但如果我将脚本文件 vcc_app 复制到 /etc/rcx.d 中,则无需运行 ln -s /etc/init.d/vcc_app /etc/rc.d/vcc_app ( rc.d 是运行级目录)命令....因为这个命令是在 /etc/init.d 和 /etc/rc.d 之间创建符号链接....
  • @Skatox :我认为董事会中没有运行级目录(rc1.d....rc5.d)以及 rc.local。他/她只有rc.d。我认为创建一个新的 rc.local 文件是个好主意。
  • @user1415119 是的,你是对的。您是否创建了 rc.local 文件?
【解决方案2】:

知道你在你的板上实际拥有什么会很有趣 - 你声称你没有分发,但你使用的东西(/etc/init.d)只有在某种分发中可用。

所以假设你真的不使用发行版,这意味着你没有 shell,你没有 init 系统。

如果您只需要运行单个应用程序,则不需要任何 shell 或类似的东西 - 只需将您的应用程序静态链接并将其作为 /sbin/init、/etc/init、/bin/init 放入您的 rootfs 中。见linux kernel main.c init_post()

否则,如果您有多个应用程序,则需要一个 init 系统。 一个简单的是uxlaunch,其他选项包括systemdbusybox init。 即使使用了busybox init,您的系统仍然不一定需要shell。

市场上的一些设备正在运行不带外壳的 Linux,包括许多电视机。

【讨论】:

  • 静态链接意味着您将-static添加到链接器的命令行中。然后它将所有库添加到您的二进制文件中。您可以通过在二进制文件上运行ldd 轻松验证这一点:它不会列出任何库。当然,如果你是交叉编译,使用ldd的交叉版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 2012-05-31
  • 1970-01-01
  • 2012-07-01
  • 2012-02-15
  • 1970-01-01
相关资源
最近更新 更多