summaryrefslogtreecommitdiff
path: root/scripts/live-bottom/25configure_init
blob: 1ed4445a50f168e0da12e61add2330ff61e4aa9d (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
#!/bin/sh

#set -e

# initramfs-tools header

PREREQ=""

prereqs()
{
	echo "${PREREQ}"
}

case "${1}" in
	prereqs)
		prereqs
		exit 0
		;;
esac

# live-initramfs header

. /scripts/live-functions

log_begin_msg "Setting up init..."

# live-initramfs script

# Arrange for shells on virtual consoles, rather than login prompts

if [ -z "${NOAUTOLOGIN}" ]
then
	if [ -n "$USERNAME" ]
	then
		if [ ! -z "${LIVE_GETTY}" ]
		then
			if echo "${DEFCONSOLE}" | grep -qs ttyS
			then
				# AUTOMATIC SERIAL CONSOLE #
				PORT=$(echo "${DEFCONSOLE}" | \
					sed -e 's%,.*%%')
				SPEED=$(echo "${DEFCONSOLE}" | \
					sed -e 's%ttyS[0-9]\+,%%' \
					-e's%\([0-9]\+\).*%\1%')

				if ! ( sed -n -e'/^[^#]/p' /root/etc/inittab | grep -qs ":respawn:/sbin/getty.*${PORT}" )
				then
					IDs="A B C D E F G H I J K L M N O P Q R S T Q U V V X Y Z 0 1 2 3 4 5 6 7 8 9"

					for ID1 in $IDs
					do
						for ID2 in $IDs
						do
							ID="${ID1}${ID2}"

							if ! grep "^${ID}:" /etc/inittab
							then
								#make sure it is not already in use
								break 2
							fi
						done
					done

					echo "${ID}:2345:respawn:/sbin/live-getty -L ${PORT} ${SPEED} vt100" >> /root/etc/inittab
				fi
			fi

			if [ -f /root/etc/inittab ]
			then
				sed -i -e'/^[^#]/s%respawn:/sbin/getty%respawn:/sbin/live-getty%' /root/etc/inittab
			fi
		else
			if [ -f /root/etc/inittab ]
			then
				sed -i -e "s|^\([^:]*:[^:]*:[^:]*\):.*getty.*\<\(tty[0-9]*\).*$|\1:/bin/login -f $USERNAME </dev/\2 >/dev/\2 2>\&1|" /root/etc/inittab
			fi

			if [ "/root/etc/event.d/tty*" != "$(echo /root/etc/event.d/tty*)" ]
			then
				for f in /root/etc/event.d/tty*
				do
					sed -i -e "s|^respawn.*|respawn /bin/login -f $USERNAME </dev/$(basename $f) > /dev/$(basename $f) 2>\&1|" $f
				done

				if [ "${BUILD_SYSTEM}" = "Ubuntu" ]
				then
					for x in $(cat /proc/cmdline)
					do
						case $x in
							noninteractive)
								sed -i -e "s|^exec.*|exec /usr/bin/ubiquity noninteractive </dev/tty1 > /dev/tty1 2>\&1|" /root/etc/event.d/tty1
								rm -f /root/etc/rc?.d/[SK]??gdm
								rm -f /root/etc/rc?.d/[SK]??kdm
								;;
						esac
					done
				fi
			fi
		fi

		# Since we use autologin, lastlog doesn't make sense on the console.
		sed -i '/^[^#].*pam_lastlog\.so/s/^/# /' /root/etc/pam.d/login
	fi
fi

# do not try to remove files if using file-rc
if [ -d /etc/rc0.d ]
then
	# This has the nice side effect of the cron.{daily,weekly,monthly} jobs in
	# /etc/crontab remaining disabled, yet also not run by anacron
	if [ -x /root/etc/init.d/anacron ]
	then
		for f in /root/etc/rc?.d/S??anacron
		do
			mv ${f} ${f%/*}/K00anacron
		done
	fi

	# No point, really
	rm -f /root/etc/rc?.d/[SK]??postfix

	# Avoid clobbering the user's clock
	rm -f /root/etc/rc?.d/K??hwclock.sh
fi

# Disable readahead since it doesn't play well with squashfs + unionfs
# use chmod instead of mv to not trigger unionfs bugs.
if [ -e /root/sbin/readahead-list ]
then
	chmod -x /root/sbin/readahead-list
fi

log_end_msg

exit 0