Subversion Repositories HelenOS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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.  
  75.