Advertisement
Guest User

Untitled

a guest
Apr 4th, 2015
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.13 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. if [ -z "$STORAGE_MEDIA" ]; then
  4.     echo "No STORAGE_MEDIA defined!"
  5.     echo "Please run via with_storage or set STORAGE_MEDIA variable!"
  6.     exit 1;
  7. fi
  8.  
  9.  
  10. DEVICES=`fdisk -lu|grep '^/dev/.*FAT'|sed 's,^\([^ ]\+\) \+\(\*\?\) \+\([^ ]\+ \+\)\{2\}\([0-9]\+\) \+ [^ ]\+ \+\(.*\)$,\1 - \4 kB \5\t\2,'`
  11.  
  12. FS="$IFS"
  13. IFS='|'
  14.  
  15. if [ -z "$DEVICES" ]; then
  16.     echo "No FAT partitions found!"
  17.     exit
  18. fi
  19.  
  20. choice=''
  21. while [ -z "$choice" ]; do
  22.     num=1
  23.     echo -e "\nAvailable partitions to install LEAF:"
  24.     for i in $DEVICES; do
  25.     echo "$num) $i"
  26.     num=$(($num + 1))
  27.     done
  28.     echo -en "\nSelect partition: "
  29.     read choice
  30.     choice=$(echo "$choice" | sed 's,[^0-9],,g')
  31.     if [ -n "$choice" ] && [ "$(($choice>0 && $choice<$num))" -eq 0 ]; then
  32.     echo "Wrong value selected!"
  33.     choice=""
  34.     fi
  35. done
  36.  
  37. IFS="$FS"
  38.  
  39. LINE=$(echo "$DEVICES" | sed -n -e $choice'{p;q}')
  40. DEVICE=$(echo "$LINE"|awk '{print $1}')
  41. ACTIVE=$(echo "$LINE"|awk '{print $6}')
  42. MDEVICE=$(echo "$DEVICE"|sed 's,[0-9]\+,,')
  43. DEVNUM=$(echo "$DEVICE"|sed 's,.*\([0-9]\+\),\1,')
  44.  
  45. # check for primary partition - from 1 to 4
  46. if [ "$(($DEVNUM>0 && $DEVNUM<$5))" -eq 0 ]; then
  47.     echo "You tried to install on non-primary partition!!! Exitting..."
  48.     sleep 1
  49.     exit 1
  50. fi
  51.  
  52. # check mounts
  53. if [ -n "`mount|grep "$DEVICE "`" ]; then
  54.     echo "Partition is already mounted!!! Exitting..."
  55.     sleep 1
  56.     exit 1
  57. fi
  58.  
  59. echo -e "\nSyslinux will be installed to $DEVICE, and MBR code on $MDEVICE will be updated. "
  60. echo -n "Are you sure (y/N)? "
  61. read choice
  62.  
  63. if [ "$choice" != "y" ] && [ "$choice" != "Y" ]; then
  64.     echo "Cancelling operation..."
  65.     sleep 1
  66.     exit 1
  67. fi
  68.  
  69. echo -n "Copy all files to storage? (y/N)? "
  70. read choice
  71. if [ "$choice" = "y" ] || [ "$choice" = "Y" ]; then
  72.     echo -n "Mounting sorage... "
  73.     mkdir -p /tmp/mpoint
  74.     mount $DEVICE /tmp/mpoint
  75.     if [ $? -ne 0 ]; then
  76.     echo "Failed! Exitting..."
  77.     sleep 1
  78.     exit 1
  79.     fi
  80.     echo -n "Ok. Copying files... "
  81.     cp -p $STORAGE_MEDIA/* /tmp/mpoint
  82.     if [ $? -ne 0 ]; then
  83.     echo "Failed! Exitting..."
  84.     umount /tmp/mpoint
  85.     sleep 1
  86.     exit 1
  87.     fi
  88.     if [ -d $STORAGE_MEDIA/isolinux ]; then
  89.     mkdir -p /tmp/mpoint/syslinux
  90.     cp -p $STORAGE_MEDIA/isolinux/* /tmp/mpoint/syslinux
  91.     mv /tmp/mpoint/syslinux/isolinux.dpy /tmp/mpoint/syslinux/syslinux.dpy
  92.     mv /tmp/mpoint/syslinux/isolinux.cfg /tmp/mpoint/syslinux/syslinux.cfg
  93.     rm /tmp/mpoint/syslinux/isolinux.*
  94.     fi
  95.     sed -i 's,PKGPATH=[^ ]\+,PKGPATH=/dev/sda'"$DEVNUM"',' /tmp/mpoint/syslinux/syslinux.cfg /tmp/mpoint/leaf.cfg
  96.     sed -i 's,LEAFCFG=[^ ]\+,PKGPATH=/dev/sda'"$DEVNUM"',' /tmp/mpoint/syslinux/syslinux.cfg
  97.     umount /tmp/mpoint
  98.     echo -n "Ok. "
  99. fi
  100.  
  101.  
  102. echo -n "Updating MBR... "
  103. # write MBR
  104. dd if=/usr/share/syslinux/mbr.bin of=$MDEVICE bs=440 count=1
  105. if [ $? -ne 0 ]; then
  106.     echo "Failed! Exitting..."
  107.     sleep 1
  108.     exit 1
  109. fi
  110.  
  111. echo -n "Ok. Installing syslinux... "
  112. syslinux -s $DEVICE
  113. if [ $? -ne 0 ]; then
  114.     echo "Failed! Exitting..."
  115.     sleep 1
  116.     exit 1
  117. fi
  118.  
  119. echo "Ok."
  120. if [ -z "$ACTIVE" ]; then
  121.     echo "Please, set partition $DEVICE active via fdisk to boot LEAF!"
  122. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement