inst_boot 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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" ]; 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. else
  39. part_start=131072 # RESERVE 64MB AT CARD START
  40. o_device="xu4"
  41. src_dir="XU4"
  42. if [ -b $sdcard ]; then
  43. printf "\n\033[33m\033[1mWARNING:\033[22m Do not use EMMC in SD adapter to prepare the card!\033[37m\n"
  44. fi
  45. fi
  46. #====================================================================================
  47. echo ""
  48. printf "\033[36m\033[1m\n"
  49. echo "========================================"
  50. echo "= Installing boot files to Odroid card ="
  51. echo "========================================"
  52. printf "\033[22m\033[37m\n"
  53. printf "\033[33mPreparing for \033[1mOdroid-%s %s\033[22m\033[37m\n\n" "${o_device}" "${emmc_disp}"
  54. # =================
  55. # Check destination
  56. # =================
  57. if [ -b $sdcard ]; then
  58. # we are working with block device
  59. # Test if requested drive is removable
  60. ISREMOVABLE=`udevadm info -a -n ${sdcard} | grep -o "ATTR{removable}==\"1\""`
  61. if [ ! "${ISREMOVABLE}" = "ATTR{removable}==\"1\"" ] ; then
  62. printf "\033[31m\033[1m%s IS NOT REMOVABLE DRIVE !, Exiting.\033[37m\033[22m\n" "${sdcard}"
  63. exit 1
  64. fi
  65. _sdok=`fdisk -l $sdcard 2> /dev/null | grep Disk`
  66. if [ "$_sdok" = "" ]; then
  67. printf "\033[31m\033[1m%s NOT FOUND !, Exiting.\033[37m\033[22m\n" "${sdcard}"
  68. exit 1
  69. fi
  70. else
  71. printf "\033[31m\033[1m%s NOT FOUND !, Exiting.\033[37m\033[22m\n" "${sdcard}"
  72. exit 1
  73. fi
  74. 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}"
  75. read -n 1 ANSWER
  76. if [ ! "${ANSWER}" = "y" ] ; then
  77. echo "."
  78. echo "Canceled.."
  79. exit 0
  80. fi
  81. # ==========================================================
  82. # Partition and format sd/emmc card if not creating an image
  83. echo ""
  84. echo "Copying boot section..."
  85. if [ ${o_device} = "xu4" ]; then
  86. dd if=${src_dir}/initramfs/ramfs/multi/bl1.bin of=${sdcard} bs=512 seek=1 > /dev/null 2>&1
  87. if [ $? -ne 0 ]; then
  88. echo "ERROR installing bl1.bin."
  89. fi
  90. sync
  91. dd if=${src_dir}/initramfs/ramfs/multi/bl2.bin of=${sdcard} bs=512 seek=31 > /dev/null 2>&1
  92. if [ $? -ne 0 ]; then
  93. echo "ERROR installing bl2.bin."
  94. fi
  95. sync
  96. dd if=${src_dir}/initramfs/ramfs/multi/u-boot.bin of=${sdcard} bs=512 seek=63 > /dev/null 2>&1
  97. if [ $? -ne 0 ]; then
  98. echo "ERROR installing u-boot.bin."
  99. fi
  100. sync
  101. dd if=${src_dir}/initramfs/ramfs/multi/tzsw.bin of=${sdcard} bs=512 seek=2111 > /dev/null 2>&1
  102. if [ $? -ne 0 ]; then
  103. echo "ERROR installing tzsw.bin."
  104. fi
  105. sync
  106. else
  107. dd if=${src_dir}/initramfs/ramfs/multi/bl1.bin of=${sdcard} bs=1 count=442 > /dev/null 2>&1
  108. if [ $? -ne 0 ]; then
  109. echo "ERROR installing bl1.bin."
  110. fi
  111. dd if=${src_dir}/initramfs/ramfs/multi/bl1.bin of=${sdcard} bs=512 skip=1 seek=1 > /dev/null 2>&1
  112. if [ $? -ne 0 ]; then
  113. echo "ERROR installing bl1.bin."
  114. fi
  115. sync
  116. dd if=${src_dir}/initramfs/ramfs/multi/u-boot.bin of=${sdcard} bs=512 seek=97 > /dev/null 2>&1
  117. if [ $? -ne 0 ]; then
  118. echo "ERROR installing u-boot.bin."
  119. fi
  120. sync
  121. # u-boot env erase
  122. dd if=/dev/zero of=${sdcard} seek=1440 count=64 > /dev/null 2>&1
  123. if [ $? -ne 0 ]; then
  124. echo "ERROR erasing u-boot environment."
  125. fi
  126. sync
  127. fi
  128. sync
  129. printf "\n\033[33mOK.\n\033[37m\n"
  130. exit 0