Advertisement
Guest User

Untitled

a guest
Jul 7th, 2011
575
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.93 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. EXPECTED_ARGS=2
  4. E_BADARGS=1
  5.  
  6. if [ $# -ne $EXPECTED_ARGS ]
  7. then
  8.   echo "usage:\n \t $0 file device"
  9.   echo " \t $0 file size (k)"
  10.   exit $E_BADARGS
  11. fi
  12.  
  13. NAME=$1
  14.  
  15. if [ -e "$NAME" ]; then
  16.     echo file $NAME already exists !
  17.     echo please remove it before.
  18.     exit 1
  19. fi
  20.  
  21. shift
  22.  
  23. if [ $1 -gt 0 2>/dev/null ]; then
  24. # number
  25.   SIZE=$1
  26. else
  27. # not a number
  28.   if [ -b $1 ]; then
  29.       SIZE=$(fdisk -l -u $1 | awk '/^Disk/{printf "%.0f", $5/1024 }')
  30.   else
  31.       echo "usage:\n \t $0 file device"
  32.       echo " \t $0 file size (k)"
  33.       exit 1
  34.   fi
  35. fi
  36.  
  37. echo creating $NAME image file of "$SIZE"k
  38.  
  39. dd if=/dev/zero of=$NAME bs=1k count=$SIZE &> /dev/null &
  40. DD=$!
  41.  
  42. while true; do
  43.     ps --pid $DD >& /dev/null;
  44.     if [[ $? -eq 0 ]]; then
  45.     ls -s --block-size=1K $NAME | awk -v n=$NAME -v s=$SIZE '{printf "\r%s %10dk %3.0f %% done...", n, $1, $1 /  s *100 }'
  46.     else
  47.     echo -e "\r$NAME Finsihed!                               "
  48.     break
  49.     fi
  50.     sleep 1
  51. done
  52.  
  53. LOOPDEV=$(losetup -f)
  54. echo Attaching $NAME on $LOOPDEV
  55. losetup $LOOPDEV $NAME
  56.  
  57. echo creating partition table and partition
  58. parted -s  $LOOPDEV mklabel msdos
  59. parted -s  $LOOPDEV mkpart primary fat32 50k 100%
  60.  
  61. UNIT=$(fdisk -u -l /dev/sdb | awk '/Units/{ print $9 }')
  62. SECTOR=$(fdisk -u -l $LOOPDEV | awk -v d=${LOOPDEV}p1 '$0 ~ d { print $2;}')
  63. OFFSET=$(expr $UNIT '*' $SECTOR)
  64.  
  65. echo Offset of partition is $OFFSET !
  66. LOOPPART=$(losetup -f)
  67.  
  68. echo Attaching partition on $LOOPPART at offset $OFFSET...
  69. losetup -o $OFFSET $LOOPPART $NAME
  70.  
  71. echo Formating partition on $LOOPPART
  72. mkfs.vfat -F 32 -n IMAGE_GRUB $LOOPPART
  73.  
  74. sleep 1
  75. losetup -d $LOOPPART
  76.  
  77. parted -s $LOOPDEV  set 1 boot on
  78. parted -s $LOOPDEV set 1 lba off
  79.  
  80. echo Mounting on /mnt and installing grub
  81. mount -o offset=$OFFSET $LOOPDEV /mnt/
  82. grub-install --disk-module="part_msdos biosdisk" --no-floppy --root-directory=/mnt/ $LOOPDEV
  83.  
  84. umount /mnt
  85. sleep 1
  86. losetup -d  $LOOPDEV
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement