adkinstall.rb532 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/bin/sh
  2. # installs a rootfs tar archive from OpenADK onto
  3. # a Compact Flash disk or NAND device
  4. # special script for routerboard rb532
  5. nandinstall=0
  6. cfinstall=0
  7. if [ -z $1 ];then
  8. printf "Please give your target device as first parameter [cf|nand]\n"
  9. exit 1
  10. fi
  11. if [ -z $2 ];then
  12. printf "Please give your root tar archive as second parameter\n"
  13. exit 1
  14. fi
  15. if [ $cfinstall -eq 1 ];then
  16. if [ -z $3 ];then
  17. printf "Please give your kernel as third parameter\n"
  18. exit 1
  19. fi
  20. fi
  21. case $1 in
  22. nand)
  23. nandinstall=1
  24. ;;
  25. cf)
  26. cfinstall=1
  27. ;;
  28. *)
  29. printf "Target device not known.\n"
  30. exit 1
  31. ;;
  32. esac
  33. if [ $cfinstall -eq 1 ];then
  34. # create empty partition table
  35. printf "Creating partition scheme\n"
  36. parted -s /dev/sda mklabel msdos
  37. sleep 2
  38. maxsize=$(env LC_ALL=C parted /dev/sda -s unit cyl print |awk '/^Disk/ { print $3 }'|sed -e 's/cyl//')
  39. rootsize=$(($maxsize-2))
  40. parted -s /dev/sda unit cyl mkpart primary ext2 0 1
  41. parted -s /dev/sda unit cyl mkpartfs primary ext2 1 $rootsize
  42. parted -s /dev/sda unit cyl mkpart primary fat32 $rootsize $maxsize
  43. parted -s /dev/sda set 1 boot on
  44. sfdisk --change-id /dev/sda 1 27 >/dev/null 2>&1
  45. sfdisk --change-id /dev/sda 3 88 >/dev/null 2>&1
  46. sleep 2
  47. sync
  48. printf "Installing kernel\n"
  49. dd if=$3 of=/dev/sda1 bs=2048 >/dev/null 2>&1
  50. sync
  51. mount -t ext2 /dev/sda2 /mnt
  52. fi
  53. if [ $nandinstall -eq 1 ];then
  54. printf "Preparing mountpoints\n"
  55. mount -t yaffs2 /dev/mtdblock1 /mnt
  56. rm -rf /mnt/* >/dev/null 2>&1
  57. mkdir /mnt/boot
  58. mount -t yaffs2 /dev/mtdblock0 /mnt/boot
  59. fi
  60. printf "Extracting install archive\n"
  61. tar -C /mnt -xzpf $2
  62. if [ $? -ne 0 ];then
  63. printf "Extracting of install archive failed"
  64. exit 1
  65. fi
  66. chmod 1777 /mnt/tmp
  67. chmod 4755 /mnt/bin/busybox
  68. sync
  69. if [ $nandinstall -eq 1 ];then
  70. umount /mnt/boot
  71. fi
  72. umount /mnt
  73. if [ $? -ne 0 ];then
  74. printf "Unmounting filesystem failed"
  75. exit 1
  76. else
  77. printf "Successfully installed.\n"
  78. exit 0
  79. fi