2012-05-25 44 views
0

我的linux操作系統在我的豹目標板與tms320dm368處理器。它只有內核和rfs的原板。目標板上沒有Linux發行版(Ubuntu,Fedora,紅帽等)。 我創建的腳本文件,創建腳本文件我複製它在init.d 自動啓動的應用程序在Linux中

  • 我給了命令chmod +x /etc/init.d/vcc_appvcc_app是我所創建的腳本的名稱)
  • #!/bin/sh 
    echo "my application is here" 
    ./helloworld # helloworld is our application 
    
    1. 然後我發出命令ln -s /etc/init.d/vcc_app /etc/rc.d/vcc_apprc.d是運行級目錄)

    但是,當我重新啓動板,我的應用程序不會自動執行。誰能幫我嗎?

  • +1

    既然你說'這是一個只有內核的原板':你有'sh'嗎? (對不起,我不知道'rfs'的含義) – ArjunShankar

    +0

    rfs表示根文件系統 – user1415119

    回答

    0

    你應該把你的腳本/etc/rcX.d/vcc_app,因爲你要執行,如果你想在初始化5運行的init級別變化X則腳本應放在:

    /etc/rc5.d/vcc_app 
    

    更多init級別的信息,check this link

    此外,在一些分佈你可以在/etc/rc.local/etc/rc.d/rc.local添加一個命令來啓動腳本中,檢查文件是否存在以及添加的命令。

    +0

    但是如果我將腳本文件vcc_app複製到/etc/rcx.d中,那麼就沒有必要運行ls -s/etc/init .d/vcc_app /etc/rc.d/vcc_app(rc.d是運行級別目錄)命令....因爲此命令用於在/etc/init.d和/etc/rc.d之間創建符號鏈接。 ... – user1415119

    +1

    @Skatox:我認爲沒有運行級目錄(rc1.d .... rc5.d)以及rc.local出現在板上。他/她擁有的是rc.d. 我認爲創建一個新的rc.local文件將是一個好主意。 – mujahid

    +0

    @ user1415119是的,你是對的。你創建了一個rc.local文件嗎? – Skatox

    0

    知道你在你的主板上實際上有什麼會很有趣 - 你聲稱你沒有發行版,但是你使用了一些(/etc/init.d),它只能在一種分發版中使用。

    所以假設你真的不使用分配,這意味着你沒有一個shell,你沒有一個init系統。

    如果你只需要運行一個應用程序,就不需要任何shell或者類似的東西 - 只需要將你的應用程序靜態鏈接到你的rootfs並作爲/ sbin/init,/ etc/init,/ bin/init 。見linux kernel main.c init_post()

    否則,如果您有多個應用程序,則需要一個init系統。 簡單的是uxlaunch,其他選項包括systemdbusybox init。 即使使用busybox init,您仍然不一定需要系統上的shell。

    市場上的幾款設備運行的是沒有外殼的Linux,其中包括許多電視機。

    +0

    任何人都可以建議如何使我們的應用程序靜態鏈接? – user1415119

    +0

    靜態鏈接表示您將「-static」添加到鏈接器的命令行。它會將所有庫添加到您的二進制文件中。您可以通過在二進制文件上運行ldd來輕鬆驗證它:它不會列出任何庫。當然,如果你正在交叉編譯,使用ldd的交叉版本。 –