Openwrt啟動後的指令碼執行(二)
阿新 • • 發佈:2019-01-27
Openwrt啟動指令碼的執行分為兩個階段,
preinit完成系統的初始化,
rcS依次啟動了各個應用程式模組。
執行/etc/preinit指令碼之後
boot_hook_init preinit_essential
boot_hook_init preinit_main
boot_hook_init failsafe
boot_hook_init initramfs
boot_hook_init preinit_mount_root
for pi_source_file in /lib/preinit/*; do
. $pi_source_file
done
preinit執行的最後一個指令碼為99_10_run_init
exec env - PATH= iinitpath
pi_init_cmd為
pi_init_cmd=”/sbin/init”
因此開始執行busybox的init命令
busybox的init名執行inittab指令碼,該指令碼在/etc/inittab
[root@PandoraBox:/lib/functions]#cat /etc/inittab
::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K stop
ttyS0::askfirst:/bin/login
ttyS1::askfirst:/bin/login
[root@PandoraBox :/lib/functions]#
可以看到sysinit尾系統初始化執行的/etc/init.d/rcS S boot指令碼
shutdown為系統重啟或者關機執行的指令碼
tty*是使用者通過串列埠或者telnet登入是,執行/bin/login登入系統
執行前的提示為:
“Please press Enter to activate this console.”
啟動時執行的/etc/init.d/rcS S boot,執行後將會執行一系列的啟動指令碼,這些指令碼在/etc/rc.d/目錄下:
[root@PandoraBox:/etc/rc.d]#ls
K10mjpg-streamer S12rpcd S60dnsmasq
K50dropbear S19firewall S60samba
K85odhcpd S20network S61avahi-daemon
K89log S30set_kernel_timezone S70usb_printer
K90network S35odhcpd S90mjpg-streamer
K90xCloud S40fstab S90qos
K98boot S41sysntpd S90xCloud
K99umount S50cron S94shairport
S00sysfixtime S50dropbear S95done
S10boot S50qos_gargoyle S96led
S10system S50telnet S99xunlei
S11sysctl S50uhttpd
S12log S60dbus
[root@PandoraBox:/etc/rc.d]#
這些啟動指令碼來自/etc/init.d/中的指令碼,通過/etc/rc.common指令碼,將init.d中的指令碼連結到/etc/rc.d目錄下,並根據這些指令碼中的START和STOP的關鍵字,新增K