3 # ============================================================================
4 # Copyright (C) THALES. All rights reserved
5 # Author: Laurent Mazet
7 # ============================================================================
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}')
16 PXELINUXCFG
=$TFTP/pxelinux.cfg
17 TMPLOG
=/tmp
/$PROGNAME-$$.log
23 echo "usage: $PROGNAME [-h] [-v]"
24 echo " -h: help message"
25 echo " -v: version message"
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"; }
39 $@
>&$TMPLOG && pass OK ||
{ fail KO
; cat $TMPLOG; ERR
=yes; }
46 while [ $# -gt 0 ]; do
49 -v) echo "$PROGNAME: version $VER"; exit;;
50 *) echo "unknown argument ($1)"; exit 1;;
56 check dpkg
-l syslinux ||
exit 1
59 [ -d $TFTP ] && warn
"directory $TFTP already exist"
61 [ -d $PXELINUXCFG ] && warn
"directory $PXELINUXCFG already exist"
62 check mkdir
-p $PXELINUXCFG
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
72 # create links to kernel and initrd
73 for f
in initrd.img vmlinuz
; do
74 [ -f $TFTP/$f ] && check
rm -f $TFTP/$f
76 [ -f $file ] || warn
"file $file does not exist"
77 check
ln -s $file $TFTP/$f
80 # create pxelinux information message
81 cat - << EOF > $TFTP/pxelinux.txt
85 PXE boot for TRC6500 slave blades
87 check
test -f $TFTP/pxelinux.txt
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
101 check
test -f $TFTP/fr.kmp
103 # create standard pxe boot for slave blade
104 cat - << EOF > $PXELINUXCFG/default
111 MENU TITLE [[ PXE BOOT ]]
116 MENU LABEL ^Debian 7 (TRC6500)
119 APPEND noinitrd ramdisk_size=8192 boot=tftp fastboot tftpserver=@@tftpserver@@ tarballs=@@tarballs@@
122 MENU LABEL ^FreeDos 1.0
127 check
test -f $PXELINUXCFG/default
129 # convert IP address to hexadecimal code
130 function ip_dec_to_hex
() {
131 for i
in ${1//./ }; do
136 # create pxeboot configuration
137 function pxeconfig
() {
139 [ -f $PXELINUXCFG/default
] ||
return 1
141 while [ $# -gt 0 ]; do
143 -a) shift; tarballs
=$1;;
144 -s) shift; tftpserver
=$1;;
150 iphex
=$
(ip_dec_to_hex
$ip)
151 [ ${#iphex} -ge 1 -a ${#iphex} -le 8 ] ||
return 1
153 cat $PXELINUXCFG/default | \
154 sed -e "s/@@tftpserver@@/$tftpserver/" \
155 -e "s/@@tarballs@@/$tarballs/" \
156 > $PXELINUXCFG/$iphex
159 # standard boot for slave blades
160 subnetwork
=$
(echo $ETH0MASTER |
sed 's/\.[0-9]*$//')
161 tftpserver
=$ETH0MASTER
162 tarballs
="root.tgz,slave.tgz"
163 check pxeconfig
-a $tarballs -s $tftpserver $subnetwork
165 # second boot for slave blades
166 subnetwork
=$
(echo $ETH1MASTER |
sed 's/\.[0-9]*$//')
167 tftpserver
=$ETH1MASTER
168 tarballs
="root.tgz,slave.tgz"
169 check pxeconfig
-a $tarballs -s $tftpserver $subnetwork
171 # standard boot for rec blade
172 subnetwork
=$
(echo $ETH0MASTER |
sed 's/\.[0-9]*$/.80/')
173 tftpserver
=$ETH0MASTER
174 tarballs
="root.tgz,slave.tgz,rec.tgz"
175 check pxeconfig
-a $tarballs -s $tftpserver $subnetwork
177 # second boot for rec blade
178 subnetwork
=$
(echo $ETH1MASTER |
sed 's/\.[0-9]*$/.80/')
179 tftpserver
=$ETH1MASTER
180 tarballs
="root.tgz,slave.tgz,rec.tgz"
181 check pxeconfig
-a $tarballs -s $tftpserver $subnetwork
183 # check if balder image is present
184 [ -f $TFTP/balder10.imz
] || warn
"Don't forget to download FreeDoss image (balder10.imz) on http://www.finnix.org/Balder"
186 # vim:set tabstop=4 expandtab shiftwidth=4: