Linux
在 BusyBox 中創建和控制啟動腳本
我在 BusyBox 中編譯了一個自定義的 linux 核心。BusyBox
init
不支持執行級別。當核心在 BusyBox 中啟動時,它首先執行init
在/etc/inittab
. BusyBoxinit
沒有/etc/inittab
. 當沒有inittab
找到它時,它具有以下行為:::sysinit:/etc/init.d/rcS
這部分對我來說很清楚,但我想知道如何管理啟動網路、創建串列埠或啟動程序的守護
java
程序。我查看了駐留在其中的腳本,/etc/init.d/
但我不明白如何管理它們。我正在尋找一個很好的教程或解決方案來自己控制這些服務,而不需要像buildroot
. 我想了解這些腳本是如何工作的以及如何在其中創建設備/dev/
(現在我只有console
andttyAM0
)。
對於 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 $?