home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1999 November / VPR9911B.ISO / misc / src / trees / mkboot < prev    next >
Text File  |  1999-04-19  |  2KB  |  109 lines

  1. #!/bin/sh
  2.  
  3. if [ $(stat $0 | awk '/Device/ { print $2 }') = "0,0" ] ; then
  4.     echo "Don't run $0 over nfs!"
  5.     exit 1
  6. fi
  7.  
  8. PATH=/sbin:$PATH
  9. export PATH
  10.  
  11. BASEDIR=boot
  12. SIZE=1440
  13. SYSLINUXVER=1.43
  14.  
  15. MNTPOINT=/tmp/mkimage.mnt-$$
  16.  
  17. while [ -n "$1" ] ; do
  18.     case "$1" in
  19.     "local")
  20.         IMAGES="$IMAGES boot"
  21.         shift
  22.         ;;
  23.     "network")
  24.         IMAGES="$IMAGES bootnet"
  25.         shift;
  26.         ;;
  27.     -f)
  28.         FORCE=-f
  29.         shift;
  30.         ;;
  31.     *)
  32.         echo "Useage:" >&2
  33.         echo "$0 [-f] [network] [local]" >&2
  34.         exit
  35.         ;;
  36.     esac
  37. done
  38.  
  39. mkdir -p ../../../images
  40.  
  41. if [ -z "$IMAGES" ]; then
  42.     IMAGES="boot bootnet"
  43. fi
  44.  
  45. for TARGET in $IMAGES; do
  46.  
  47.     IMAGE=../../../images/$TARGET.img
  48.  
  49.     if [ "$FORCE" != "-f" ]; then
  50.     if [ -f $IMAGE ]; then
  51.         echo "$IMAGE already exists." >&2
  52.         continue;
  53.     fi
  54.     fi
  55.  
  56.     case "$TARGET" in
  57.     "boot")
  58.         ./mkinitrd local $FORCE
  59.         ;;
  60.     "bootnet")
  61.         ./mkinitrd network $FORCE
  62.         ;;
  63.     esac
  64.  
  65.     rm -f $IMAGE
  66.     dd if=/dev/zero of=$IMAGE bs=1k count=$SIZE 2> /dev/null
  67.  
  68.     for devnum in 0 1 2 3 4 5 6 7 8; do
  69.     if losetup /dev/loop$devnum $IMAGE 2>/dev/null ; then break; fi
  70.     done
  71.  
  72.     if [ "$devnum" = "8" ]; then
  73.     rm -rf $MNTPOINT $IMAGE
  74.     echo "All of your loopback devices are in use!" >&2
  75.     exit 1
  76.     fi
  77.     
  78.     LODEV=/dev/loop$devnum
  79.  
  80.     gunzip < syslinux-$SYSLINUXVER/img1440k.gz | dd of=$LODEV
  81.  
  82.     # install new syslinux
  83.     syslinux-$SYSLINUXVER/syslinux $LODEV
  84.  
  85.     mkdir $MNTPOINT
  86.     mount -t msdos $LODEV $MNTPOINT
  87.  
  88.     (cd $BASEDIR; find . -name CVS -prune -o -print | cpio -pv $MNTPOINT)
  89.     
  90.     case "$TARGET" in
  91.     "boot")
  92.         cp initrd-local.img $MNTPOINT/initrd.img
  93.             cat $BASEDIR/syslinux.cfg | sed 's/initrd.img/initrd.img local/' >\
  94.                 $MNTPOINT/syslinux.cfg
  95.         ;;
  96.     "bootnet")
  97.         cp initrd-network.img $MNTPOINT/initrd.img
  98.             cat $BASEDIR/syslinux.cfg | sed 's/initrd.img/initrd.img network/' >\
  99.                 $MNTPOINT/syslinux.cfg
  100.         ;;
  101.     esac
  102.  
  103.     df $MNTPOINT
  104.     umount $MNTPOINT
  105.     losetup -d $LODEV
  106.     
  107.     rm -rf $MNTPOINT 
  108. done
  109.