Linux

在 BusyBox 中創建和控制啟動腳本

  • January 3, 2020

我在 BusyBox 中編譯了一個自定義的 linux 核心。BusyBoxinit不支持執行級別。當核心在 BusyBox 中啟動時,它首先執行init/etc/inittab. BusyBoxinit沒有/etc/inittab. 當沒有inittab找到它時,它具有以下行為:

::sysinit:/etc/init.d/rcS

這部分對我來說很清楚,但我想知道如何管理啟動網路、創建串列埠或啟動程序的守護java程序。我查看了駐留在其中的腳本,/etc/init.d/但我不明白如何管理它們。我正在尋找一個很好的教程或解決方案來自己控制這些服務,而不需要像buildroot. 我想了解這些腳本是如何工作的以及如何在其中創建設備/dev/(現在我只有consoleand ttyAM0)。

對於 buildroot,您的所有腳本都必須放在$path_to_buildroot/output/target/etc/init.d建構映像之前。在我的情況下,這個目錄包含rcS幾個名為 S 的腳本

$$ 0-99 $$腳本名稱。因此,您可以創建自己的 start\stop 腳本。 rcS:

#!/bin/sh

# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

    # Ignore dangling symlinks (if any).
    [ ! -f "$i" ] && continue

    case "$i" in
   *.sh)
       # Source shell script for speed.
       (
       trap - INT QUIT TSTP
       set start
       . $i
       )
       ;;
   *)
       # No sh extension, so fork subprocess.
       $i start
       ;;
   esac
done

例如 S40network:

#!/bin/sh
#
# Start the network....
#

case "$1" in
 start)
   echo "Starting network..."
   /sbin/ifup -a
   ;;
 stop)
   echo -n "Stopping network..."
   /sbin/ifdown -a
   ;;
 restart|reload)
   "$0" stop
   "$0" start
   ;;
 *)
   echo $"Usage: $0 {start|stop|restart}"
   exit 1
esac

exit $?

引用自:https://unix.stackexchange.com/questions/59018