summaryrefslogtreecommitdiff
path: root/packages/initscripts/initscripts-slugos_1.0.bb
blob: ba1b97e0244264d129c00ed7b0005ec2ef824aa1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# SlugOS specific stuff for the init scripts.
#
# This is, in effect, an extended patch to fix various
# problems in the initscripts on SlugOS.  The problems
# mostly come down to the order the scripts are executed
# in.
include initscripts_${PV}.bb

RCONFLICTS = "initscripts"

# SlugOS uses the busybox makedevs, so until that dependency gets virtualized
# the below lines serve to remove the dependency on the full makedevs package:
DEPENDS = ""
RDEPENDS = ""

# All other standard definitions inherited from initscripts
# Except the PR which is hacked here.  The format used is
# a suffix
PR := "${PR}.17"

FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/${P}', '${FILE_DIRNAME}/initscripts-${PV}', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"

PACKAGES = "${PN}-dbg ${PN}"

SRC_URI += "file://alignment.sh"
SRC_URI += "file://domainname.sh"
SRC_URI += "file://devices.patch;patch=1"
SRC_URI += "file://bootclean.sh"
SRC_URI += "file://checkroot"

# Without this it is not possible to patch checkroot
S = "${WORKDIR}"

do_install_append() {
	# the image build command now installs this for slugos
	rm	${D}${sysconfdir}/device_table

	# Ugly - we need to get rid of the checkroot.sh
	# that was installed by initscript-1.0.bb; the new
	# rcS script will "source" files that end in .sh,
	# and that messes up our checkroot.sh script (due
	# to redirection issues.  We need to use only our
	# checkroot, without the ".sh" suffix.
	rm -f ${D}${sysconfdir}/init.d/checkroot.sh

	# slugos specific scripts
	install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d
	install -m 0755 ${WORKDIR}/domainname.sh ${D}${sysconfdir}/init.d
	install -m 0755 ${WORKDIR}/bootclean.sh ${D}${sysconfdir}/init.d
	install -m 0755 ${WORKDIR}/checkroot ${D}${sysconfdir}/init.d

	# Remove the do install links (this detects a change to the
	# initscripts .bb file - it will cause a build failure here.)
	# This is a copy of the ln -sf lines from the initscripts
	# do_install.
	rm	${D}${sysconfdir}/rc2.d/S99rmnologin
	rm	${D}${sysconfdir}/rc3.d/S99rmnologin
	rm	${D}${sysconfdir}/rc4.d/S99rmnologin
	rm	${D}${sysconfdir}/rc5.d/S99rmnologin
	rm	${D}${sysconfdir}/rc6.d/S20sendsigs
#	rm	${D}${sysconfdir}/rc6.d/S30urandom
	rm	${D}${sysconfdir}/rc6.d/S31umountnfs.sh
	rm	${D}${sysconfdir}/rc6.d/S40umountfs
	rm      ${D}${sysconfdir}/rcS.d/S30ramdisk
	rm	${D}${sysconfdir}/rc6.d/S90reboot
	rm	${D}${sysconfdir}/rc0.d/S20sendsigs
#	rm	${D}${sysconfdir}/rc0.d/S30urandom
	rm	${D}${sysconfdir}/rc0.d/S31umountnfs.sh
	rm	${D}${sysconfdir}/rc0.d/S40umountfs
	rm	${D}${sysconfdir}/rc0.d/S90halt
	rm	${D}${sysconfdir}/rcS.d/S02banner
	rm	${D}${sysconfdir}/rcS.d/S10checkroot.sh
#	rm	${D}${sysconfdir}/rcS.d/S30checkfs.sh
	rm	${D}${sysconfdir}/rcS.d/S35mountall.sh
	rm	${D}${sysconfdir}/rcS.d/S39hostname.sh
	rm	${D}${sysconfdir}/rcS.d/S45mountnfs.sh
	rm	${D}${sysconfdir}/rcS.d/S55bootmisc.sh
#	rm	${D}${sysconfdir}/rcS.d/S55urandom
	rm	${D}${sysconfdir}/rcS.d/S99finish.sh
	rm	${D}${sysconfdir}/rcS.d/S05devices
	# udev will run at S04 if installed
	rm	${D}${sysconfdir}/rcS.d/S03sysfs
	rm	${D}${sysconfdir}/rcS.d/S38devpts.sh
	rm -f	${D}${sysconfdir}/rcS.d/S06alignment
	rm 	${D}${sysconfdir}/rcS.d/S37populate-volatile.sh
	rm 	${D}${sysconfdir}/rc0.d/S25save-rtc.sh
	rm      ${D}${sysconfdir}/rc6.d/S25save-rtc.sh



	# Check the result
	find ${D}${sysconfdir}/rc?.d ! -type d -print | {
		status=0
		while read d
		do
			oenote "initscripts-slugos: unexpected link $d"
			status=1
		done
		test $status -eq 0 ||
			oefatal "initscripts-slugos: new links break do_install"
	}

	# Set the run-level links
	#
	# Startup (S) links - UNCHANGED
	#
	# Keep these in order of startup - S, then 1, 2-5, 0,6
	# according to the level in which the script starts (or stops) first.
	update-rc.d -r ${D} banner		start  2 S .
	update-rc.d -r ${D} sysfs.sh		start  3 S .
	# udev runs at S 04 .
	update-rc.d -r ${D} devices		start  5 S .
	update-rc.d -r ${D} alignment.sh	start  7 S .
	# busybox hwclock.sh (slugos-init) starts here (08)
	# slugos-init umountinitrd runs here (09)

	update-rc.d -r ${D} checkroot		start 10 S .
	# slugos buffer syslog starts here (11)
	# sysconfsetup runs at S 12
	# modutils.sh runs at S 20
	# checkfs.sh is currently disabled from S 30 (and won't work on SlugOS)
	# ramdisk is not used on SlugOS, would run at S 30
	update-rc.d -r ${D} mountall.sh		start 35 S .
	# bootclean must run after mountall but before populate-volatile
	update-rc.d -r ${D} bootclean.sh	start 36 S .
	# base-files populate-volatile.sh runs at S37
	update-rc.d -r ${D} devpts.sh		start 38 S .
	# slugos file syslog starts here (39)
	update-rc.d -r ${D} populate-volatile.sh	start 37 S .

	# set hostname and domainname before the network script works (by
	# entering them at level 40), networking may reset them.
	update-rc.d -r ${D} domainname.sh	start 40 S .
	update-rc.d -r ${D} hostname.sh		start 40 S .
	# network runs at S 40
	# slugos network syslog starts here (44)
	update-rc.d -r ${D} mountnfs.sh		start 45 S .

	update-rc.d -r ${D} bootmisc.sh		start 55 S .
	# urandom is currently disabled from S 55 (and won't work with tmpfs /var)

	# ipkg-cl configure runs at S 98
	update-rc.d -r ${D} finish.sh		start 99 S .

	#
	# User (2-5) links - UNCHANGED
	# rmnologin is the only thing added to user levels
	update-rc.d -r ${D} rmnologin		start 99 2 3 4 5 .

	#
	# Shutdown (0,6) links - !!!CHANGED!!!
	#
	# The problem here is that netbase installs K40networking but portmap
	# installs S32portmap.  One of these has to change!  The safe change
	# is to make the networking stop at S40, so all network related shutdown
	# must be in a K script or <S40.
	#
	# S20sendsigs is a disaster.  It needs to happen before the umounts
	# but after the portmapper (which it would otherwise kill).
	#
	# urandom would stop at (S)30

	# This is the special, correct, slugos umountnfs.sh (it looks in
	# the /proc/mounts information, not /etc/fstab)
	update-rc.d -r ${D} umountnfs.sh	start 31 0 6 .
	update-rc.d -r ${D} save-rtc.sh		start 25 0 6 .
	# portmap stops at 32
	# slugos network syslog stops here (39)
	# networking stops at 40 (nothing else does, believe me.)

	# busybox hwclock.sh (slugos-init) stops here (45)
	# slugos file syslog stops here (47)
	# slugos buffer syslog stops here (49)
	# udev stops here (55)
	# Remove any errant processes
	update-rc.d -r ${D} sendsigs		start 60 0 6 .

	# This is the special, correct, slugos umountfs, it will umount
	# any network file systems which failed to umount before.
	update-rc.d -r ${D} umountfs		start 70 0 6 .

	update-rc.d -r ${D} halt		start 90 0 .
	update-rc.d -r ${D} reboot		start 90 6 .
}