inst_boot 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. #!/bin/bash
  2. if [ "$(id -u)" != "0" ]; then
  3. printf "\n\033[31m\033[1mScript must be run as root !\033[22m\033[37m\n\n"
  4. exit 1
  5. fi
  6. usage() {
  7. printf "\n\033[33m"
  8. printf "USAGE: inst_boot dest board [emmc]\n"
  9. printf " \033[1mdest\033[22m destination, block device (/dev/sdX) or image name\n"
  10. printf " \033[1mboard\033[22m Odroid board type: \033[1mc2\033[22m or \033[1mxu4\033[22m\n"
  11. printf " \033[1memmc\033[22m Prepare EMMC card, only valid for Odroid-C2, default is SD\n"
  12. printf "\033[37m\n"
  13. }
  14. if [ "${1}" = "" ]; then
  15. printf "\n\033[31m\033[1mdestination must be specified\033[22m\033[37m\n"
  16. usage
  17. exit 1
  18. fi
  19. if [ ! "${2}" = "xu4" ] && [ ! "${2}" = "c2" ] && [ ! "${2}" = "c1" ]; then
  20. printf "\n\033[31m\033[1mOdroid board type must be \033[33mxu4\033[31m or \033[33mc2\033[31m\033[37m\n"
  21. usage
  22. exit 1
  23. fi
  24. sdcard=${1}
  25. emmc_install=""
  26. emmc_disp=""
  27. if [ "${2}" = "c2" ]; then
  28. part_start=65536 # RESERVE 32MB AT CARD START
  29. o_device="c2"
  30. src_dir="C2"
  31. if [ "${3}" = "emmc" ] || [ "${3}" = "EMMC" ]; then
  32. emmc_install="yes"
  33. emmc_disp="(EMMC card)"
  34. else
  35. emmc_install="no"
  36. emmc_disp="(SD card)"
  37. fi
  38. elif [ "${2}" = "c1" ]; then
  39. part_start=65536 # RESERVE 32MB AT CARD START
  40. o_device="c1"
  41. src_dir="C1"
  42. if [ "${3}" = "emmc" ] || [ "${3}" = "EMMC" ]; then
  43. emmc_install="yes"
  44. emmc_disp="(EMMC card)"
  45. else
  46. emmc_install="no"
  47. emmc_disp="(SD card)"
  48. fi
  49. else
  50. part_start=131072 # RESERVE 64MB AT CARD START
  51. o_device="xu4"
  52. src_dir="XU4"
  53. if [ -b $sdcard ]; then
  54. printf "\n\033[33m\033[1mWARNING:\033[22m Do not use EMMC in SD adapter to prepare the card!\033[37m\n"
  55. fi
  56. fi
  57. #====================================================================================
  58. echo ""
  59. printf "\033[36m\033[1m\n"
  60. echo "========================================"
  61. echo "= Installing boot files to Odroid card ="
  62. echo "========================================"
  63. printf "\033[22m\033[37m\n"
  64. printf "\033[33mPreparing for \033[1mOdroid-%s %s\033[22m\033[37m\n\n" "${o_device}" "${emmc_disp}"
  65. # =================
  66. # Check destination
  67. # =================
  68. if [ -b $sdcard ]; then
  69. # we are working with block device
  70. # Test if requested drive is removable
  71. ISREMOVABLE=`udevadm info -a -n ${sdcard} | grep -o "ATTR{removable}==\"1\""`
  72. if [ ! "${ISREMOVABLE}" = "ATTR{removable}==\"1\"" ] ; then
  73. printf "\033[31m\033[1m%s IS NOT REMOVABLE DRIVE !, Exiting.\033[37m\033[22m\n" "${sdcard}"
  74. exit 1
  75. fi
  76. _sdok=`fdisk -l $sdcard 2> /dev/null | grep Disk`
  77. if [ "$_sdok" = "" ]; then
  78. printf "\033[31m\033[1m%s NOT FOUND !, Exiting.\033[37m\033[22m\n" "${sdcard}"
  79. exit 1
  80. fi
  81. else
  82. printf "\033[31m\033[1m%s NOT FOUND !, Exiting.\033[37m\033[22m\n" "${sdcard}"
  83. exit 1
  84. fi
  85. printf "\033[31m\033[1mWARNING: Boot section of Odroid card \033[36m%s\033[31m WILL BE REPLACED !\033[22m\033[37m, Continue (y/N)? " "${sdcard}"
  86. read -n 1 ANSWER
  87. if [ ! "${ANSWER}" = "y" ] ; then
  88. echo "."
  89. echo "Canceled.."
  90. exit 0
  91. fi
  92. # ==========================================================
  93. # Partition and format sd/emmc card if not creating an image
  94. echo ""
  95. echo "Copying boot section..."
  96. if [ ${o_device} = "xu4" ]; then
  97. dd if=${src_dir}/initramfs/ramfs/multi/bl1.bin of=${sdcard} bs=512 seek=1 > /dev/null 2>&1
  98. if [ $? -ne 0 ]; then
  99. echo "ERROR installing bl1.bin."
  100. fi
  101. sync
  102. dd if=${src_dir}/initramfs/ramfs/multi/bl2.bin of=${sdcard} bs=512 seek=31 > /dev/null 2>&1
  103. if [ $? -ne 0 ]; then
  104. echo "ERROR installing bl2.bin."
  105. fi
  106. sync
  107. dd if=${src_dir}/initramfs/ramfs/multi/u-boot.bin of=${sdcard} bs=512 seek=63 > /dev/null 2>&1
  108. if [ $? -ne 0 ]; then
  109. echo "ERROR installing u-boot.bin."
  110. fi
  111. sync
  112. dd if=${src_dir}/initramfs/ramfs/multi/tzsw.bin of=${sdcard} bs=512 seek=2111 > /dev/null 2>&1
  113. if [ $? -ne 0 ]; then
  114. echo "ERROR installing tzsw.bin."
  115. fi
  116. sync
  117. elif [ ${o_device} = "c1" ]; then
  118. dd if=${src_dir}/initramfs/ramfs/multi/bl1.bin of=${sdcard} bs=1 count=442 > /dev/null 2>&1
  119. if [ $? -ne 0 ]; then
  120. echo "ERROR installing bl1.bin."
  121. fi
  122. dd if=${src_dir}/initramfs/ramfs/multi/bl1.bin of=${sdcard} bs=512 skip=1 seek=1 > /dev/null 2>&1
  123. if [ $? -ne 0 ]; then
  124. echo "ERROR installing bl1.bin."
  125. fi
  126. sync
  127. dd if=${src_dir}/initramfs/ramfs/multi/u-boot.bin of=${sdcard} bs=512 seek=64 > /dev/null 2>&1
  128. if [ $? -ne 0 ]; then
  129. echo "ERROR installing u-boot.bin."
  130. fi
  131. sync
  132. # u-boot env erase
  133. dd if=/dev/zero of=${sdcard} seek=1024 count=64 > /dev/null 2>&1
  134. if [ $? -ne 0 ]; then
  135. echo "ERROR erasing u-boot environment."
  136. fi
  137. else
  138. dd if=${src_dir}/initramfs/ramfs/multi/bl1.bin of=${sdcard} bs=1 count=442 > /dev/null 2>&1
  139. if [ $? -ne 0 ]; then
  140. echo "ERROR installing bl1.bin."
  141. fi
  142. dd if=${src_dir}/initramfs/ramfs/multi/bl1.bin of=${sdcard} bs=512 skip=1 seek=1 > /dev/null 2>&1
  143. if [ $? -ne 0 ]; then
  144. echo "ERROR installing bl1.bin."
  145. fi
  146. sync
  147. dd if=${src_dir}/initramfs/ramfs/multi/u-boot.bin of=${sdcard} bs=512 seek=97 > /dev/null 2>&1
  148. if [ $? -ne 0 ]; then
  149. echo "ERROR installing u-boot.bin."
  150. fi
  151. sync
  152. # u-boot env erase
  153. dd if=/dev/zero of=${sdcard} seek=1440 count=64 > /dev/null 2>&1
  154. if [ $? -ne 0 ]; then
  155. echo "ERROR erasing u-boot environment."
  156. fi
  157. sync
  158. fi
  159. sync
  160. printf "\n\033[33mOK.\n\033[37m\n"
  161. exit 0