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

source /sources/colors.sh
source /sources/spinner.sh

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

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/symfiles" ]; then
	printf "%b" "  ${GRN}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:$(ls -n "$(tty)" | cut -d" " -f3):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}Files and symlinks created.${RST}"
	touch /sources/symfiles
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