forked from beta-tester/RPi-PXE-Server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
p0-install
132 lines (98 loc) · 4.59 KB
/
p0-install
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
#!/bin/bash
########################################################################
if [[ -z "$script_dir" ]]
then
echo 'do not run this script directly !'
echo 'this script is part of run.sh'
exit -1
fi
########################################################################
########################################################################
BACKUP_FILE="${script_dir:?}/backup.tar.xz"
BACKUP_TRANSFORM=s/^/$(date +%Y-%m-%dT%H_%M_%S)-pxe-server\\//
do_backup() {
tar -ravf "${BACKUP_FILE:?}" --transform="${BACKUP_TRANSFORM:?}" -C / "${1:?}" &>/dev/null
}
########################################################################
do_backup boot/cmdline.txt
########################################################################
grep -q max_loop /boot/cmdline.txt &>/dev/null || {
echo -e "\e[32msetup cmdline.txt for more loop devices\e[0m";
sudo sed -i '1 s/$/ max_loop=64/' /boot/cmdline.txt;
}
########################################################################
grep -q net.ifnames /boot/cmdline.txt &>/dev/null || {
echo -e "\e[32msetup cmdline.txt for old style network interface names\e[0m";
sudo sed -i '1 s/$/ net.ifnames=0/' /boot/cmdline.txt;
}
########################################################################
echo -e "\e[32msync...\e[0m" && sudo sync \
&& echo -e "\e[32mupdate...\e[0m" && sudo apt update \
&& echo -e "\e[32mupgrade...\e[0m" && sudo apt full-upgrade -y \
&& echo -e "\e[32mautoremove...\e[0m" && sudo apt autoremove -y --purge \
&& echo -e "\e[32mautoclean...\e[0m" && sudo apt autoclean \
&& echo -e "\e[32msync...\e[0m" && sudo sync \
&& echo -e "\e[32mDone.\e[0m" \
&& sync \
;
########################################################################
echo -e "\e[32minstall uuid\e[0m";
sudo apt install -y --no-install-recommends uuid;
########################################################################
echo -e "\e[32minstall nfs-kernel-server for pxe\e[0m";
sudo apt install -y --no-install-recommends nfs-kernel-server;
sudo systemctl enable nfs-kernel-server.service;
sudo systemctl restart nfs-kernel-server.service;
########################################################################
echo -e "\e[32menable port mapping\e[0m";
sudo systemctl enable rpcbind.service;
sudo systemctl restart rpcbind.service;
########################################################################
echo -e "\e[32minstall dnsmasq for pxe\e[0m";
sudo apt install -y --no-install-recommends dnsmasq
sudo systemctl enable dnsmasq.service;
sudo systemctl restart dnsmasq.service;
########################################################################
echo -e "\e[32minstall samba\e[0m";
sudo apt install -y --no-install-recommends samba;
########################################################################
echo -e "\e[32minstall rsync\e[0m";
sudo apt install -y --no-install-recommends rsync;
########################################################################
echo -e "\e[32minstall syslinux-common for pxe\e[0m";
sudo apt install -y --no-install-recommends pxelinux syslinux-common syslinux-efi;
########################################################################
echo -e "\e[32minstall lighttpd\e[0m";
sudo apt install -y --no-install-recommends lighttpd;
grep -q mod_install_server /etc/lighttpd/lighttpd.conf &>/dev/null || {
do_backup etc/lighttpd/lighttpd.conf
cat << EOF | sudo tee -a /etc/lighttpd/lighttpd.conf &>/dev/null
########################################
## mod_install_server
dir-listing.activate = "enable"
dir-listing.external-css = ""
dir-listing.external-js = ""
dir-listing.set-footer = " <br />"
dir-listing.exclude = ( "[.]*\.url" )
EOF
}
do_backup var/www/html/index.lighttpd.html
sudo rm /var/www/html/index.lighttpd.html
########################################################################
echo -e "\e[32minstall vblade\e[0m";
sudo apt install -y --no-install-recommends vblade vblade-persist;
########################################################################
$(dpkg --get-selections | grep -q -E "^(ntp|ntpd)[[:blank:]]*install$") || {
echo -e "\e[32minstall chrony as ntp client and ntp server\e[0m";
sudo apt install -y --no-install-recommends chrony;
sudo systemctl enable chronyd.service;
sudo systemctl restart chronyd.service;
}
########################################################################
## optional
echo -e "\e[32minstall tools to create initrd images\e[0m";
sudo apt install -y --no-install-recommends squashfs-tools initramfs-tools xz-utils;
########################################################################
sync
echo -e "\e[32mDone.\e[0m";
echo -e "\e[1;31mPlease reboot\e[0m";