[965dc18] | 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 |
|
---|