CopyEMMCtoSD.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #!/bin/sh
  2. such="root=/dev/mmcblk1"
  3. echo ""
  4. echo -e "\e[7mCopy EMMC to SD\e[0m"
  5. grep -q $such /proc/cmdline
  6. if [ $? == 0 ]; then
  7. bootpart="/dev/mmcblk1p1"
  8. bootdev="EMMC"
  9. else
  10. bootpart="/dev/mmcblk0p1"
  11. bootdev="SD"
  12. fi
  13. if [ $bootdev == "SD" ]; then
  14. echo "System was booted from SD, copying Image from EMMC not possible ! ==> EXIT"
  15. exit 1
  16. fi
  17. if [ ! -b /dev/mmcblk0 ]; then
  18. echo -e "\e[31mNo SD Card insertd ! ==> EXIT\e[0m"
  19. exit 2
  20. fi
  21. echo -e "\e[31mSD card will be formatted, all Data on this Card will be deleted!!\e[0m"
  22. echo ""
  23. read -n 1 -p "are you sure? (y/n) : " antwort
  24. if [ ${#antwort} == 0 ]; then
  25. antwort = "n"
  26. fi
  27. if [ $antwort == "y" -o $antwort == "Y" ]; then
  28. echo -e "\nStart copying .."
  29. else
  30. echo -e "\nEXIT on user reqest"
  31. exit 3
  32. fi
  33. echo "Formatting SD ...."
  34. umount /dev/mmcblk0p1 2>/dev/null
  35. umount /dev/mmcblk0p2 2>/dev/null
  36. dd if=/dev/zero of=/dev/mmcblk0 bs=2M count=1 conv=notrunc
  37. fdisk /dev/mmcblk0 <<EOF
  38. o
  39. p
  40. n
  41. p
  42. 1
  43. +64M
  44. t
  45. e
  46. a
  47. 1
  48. n
  49. p
  50. 2
  51. p
  52. w
  53. EOF
  54. /sbin/mkfs.vfat -F 16 /dev/mmcblk0p1
  55. /usr/sbin/mkfs.ext4 -F /dev/mmcblk0p2
  56. # temp. mountdirectories
  57. mkdir /tmp/boot
  58. mkdir /tmp/bootdata
  59. mkdir /tmp/rootfs
  60. # mounten der Partitionen
  61. mount /dev/mmcblk0p1 /tmp/boot
  62. mount /dev/mmcblk0p2 /tmp/rootfs
  63. mount /dev/mmcblk1p1 /tmp/bootdata
  64. # daten kopieren
  65. cp -f /tmp/bootdata/MLO /tmp/boot
  66. cp -f /tmp/bootdata/*.dtb /tmp/boot
  67. cp -f /tmp/bootdata/u-boot.img /tmp/boot
  68. cp -f /tmp/bootdata/uImage /tmp/boot
  69. #--- build rootfs -- make default sys dirs for rootfs
  70. mkdir -p /tmp/rootfs/sys
  71. mkdir -p /tmp/rootfs/proc
  72. mkdir -p /tmp/rootfs/tmp/fontconfig
  73. mkdir -p /tmp/rootfs/dev/pts
  74. mkdir -p /tmp/rootfs/dev/shm
  75. WRKDIR=`pwd`
  76. cd /tmp/rootfs/dev
  77. ln -s ../tmp/log ./log
  78. cd $WRKDIR
  79. for i in `seq 0 7` ; do
  80. echo "usb$i"
  81. mkdir -p /tmp/rootfs/media/usb$i
  82. done
  83. mkdir -p /tmp/rootfs/mnt
  84. #--- copy rootfs from SD
  85. cd /
  86. tar --exclude=./sys --exclude=./proc --exclude=./dev --exclude=./media --exclude=./tmp --exclude=./mnt -cf - . | (cd /tmp/rootfs && tar -xvf -)
  87. #--- copy done
  88. cd
  89. df -h
  90. umount /dev/mmcblk0p1 /dev/mmcblk0p2 /dev/mmcblk1p1