check_u-boot 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #!/bin/bash
  2. # ******************************
  3. # Install u-boot to SD/EMMC card
  4. # ******************************
  5. if [ "$(id -u)" != "0" ]; then
  6. echo "Script must be run as root !"
  7. exit 0
  8. fi
  9. if [ ! -f /opt/multiboot/u-boot.bin ]; then
  10. echo "ERROR: u-boot.bin not found"
  11. exit 1
  12. fi
  13. uboot_part="/dev/mmcblk0"
  14. [ -b /dev/mmcblk0boot0 ] && uboot_part="/dev/mmcblk0boot0"
  15. # Extract installed u-boot to file
  16. dd if=${uboot_part} of=/tmp/this_u-boot.bin bs=512 skip=63 count=2048 > /dev/null 2>&1
  17. if [ $? -ne 0 ]; then
  18. echo "ERROR extracting u-boot from mmcblk0"
  19. exit 2
  20. fi
  21. # compare
  22. UBOOT_SIZE=$(stat -c%s /opt/multiboot/u-boot.bin)
  23. cmp -s -n ${UBOOT_SIZE} /opt/multiboot/u-boot.bin /tmp/this_u-boot.bin
  24. if [ $? -ne 0 ]; then
  25. # Not equal
  26. if [ "${uboot_part}" = "/dev/mmcblk0boot0" ]; then
  27. if [ -e /sys/block/mmcblk0boot0/force_ro ]; then
  28. echo 0 > /sys/block/mmcblk0boot0/force_ro
  29. if [ $? -ne 0 ]; then
  30. echo "ERROR enabling boot0."
  31. exit 1
  32. fi
  33. else
  34. echo "ERROR: boot0 not found."
  35. exit 1
  36. fi
  37. fi
  38. dd if=/opt/multiboot/u-boot.bin of=${uboot_part} bs=512 seek=63 > /dev/null 2>&1
  39. if [ $? -ne 0 ]; then
  40. echo "ERROR writting u-boot to mmcblk0"
  41. exit 3
  42. fi
  43. if [ "${uboot_part}" = "/dev/mmcblk0boot0" ]; then
  44. echo 1 > /sys/block/mmcblk0boot0/force_ro
  45. fi
  46. sync
  47. echo "u-boot on mmcblk0 UPDATED"
  48. else
  49. echo "u-boot on mmcblk0 OK"
  50. fi
  51. [ ! -b /dev/mmcblk1 ] && exit 0
  52. uboot_part="/dev/mmcblk1"
  53. [ -b /dev/mmcblk1boot0 ] && uboot_part="/dev/mmcblk1boot0"
  54. # Extract installed u-boot to file
  55. dd if=${uboot_part} of=/tmp/this_u-boot.bin bs=512 skip=63 count=2048 > /dev/null 2>&1
  56. if [ $? -ne 0 ]; then
  57. echo "ERROR extracting u-boot from mmcblk1"
  58. exit 4
  59. fi
  60. # compare
  61. cmp -s -n ${UBOOT_SIZE} /opt/multiboot/u-boot.bin /tmp/this_u-boot.bin
  62. if [ $? -ne 0 ]; then
  63. # Not equal
  64. if [ "${uboot_part}" = "/dev/mmcblk1boot0" ]; then
  65. if [ -e /sys/block/mmcblk1boot0/force_ro ]; then
  66. echo 0 > /sys/block/mmcblk1boot0/force_ro
  67. if [ $? -ne 0 ]; then
  68. echo "ERROR enabling boot0."
  69. exit 1
  70. fi
  71. else
  72. echo "ERROR: boot0 not found."
  73. exit 1
  74. fi
  75. fi
  76. dd if=/opt/multiboot/u-boot.bin of=${uboot_part} bs=512 seek=63 > /dev/null 2>&1
  77. if [ $? -ne 0 ]; then
  78. echo "ERROR writting u-boot to mmcblk1"
  79. exit 5
  80. fi
  81. if [ "${uboot_part}" = "/dev/mmcblk1boot0" ]; then
  82. echo 1 > /sys/block/mmcblk1boot0/force_ro
  83. fi
  84. sync
  85. echo "u-boot on mmcblk1 UPDATED"
  86. else
  87. echo "u-boot on mmcblk1 OK"
  88. fi
  89. exit 0