[build] Add syslinux floppy image type .sdsk
[people/pravin/gpxe.git] / src / util / gensdsk
1 #!/bin/bash
2 #
3 # Generate a syslinux floppy that loads a gPXE image
4 #
5 # gensdsk foo.sdsk foo.lkrn
6 #
7 # the floppy image is the first argument
8 #   followed by list of .lkrn images
9 #
10
11 case $# in
12 0|1)
13         echo Usage: $0 foo.sdsk foo.lkrn ...
14         exit 1
15         ;;
16 esac
17 case "`mtools -V`" in
18 Mtools\ version\ 3.9.9*|Mtools\ version\ 3.9.1[0-9]*|Mtools\ version\ 4.*)
19         ;;
20 *)
21         echo Mtools version 3.9.9 or later is required
22         exit 1
23         ;;
24 esac
25 img=$1
26 shift
27 dir=bin/sdsk.dir
28 mkdir -p $dir
29
30 mformat -f 1440 -C -i $img ::
31 cfg=bin/syslinux.cfg
32 cat > $cfg <<EOF
33
34 # These default options can be changed in the gensdsk script
35 TIMEOUT 30
36 EOF
37 first=
38 for f
39 do
40         if [ ! -r $f ]
41         then
42                 echo $f does not exist, skipping 1>&2
43                 continue
44         fi
45         # shorten name for 8.3 filesystem
46         b=$(basename $f)
47         g=${b%.lkrn}
48         g=${g//[^a-z0-9]}
49         g=${g:0:8}.krn
50         case "$first" in
51         "")
52                 echo DEFAULT $g
53                 ;;
54         esac
55         first=$g
56         echo LABEL $b
57         echo "" KERNEL $g
58         mcopy -m -i $img $f ::$g
59 done >> $cfg
60 mcopy -i $img $cfg ::syslinux.cfg
61 if ! syslinux $img
62 then
63         exit 1
64 fi
65
66 rm -fr $dir