aboutsummaryrefslogtreecommitdiffstats
path: root/insidechroot.sh
blob: 6982e4b2fe21345b942e5eb9e8fcdb23345c6d0d (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
#!/bin/bash

CHAPTER="$1"

source /sources/colors.sh
source /sources/functions.sh

printf "%b" "${CYN}SUCCESSFULLY ENTERED ${RED}CHROOT${RST}!\n"

if [ "${CHAPTER}" -eq 7 ]; then
	printf "%b" "${GRN}Creating directories...${RST}\n"
	if [ -f /sources/createdirs ]; then
		printf "%b" "${GRN}  Directories already created.${RST}\n"
	else
		mkdir -p /boot
		mkdir -p /home
		mkdir -p /mnt
		mkdir -p /opt
		mkdir -p /srv

		mkdir -p /etc/opt
		mkdir -p /etc/opt/sysconfig
		mkdir -p /lib/firmware
		mkdir -p /media/floppy
		mkdir -p /media/cdrom
		mkdir -p /usr/bin
		mkdir -p /usr/include
		mkdir -p /usr/lib
		mkdir -p /usr/sbin
		mkdir -p /usr/src
		mkdir -p /usr/local/bin
		mkdir -p /usr/local/include
		mkdir -p /usr/local/lib
		mkdir -p /usr/local/sbin
		mkdir -p /usr/local/src
		mkdir -p /usr/share/color
		mkdir -p /usr/share/dict
		mkdir -p /usr/share/doc
		mkdir -p /usr/share/info
		mkdir -p /usr/share/locale
		mkdir -p /usr/share/man
		mkdir -p /usr/share/man/man1
		mkdir -p /usr/share/man/man2
		mkdir -p /usr/share/man/man3
		mkdir -p /usr/share/man/man4
		mkdir -p /usr/share/man/man5
		mkdir -p /usr/share/man/man6
		mkdir -p /usr/share/man/man7
		mkdir -p /usr/share/man/man8
		mkdir -p /usr/share/misc
		mkdir -p /usr/share/terminfo
		mkdir -p /usr/share/zoneinfo
		mkdir -p /usr/local/share/color
		mkdir -p /usr/local/share/dict
		mkdir -p /usr/local/share/doc
		mkdir -p /usr/local/share/info
		mkdir -p /usr/local/share/locale
		mkdir -p /usr/local/share/man
		mkdir -p /usr/local/share/man/man1
		mkdir -p /usr/local/share/man/man2
		mkdir -p /usr/local/share/man/man3
		mkdir -p /usr/local/share/man/man4
		mkdir -p /usr/local/share/man/man5
		mkdir -p /usr/local/share/man/man6
		mkdir -p /usr/local/share/man/man7
		mkdir -p /usr/local/share/man/man8
		mkdir -p /usr/local/share/misc
		mkdir -p /usr/local/share/terminfo
		mkdir -p /usr/local/share/zoneinfo
		mkdir -p /var/cache
		mkdir -p /var/local
		mkdir -p /var/log
		mkdir -p /var/mail
		mkdir -p /var/opt
		mkdir -p /var/spool
		mkdir -p /var/lib/color
		mkdir -p /var/lib/misc
		mkdir -p /var/lib/locate

		ln -sf /run /var/run
		ln -sf /run/lock /var/lock

		install -d -m 0750 /root
		install -d -m 1777 /tmp /var/tmp

		printf "%b" "  ${GRN}Directories created${RST}\n"
		touch /sources/createdirs
	fi

	printf "%b" "${GRN}Creating essential files and symbolic links... ${RST}\n"
	if [ -f "/sources/essential" ]; then
		printf "%b" "  ${GRN}Essential files and symbolic links already created.${RST}\n"
	else
		ln -sf /proc/self/mounts /etc/mtab
		echo "127.0.0.1 localhost $(hostname)" > /etc/hosts

		cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/bin/false
uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF

		cat > /etc/group << "EOF"
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
input:x:24:
mail:x:34:
kvm:x:61:
uuidd:x:80:
wheel:x:97:
nogroup:x:99:
users:x:999:
EOF

		echo "tester:x:${TESTERUID}:101::/home/tester:/bin/bash" >> /etc/passwd
		echo "tester:x:101:" >> /etc/group
		install -o tester -d /home/tester

		touch /var/log/btmp
		touch /var/log/lastlog
		touch /var/log/faillog
		touch /var/log/tmp
		chgrp utmp /var/log/lastlog
		chmod 664  /var/log/lastlog
		chmod 600  /var/log/btmp

		echo -e "  ${GRN}Essential files and symlinks created.${RST}"
		touch /sources/essential
	fi

	cd /sources || exit 1

	# Chapter 7
	for package in libstdc++ gettext bison perl python texinfo util-linux; do
		source packageinstall.sh 7 $package
		retval=$?
		if [ "${retval}" -ne 0 ]; then
			exit 1
		fi
	done

	exit 7
else
	printf "%b" "Do Chapter 8, 9 and 10 stuff here.\n"
fi