在使用buildroot勾选组件时, 在生成文件系统时会增加组件的初始化脚本.
由于初始化脚本是在登陆前运行的, 某些初始化脚本过慢导致登陆时间过长, 影响体验
初始化运行流程
#!/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
添加循环条件, 指定后台运行
- 在
/etc/init.d/
中, 在想要后台运行的脚本文件名后添加-bg
后缀, 例如S50sshd-bg
- 修改
/etc/init.d/rcS
文件, 添加条件, 当有-bg后缀则转入后台运行
for i in /etc/init.d/S??* ;do
# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue
#!/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
# 新增代码段-------------------开始
*-bg)
(
echo $i "run it background"
trap - INT QUIT TSTP
. $i start &
)
;;
# 新增代码段-------------------终止
*.sh)
# Source shell script for speed.
(
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# No sh extension, so fork subprocess.
$i start
;;
esac
done
修改后的流程如下