1 | #!/bin/bash
|
---|
2 |
|
---|
3 | # Download SILO and patch it so that it can be used to create a bootable CD
|
---|
4 | # for the Serengeti machine
|
---|
5 | # by Pavel Rimsky <rimskyp@seznam.cz>
|
---|
6 | # portions by Martin Decky <martin@decky.cz>
|
---|
7 | #
|
---|
8 | # GPL'ed, copyleft
|
---|
9 | #
|
---|
10 |
|
---|
11 | # stuff to be downloaded
|
---|
12 | SILO_DOWNLOAD_FILE='silo-loaders-1.4.11.tar.gz'
|
---|
13 | SILO_DOWNLOAD_URL='http://silo.auxio.org/pub/silo/old/'$SILO_DOWNLOAD_FILE
|
---|
14 |
|
---|
15 | # check whether the last command failed, if so, write an error message and exit
|
---|
16 | check_error() {
|
---|
17 | if [ "$1" -ne "0" ]; then
|
---|
18 | echo
|
---|
19 | echo "Script failed: $2"
|
---|
20 | exit
|
---|
21 | fi
|
---|
22 | }
|
---|
23 |
|
---|
24 | # temporary files are to be stored in /tmp
|
---|
25 | # the resulting file in the current directory
|
---|
26 | WD=`pwd`
|
---|
27 | cd /tmp
|
---|
28 |
|
---|
29 | # download SILO from its official website
|
---|
30 | echo ">>> Downloading SILO"
|
---|
31 | wget $SILO_DOWNLOAD_URL
|
---|
32 | check_error $? "Error downloading SILO."
|
---|
33 |
|
---|
34 | # unpack the downloaded file
|
---|
35 | echo ">>> Unpacking tarball"
|
---|
36 | tar xvzf $SILO_DOWNLOAD_FILE
|
---|
37 | check_error $? "Error unpacking tarball."
|
---|
38 |
|
---|
39 | # CD to the unpacked directory
|
---|
40 | echo ">>> Changing to the unpacked SILO directory"
|
---|
41 | cd boot
|
---|
42 | check_error $? "Changing directory failed."
|
---|
43 |
|
---|
44 | # patch it - remove bytes 512 to 512 + 32 (counted from 0), which belong to
|
---|
45 | # the ELF header which is not recognized by the Serengeti firmware
|
---|
46 | echo ">>> Patching SILO"
|
---|
47 | (((xxd -p -l 512 isofs.b) && (xxd -p -s 544 isofs.b)) | xxd -r -p) \
|
---|
48 | > isofs.b.patched
|
---|
49 | check_error $? "Patching SILO failed"
|
---|
50 | mv isofs.b.patched isofs.b
|
---|
51 |
|
---|
52 | # get rid of files which are not needed for creating the bootable CD
|
---|
53 | echo ">>> Purging SILO directory"
|
---|
54 | for file in `ls`; do
|
---|
55 | if [ \( -f $file \) -a \( $file != "isofs.b" \) -a \( $file != "second.b" \) ];
|
---|
56 | then
|
---|
57 | rm -fr $file;
|
---|
58 | fi
|
---|
59 | done
|
---|
60 | check_error $? "Purging SILO directory failed"
|
---|
61 |
|
---|
62 | # create the gzipped tarball with patched SILO
|
---|
63 | echo ">>> Creating tarball with patched SILO"
|
---|
64 | tar cvzf silo.patched.tar.gz *.b
|
---|
65 | check_error $? "Creating tarball with patched SILO failed"
|
---|
66 |
|
---|
67 | # and move it to the directory where the user expects it to be
|
---|
68 | echo ">>> Moving the tarball with patched SILO to the current directory"
|
---|
69 | mv silo.patched.tar.gz $WD
|
---|
70 | check_error $? "Moving the tarball with patched SILO failed"
|
---|
71 |
|
---|
72 | # move back to the working directory from /tmp
|
---|
73 | cd $WD
|
---|
74 |
|
---|