CopyEMMCtoSD.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. n
  48. p
  49. 2
  50. p
  51. w
  52. EOF
  53. mkfs.vfat -F 16 /dev/mmcblk0p1
  54. mkfs.ext4 -F /dev/mmcblk0p2
  55. # temp. mountdirectories
  56. mkdir /tmp/boot
  57. mkdir /tmp/bootdata
  58. mkdir /tmp/rootfs
  59. # mounten der Partitionen
  60. mount /dev/mmcblk0p1 /tmp/boot
  61. mount /dev/mmcblk0p2 /tmp/rootfs
  62. mount /dev/mmcblk1p1 /tmp/bootdata
  63. # daten kopieren
  64. cp -f /tmp/bootdata/MLO /tmp/boot
  65. cp -f /tmp/bootdata/*.dtb /tmp/boot
  66. cp -f /tmp/bootdata/u-boot.img /tmp/boot
  67. cp -f /tmp/bootdata/uImage /tmp/boot
  68. #--- build rootfs -- make default sys dirs for rootfs
  69. mkdir -p /tmp/rootfs/sys
  70. mkdir -p /tmp/rootfs/proc
  71. mkdir -p /tmp/rootfs/tmp/fontconfig
  72. mkdir -p /tmp/rootfs/dev/pts
  73. mkdir -p /tmp/rootfs/dev/shm
  74. WRKDIR=`pwd`
  75. cd /tmp/rootfs/dev
  76. ln -s ../tmp/log ./log
  77. cd $WRKDIR
  78. for i in `seq 0 7` ; do
  79. echo "usb$i"
  80. mkdir -p /tmp/rootfs/media/usb$i
  81. done
  82. mkdir -p /tmp/rootfs/mnt
  83. #--- copy rootfs from SD
  84. cd /
  85. tar --exclude=./sys --exclude=./proc --exclude=./dev --exclude=./media --exclude=./tmp --exclude=./mnt -cf - . | (cd /tmp/rootfs && tar -xvf -)
  86. #--- copy done
  87. cd
  88. df -h
  89. umount /dev/mmcblk0p1 /dev/mmcblk0p2 /dev/mmcblk1p1