add a script to color log
[debian6500.git] / master / opt / cluster / bin / init_pxe_repository.sh
1 #!/bin/bash
2
3 # ============================================================================
4 # Copyright (C) THALES. All rights reserved
5 # Author: Laurent Mazet
6 # Date : 18/02/2014
7 # ============================================================================
8
9 # TODO
10 # *
11
12 PROGNAME=$(basename $0)
13 ETH0MASTER=$(ip add show dev eth0 |awk '$1=="inet" {sub(/\/.*/, ""); print $2; exit}')
14 ETH1MASTER=$(ip add show dev eth1 |awk '$1=="inet" {sub(/\/.*/, ""); print $2; exit}')
15 TFTP=/opt/tftp
16 PXELINUXCFG=$TFTP/pxelinux.cfg
17 TMPLOG=/tmp/$PROGNAME-$$.log
18 VER=1.0
19
20 # help function
21
22 function usage () {
23 echo "usage: $PROGNAME [-h] [-v]"
24 echo " -h: help message"
25 echo " -v: version message"
26 exit $@
27 }
28
29 # formating functions
30
31 function title () { echo -e "\033[0;1m$*\033[0;0m"; }
32 function pass () { echo -e "\033[1;32m$*\033[0;0m"; }
33 function warn () { echo -e "\033[1;33m$*\033[0;0m"; }
34 function fail () { echo -e "\033[1;31m$*\033[0;0m"; }
35 # check command
36
37 function check () {
38 echo -n "$@: "
39 $@ >&$TMPLOG && pass OK || { fail KO; cat $TMPLOG; ERR=yes; }
40 rm -f $TMPLOG
41 test ! "$TEST" = yes
42 }
43
44 # argument processing
45
46 while [ $# -gt 0 ]; do
47 case "$1" in
48 -h) usage 0;;
49 -v) echo "$PROGNAME: version $VER"; exit;;
50 *) echo "unknown argument ($1)"; exit 1;;
51 esac
52 shift
53 done
54
55 # checks
56 check dpkg -l syslinux || exit 1
57
58 # create repository
59 [ -d $TFTP ] && warn "directory $TFTP already exist"
60 check mkdir -p $TFTP
61 [ -d $PXELINUXCFG ] && warn "directory $PXELINUXCFG already exist"
62 check mkdir -p $PXELINUXCFG
63
64 # create links from syslinux files
65 for f in memdisk menu.c32 pxelinux.0; do
66 [ -f $TFTP/$f ] && check rm -f $TFTP/$f
67 file=/usr/lib/syslinux/$f
68 [ -f $file ] || warn "file $file does not exist"
69 check ln -s $file $TFTP/$f
70 done
71
72 # create links to kernel and initrd
73 for f in initrd.img vmlinuz; do
74 [ -f $TFTP/$f ] && check rm -f $TFTP/$f
75 file=/$f
76 [ -f $file ] || warn "file $file does not exist"
77 check ln -s $file $TFTP/$f
78 done
79
80 # create pxelinux information message
81 cat - << EOF > $TFTP/pxelinux.txt
82 Boot Menu
83 =========
84
85 PXE boot for TRC6500 slave blades
86 EOF
87 check test -f $TFTP/pxelinux.txt
88
89 # create french mapping
90 # xxd -ps -c 32 fr.kmp
91 cat - << EOF | xxd -r -p > $TFTP/fr.kmp
92 000102030405060708090a0b0c0d0e0f10111213141516171819171b1c1d1e1f
93 203125333435377c3930382b3b293a2140267b2227282d7d5f2f4d6d3c3d2f5c
94 325142434445464748494a4b4c3f4e4f504152535455565a5859575e2a24365d
95 2a7162636465666768696a6b6c2c6e6f706172737475767a7879773c233e7e7f
96 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f
97 a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf
98 c0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf
99 e0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
100 EOF
101 check test -f $TFTP/fr.kmp
102
103 # create standard pxe boot for slave blade
104 cat - << EOF > $PXELINUXCFG/default.template
105 PROMPT 2
106 TIMEOUT 30
107 UI /menu.c32
108
109 KBDMAP /fr.kmp
110
111 MENU TITLE [[ PXE BOOT ]]
112
113 DEFAULT debian
114
115 LABEL debian
116 MENU LABEL ^Debian 7 (TRC6500)
117 KERNEL /vmlinuz
118 INITRD /initrd.img
119 APPEND noinitrd ramdisk_size=8192 boot=tftp fastboot tftpserver=@@tftpserver@@ tarballs=@@tarballs@@
120
121 LABEL freedos
122 MENU LABEL ^FreeDos 1.0
123 KERNEL /memdisk
124 INITRD /balder10.imz
125 APPEND -
126 EOF
127 check test -f $PXELINUXCFG/default.template
128
129 # create pxeboot configuration
130 function pxeconfig () {
131
132 [ -f $PXELINUXCFG/default.template ] || return 1
133
134 while [ $# -gt 0 ]; do
135 case "$1" in
136 -a) shift; tarballs=$1;;
137 -s) shift; tftpserver=$1;;
138 *) pxecfg=$1;;
139 esac
140 shift
141 done
142
143 cat $PXELINUXCFG/default.template | \
144 sed -e "s/@@tftpserver@@/$tftpserver/" \
145 -e "s/@@tarballs@@/$tarballs/" \
146 > $PXELINUXCFG/$pxecfg
147 }
148
149 tftpserver=$ETH1MASTER
150
151 # standard boot for slave blades
152 tarballs="root.tgz,slave.tgz"
153 check pxeconfig -a $tarballs -s $tftpserver default
154
155 # standard boot for acq blades
156 tarballs="root.tgz,slave.tgz,acq.tgz"
157 check pxeconfig -a $tarballs -s $tftpserver acq
158
159 # standard boot for rec blade
160 tarballs="root.tgz,slave.tgz,acq.tgz,rec.tgz"
161 check pxeconfig -a $tarballs -s $tftpserver rec
162
163 # check if balder image is present
164 [ -f $TFTP/balder10.imz ] || warn "Don't forget to download FreeDoss image (balder10.imz) on http://www.finnix.org/Balder"
165
166 rm -f $PXELINUXCFG/default.template
167
168 # vim:set tabstop=4 expandtab shiftwidth=4: