init.d에 Linux 스크립트 파일(SetUpScript)을 설치하고 다음을 수행하여 각 rcX.d(래퍼 심볼릭 링크)에서 실행 수준을 가장 낮은 우선 순위로 설정합니다.
#creating symbolic links of SetUpScript
ln -s /etc/init.d/SetUpScript /etc/rc0.d/K01SetUpScript
ln -s /etc/init.d/SetUpScript /etc/rc1.d/K01SetUpScript
ln -s /etc/init.d/SetUpScript /etc/rc6.d/K01SetUpScript
ln -s /etc/init.d/SetUpScript /etc/rc2.d/S99SetUpScript
ln -s /etc/init.d/SetUpScript /etc/rc3.d/S99SetUpScript
ln -s /etc/init.d/SetUpScript /etc/rc4.d/S99SetUpScript
ln -s /etc/init.d/SetUpScript /etc/rc5.d/S99SetUpScript
하지만 문제는 내 시스템에서 인터넷을 사용할 수 없을 때는 매우 늦게 시작되지만 인터넷을 사용할 수 있을 때는 5~10초 내에 시작된다는 것입니다. 따라서 SetUpScript에 의존하는 모든 서비스는 15~20분 이내에 매우 늦게 시작됩니다. 그래서 제 질문은 인터넷을 사용할 수 없는 정상 시간에 어떻게 시작할 수 있느냐는 것입니다. 내 프로그램은 일부 하드웨어에 액세스하는 Setupscript를 통해 시작되므로 스크립트 런레벨을 변경하고 시스템이 인터넷을 사용할 수 있을 때처럼 5-10초 안에 시작하고 싶지 않습니다.
내 install.sh 파일은 다음과 같습니다.
#!/bin/sh
sh uninstall.sh
if [ ! -f SoundMaxQ10-1101Setup.tar.gz ]; then
echo "SoundMaxQ10-1101Setup.tar.gz doesn't exist"
return
fi
DIR=SoundMaxQ10-1101Setup
HOMEDIR=/home/ubuntu
PMFOLDER=/usr/lib/pm-utils/sleep.d
ETC=/etc/init.d
# copy entire setup
tar -xf SoundMaxQ10-1101Setup.tar.gz -C .
mv $DIR/SoundMaxQ10-1101 $HOMEDIR
mv $DIR/Setups $HOMEDIR
mv $DIR/SoundMaxStation $HOMEDIR
mv $DIR/StartGPIOread $PMFOLDER/99StartGPIOread
mv $DIR/SetUpScript $ETC
mv $DIR/libAAC.so /usr/lib
mv $DIR/libATC_PreProcessor.so /usr/lib
mv $DIR/libmp3enc.so /usr/lib
rm -rf SoundMaxQ10-1101Setup
#rm -rf SoundMaxQ10-1101Setup.tar.gz
#changing permissions of scripts & elfs
chmod +x $HOMEDIR/Setups/dhcp.sh $HOMEDIR/Setups/static.sh $HOMEDIR/Setups/GetDhcpStatus.sh
chmod +x $HOMEDIR/Setups/SoundMaxDaemon $HOMEDIR/Setups/SoundMaxTFT $HOMEDIR/Setups/GpioReadScript
chmod +x $HOMEDIR/Setups/GPIORead
chmod +x $PMFOLDER/99StartGPIOread
chmod +x $ETC/SetUpScript
chmod +x $HOMEDIR/SoundMaxQ10-1101/daemon
chmod +x $HOMEDIR/SoundMaxQ10-1101/TFT
chmod +x $HOMEDIR/SoundMaxQ10-1101/rtpp
#creating symbolic links of SetUpScript
ln -s $ETC/SetUpScript /etc/rc0.d/K01SetUpScript
ln -s $ETC/SetUpScript /etc/rc1.d/K01SetUpScript
ln -s $ETC/SetUpScript /etc/rc6.d/K01SetUpScript
ln -s $ETC/SetUpScript /etc/rc2.d/S99SetUpScript
ln -s $ETC/SetUpScript /etc/rc3.d/S99SetUpScript
ln -s $ETC/SetUpScript /etc/rc4.d/S99SetUpScript
ln -s $ETC/SetUpScript /etc/rc5.d/S99SetUpScript
ldconfig -n -v /usr/lib
Setscript 파일은 다음과 같습니다.
#!/bin/bash
PMFOLDER=/home/ubuntu/Setups
start()
{
#pm-suspend
if [ ! -d /sys/class/gpio/gpio200 ]; then
echo 200 > /sys/class/gpio/export
fi
echo out > /sys/class/gpio/gpio200/direction
echo 1 > /sys/class/gpio/gpio200/value
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 15472 -j ACCEPT
iptables -A INPUT -p tcp --dport 14334 -j ACCEPT
iptables -A INPUT -p tcp --dport 14041 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 20001 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --sport 8000 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
sudo cp /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
sudo rm -rf /home/ubuntu/*.pid
$PMFOLDER/StartGPIOread resume
/home/ubuntu/Setups/SoundMaxDaemon start
/home/ubuntu/Setups/SoundMaxTFT start
}
stop()
{
$PMFOLDER/StartGPIOread suspend
/home/ubuntu/Setups/SoundMaxDaemon stop
/home/ubuntu/Setups/SoundMaxTFT stop
}
case $1 in
start)
start
;;
stop)
stop
;;
*) exit;;
esac