summaryrefslogblamecommitdiffstats
path: root/data/install_server.sh
blob: dc0e30bc8b1bf5f983525d74bd764d34e36a670d (plain) (tree)
1
2
3
4
5
6
7
8
9

         





                                           
                                                                      








                                                   






















































                                                                                                        


                               












































                                                                                               






                                                     



                                
                                     
 
       

                                 
                               








                                    
      

                                                                                            
 





                                                                 
                                                        

                 
                                                            







                                                      
#!/bin/sh

if [ $# -lt 1 ]; then
	echo "Usage: $0 <this server's ip>"
	exit 1
fi
SERVER_IP="$1"

TOOLS="git squashfs-tools rsync lighttpd tftpd gcc binutils make nasm"

for tool in $TOOLS; do
	echo " ###### Installiere $tool ##########"
	apt-get install -y $tool
done

# lighttpd konfigurieren
# konfig: www-root = /srv/openslx/www

# damit es keinen Ärger wg. noch nicht vorhandenem docroot gibt
echo "Konfiguriere lighttpd ..."
echo "Stoppe installierten lighttpd ..."
/etc/init.d/lighttpd stop
ERR=$?
if [ "$ERR" -gt 0 ]; then
	echo "Konnte lighttpd nicht anhalten - Abbruch!"
	exit 1
fi

# lighttpd-Konfiguration patchen

echo "Passe lighttpd-Konfiguration an ..."
cp -p /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
ERR=$?
if [ "$ERR" -gt 0 ]; then
        echo "Konnte alte lighttpd-Konfiguration nicht sichern - Abbruch!"
        exit 1
fi

cat /etc/lighttpd/lighttpd.conf|sed 's/\/var\/www/\/srv\/openslx\/www/g'>/etc/lighttpd/lighttpd.conf.tmp
ERR=$?
if [ "$ERR" -gt 0 ]; then
        echo "Konnte lighttpd-Konfiguration nicht patchen - Abbruch!"
        exit 1
fi

mv  /etc/lighttpd/lighttpd.conf.tmp  /etc/lighttpd/lighttpd.conf
ERR=$?
if [ "$ERR" -gt 0 ]; then
        echo "Konnte neue lighttpd-Konfiguration nicht speichern - Abbruch!"
        exit 1
fi

# neues docroot (/srv/openslx/www) prüfen und ggf. erzeugen - ggf. altes docroot löschen?
echo "Prüfe docroot für lighttpd (/srv/openslx/www) ..."
if [ ! -d /srv/openslx/www ] ; then
	echo "Erzeuge neues docroot für lighttpd (/srv/openslx/www) ..."
	mkdir -p  /srv/openslx/www
	ERR=$?
	if [ "$ERR" -gt 0 ]; then
        	echo "Konnte kein lighttpd-docroot-Verzeichnis erstellen - Abbruch!"
	        exit 1
	fi
fi

# ... und lighttpd wieder hochziehen:
echo "Starte installierten lighttpd ..."
/etc/init.d/lighttpd start
ERR=$?
if [ "$ERR" -gt 0 ]; then
        echo "Konnte lighttpd nicht starten - Abbruch!"
        exit 1
fi

# tftpd konfigurieren
# tftp root = /srv/openslx/tftp

echo "Konfiguriere tftpd ..."
# neues docroot (/srv/openslx/tftp) prüfen und ggf. erzeugen - ggf. altes docroot löschen?
echo "Prüfe docroot für tftpd (/srv/openslx/tftp) ..."
if [ ! -d /srv/openslx/tftp ] ; then
        echo "Erzeuge neues docroot für tftpf (/srv/openslx/tftp) ..."
        mkdir -p  /srv/openslx/tftp
        ERR=$?
        if [ "$ERR" -gt 0 ]; then
                echo "Konnte kein tftpd-docroot-Verzeichnis erstellen - Abbruch!"
                exit 1
        fi
fi

echo "Halte xinetd an ..."
# Erstmal xinetd (kam mit tftpd) anhalten
/etc/init.d/xinetd stop		# besser wäre zB service xinetd stop, aber wg. Kompatibilität
ERR=$?
if [ "$ERR" -gt 0 ]; then
        echo "Konnte xinetd nicht anhalten - Abbruch!"
        exit 1
fi

# tftpd-Konfiguration einschreiben
cat>/etc/xinetd.d/tftp<<HEREEND		# 
service tftp
{
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = /srv/openslx/tftp
disable         = no
}
HEREEND

echo "starte xinetd ..."
/etc/init.d/xinetd start
ERR=$?
if [ "$ERR" -gt 0 ]; then
        echo "Konnte xinetd nicht starten - Abbruch!"
        exit 1
fi

echo " ##### Klone das mltk repository ########"

mkdir -p /opt/openslx
cd /opt/openslx

git clone git://git.openslx.org/openslx-ng/tm-scripts

echo " ##### Setup iPXE #######"

mkdir -p /opt/ipxe
cd /opt/ipxe
git clone git://git.ipxe.org/ipxe.git

cd ipxe

# iPXE-Konfiguration einschreiben
cat > ipxelinux.ipxe << HEREEND
#!ipxe
set use-cached 1
dhcp net0
set net0.dhcp/next-server $SERVER_IP
set net0.dhcp/filename ipxelinux.0
imgload pxelinux.0
boot pxelinux.0
HEREEND

cd src
make bin/undionly.kkkpxe EMBED=../ipxelinux.ipxe,/opt/openslx/tm-scripts/data/pxe/pxelinux.0
cp /opt/openslx/tm-scripts/data/pxe/* /srv/openslx/tftp/

ERR=$?
if [ "$ERR" -gt 0 ]; then
        echo "Fehler beim kompilieren von ipxelinux.0 - Abbruch!"
        exit 1
fi

cp "bin/undionly.kkkpxe" "/srv/openslx/tftp/ipxelinux.0"

echo "....Fertig"
echo "mltk liegt nun im Verzeichnis /opt/openslx/tm-scripts"
echo "Extrahieren und Erstellen der Basissystemdaten:"
echo "./mltk remote stage31 -b"
echo "./mltk remote stage32 -b"
echo "Verpacken der Daten als initramfs:"
echo "./mltk server local stage31 -e stage31"
echo "./mltk server local stage32 -e stage32"
echo "."