Commit | Line | Data |
---|---|---|
4e802319 | 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 () { | |
3f60fdb6 LM |
23 | echo "usage: $PROGNAME [-h] [-v]" |
24 | echo " -h: help message" | |
25 | echo " -v: version message" | |
26 | exit $@ | |
4e802319 | 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 () { | |
3f60fdb6 LM |
38 | echo -n "$@: " |
39 | $@ >&$TMPLOG && pass OK || { fail KO; cat $TMPLOG; ERR=yes; } | |
40 | rm -f $TMPLOG | |
41 | test ! "$TEST" = yes | |
4e802319 | 42 | } |
43 | ||
44 | # argument processing | |
45 | ||
46 | while [ $# -gt 0 ]; do | |
3f60fdb6 LM |
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 | |
4e802319 | 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 | |
3f60fdb6 LM |
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 | |
4e802319 | 70 | done |
71 | ||
72 | # create links to kernel and initrd | |
73 | for f in initrd.img vmlinuz; do | |
3f60fdb6 LM |
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 | |
4e802319 | 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 | |
3f60fdb6 | 104 | cat - << EOF > $PXELINUXCFG/default.template |
4e802319 | 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 | |
3f60fdb6 | 127 | check test -f $PXELINUXCFG/default.template |
4e802319 | 128 | |
129 | # create pxeboot configuration | |
130 | function pxeconfig () { | |
131 | ||
3f60fdb6 LM |
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 | |
4e802319 | 147 | } |
148 | ||
3f60fdb6 LM |
149 | tftpserver=$ETH1MASTER |
150 | ||
4e802319 | 151 | # standard boot for slave blades |
4e802319 | 152 | tarballs="root.tgz,slave.tgz" |
3f60fdb6 | 153 | check pxeconfig -a $tarballs -s $tftpserver default |
4e802319 | 154 | |
3f60fdb6 LM |
155 | # standard boot for acq blades |
156 | tarballs="root.tgz,slave.tgz,acq.tgz" | |
157 | check pxeconfig -a $tarballs -s $tftpserver acq | |
4e802319 | 158 | |
159 | # standard boot for rec blade | |
3f60fdb6 LM |
160 | tarballs="root.tgz,slave.tgz,acq.tgz,rec.tgz" |
161 | check pxeconfig -a $tarballs -s $tftpserver rec | |
4e802319 | 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 | ||
3f60fdb6 LM |
166 | rm -f $PXELINUXCFG/default.template |
167 | ||
4e802319 | 168 | # vim:set tabstop=4 expandtab shiftwidth=4: |