Magellan Linux

Contents of /trunk/initscripts/busybox/sbin/rc-config

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1410 - (show annotations) (download)
Mon Jun 27 12:05:52 2011 UTC (12 years, 10 months ago) by niro
File size: 4294 byte(s)
-fixed runlevel 6 handling
1 #!/bin/bash
2 # $Header: /home/cvsd/magellan-cvs/magellan-src/busybox-initscripts/sbin/rc-config,v 1.3 2008-06-19 12:37:36 niro Exp $
3
4 RC_INIT_BASE=${MROOT}/etc/init.d
5 RC_EXCLUDE="rc functions template splash-functions udev mdev"
6
7 VERSION=0.3
8
9 get_run_levels()
10 {
11 local SCRIPT
12 local ALL_LEVELS
13
14 SCRIPT=${RC_INIT_BASE}/$1
15 ALL_LEVELS=$(grep -i "#%rlevels:" ${SCRIPT} | sed -e 's/#%rlevels://g')
16
17 echo ${ALL_LEVELS}
18
19 return 0
20 }
21
22
23 get_needs()
24 {
25 local SCRIPT
26 local ALL_LEVELS
27
28 SCRIPT=${RC_INIT_BASE}/$1
29 ALL_LEVELS=$(grep -i "#%needs:" ${SCRIPT} | sed -e 's/#%needs://g')
30
31 echo ${ALL_LEVELS}
32
33 return 0
34 }
35
36 get_before()
37 {
38 local SCRIPT
39 local ALL_LEVELS
40
41 SCRIPT=${RC_INIT_BASE}/$1
42 ALL_LEVELS=$(grep -i "#%before:" ${SCRIPT} | sed -e 's/#%before://g')
43
44 echo ${ALL_LEVELS}
45
46 return 0
47 }
48
49 get_after()
50 {
51 local SCRIPT
52 local ALL_LEVELS
53
54 SCRIPT=${RC_INIT_BASE}/$1
55 ALL_LEVELS=$(grep -i "#%after:" ${SCRIPT} | sed -e 's/#%after://g')
56
57 echo ${ALL_LEVELS}
58
59 return 0
60 }
61
62 get_start()
63 {
64 local SCRIPT
65 local ALL_LEVELS
66
67 SCRIPT=${RC_INIT_BASE}/$1
68 ALL_LEVELS=$(grep -i "#%start:" ${SCRIPT} | sed -e 's/#%start://g')
69
70 echo ${ALL_LEVELS}
71
72 return 0
73 }
74
75 get_stop()
76 {
77 local SCRIPT
78 local ALL_LEVELS
79
80 SCRIPT=${RC_INIT_BASE}/$1
81 ALL_LEVELS=$(grep -i "#%stop:" ${SCRIPT} | sed -e 's/#%stop://g')
82
83 echo ${ALL_LEVELS}
84
85 return 0
86 }
87
88
89
90 rc_service_add()
91 {
92 RC_SERVICE=$1
93 RC_START=$(get_start ${RC_SERVICE})
94 RC_STOP=$(get_stop ${RC_SERVICE})
95
96 echo "Adding ${RC_SERVICE} to:"
97 for i in $(get_run_levels ${RC_SERVICE})
98 do
99 case ${i} in
100 # ignore these runlevels:
101 [1245]:[sk]) continue ;;
102
103 # start
104 ?:s)
105 [[ ${i} = 7:s ]] && i="sysinit:s"
106 [[ ${i} = 3:s ]] && i="boot:s"
107 [[ ${i} = 0:s ]] && i="shutdown:s"
108 [[ ${i} = 6:s ]] && i="shutdown:s"
109 echo -e "\t\t[rc${i/:s/}.d -> S${RC_START}]"
110 ln -snf ../init.d/${RC_SERVICE} \
111 ${MROOT}/etc/rc.d/rc${i/:s/}.d/S${RC_START}${RC_SERVICE}
112 ;;
113 # stop
114 ?:k)
115 [[ ${i} = 7:k ]] && i="sysinit:k"
116 [[ ${i} = 3:k ]] && i="boot:k"
117 [[ ${i} = 0:k ]] && i="shutdown:k"
118 [[ ${i} = 6:k ]] && i="shutdown:k"
119 echo -e "\t\t[rc${i/:k/}.d -> K${RC_STOP}]"
120 ln -snf ../init.d/${RC_SERVICE} \
121 ${MROOT}/etc/rc.d/rc${i/:k/}.d/K${RC_STOP}${RC_SERVICE}
122 ;;
123 *)
124 echo "error"
125 exit 1
126 ;;
127 esac
128 done
129 }
130
131 rc_service_del()
132 {
133 RC_SERVICE=$1
134
135 echo "Deleting ${RC_SERVICE} from all runlevels:"
136 for i in boot shutdown sysinit
137 do
138 for z in 00 01 02 03 04 05 06 07 08 09 $(seq 10 99)
139 do
140 if [ -L "${MROOT}/etc/rc.d/rc${i}.d/S${z}${RC_SERVICE}" ]
141 then
142 echo -e "\t\t[rc${i}.d <- S${z}]"
143 rm ${MROOT}/etc/rc.d/rc${i}.d/S${z}${RC_SERVICE}
144 fi
145
146 if [ -L "${MROOT}/etc/rc.d/rc${i}.d/K${z}${RC_SERVICE}" ]
147 then
148 echo -e "\t\t[rc${i}.d <- K${z}]"
149 rm ${MROOT}/etc/rc.d/rc${i}.d/K${z}${RC_SERVICE}
150 fi
151 done
152 done
153 }
154
155 rc_service_show()
156 {
157 RC_SERVICE=$1
158
159 local ALL_RUNLEVELS
160
161 # read'em (single)
162 for i in $(seq 0 7)
163 do
164 level=${i}
165 [[ ${i} = 7 ]] && level=sysinit
166 [[ ${i} = 3 ]] && level=boot
167 [[ ${i} = 0 ]] && level=shutdown
168 [[ ${i} = 6 ]] && level=shutdown
169
170 for script in ${MROOT}/etc/rc.d/rc${level}.d/*
171 do
172 x="$(basename ${script})"
173 [[ ${x/???/} = ${RC_SERVICE} ]] &&
174 ALL_RUNLEVELS[${i}]=${x/${RC_SERVICE}/}
175 done
176 done
177
178 # show them (single)
179 echo -n "${RC_SERVICE}: "
180 for i in $(seq 0 7)
181 do
182 [[ ! -z ${ALL_RUNLEVELS[${i}]} ]] &&
183 echo -n "[${i}:${ALL_RUNLEVELS[${i}]}] "
184 done
185 echo
186 }
187
188 check_not_excluded()
189 {
190 local SCRIPT
191 SCRIPT=$1
192
193 for i in ${RC_EXCLUDE}
194 do
195 [[ ${SCRIPT} = ${i} ]] && return 1
196 done
197
198 return 0
199 }
200
201
202 usage()
203 {
204 echo "Magellan RC Configurator v${VERSION} -- Niels Rogalla (niro@magellan-linux.de)"
205 echo -e "\nUsage: $(basename $0) [Option] [File] ..."
206 echo -e " add adds script to runlevel"
207 echo -e " del deletes script from runlevel"
208 echo -e " show shows current runlevel settings"
209 echo -e "\n"
210 }
211
212 case $1 in
213 add)
214 rc_service_add $2
215 ;;
216 del)
217 rc_service_del $2
218 ;;
219 show)
220 # show all
221 if [[ -z $2 ]]
222 then
223 echo "Currently configured Services:"
224 for i in ${RC_INIT_BASE}/*
225 do
226 x=$(basename ${i})
227 if check_not_excluded ${x}
228 then
229 rc_service_show ${x}
230 fi
231 done
232 else
233 echo "Currently configured Services:"
234 rc_service_show $2
235 fi
236 ;;
237 *)
238 usage
239 ;;
240 esac