Advertisement
Guest User

Untitled

a guest
Nov 30th, 2024
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.86 KB | Source Code | 0 0
  1. #!/bin/bash
  2. set -e
  3.  
  4.  
  5. # Check if script is run as root
  6. if [ "$EUID" -ne 0 ]; then
  7.     echo "Please run as root"
  8.     exit 1
  9. fi
  10.  
  11.  
  12. echo "Starting SD card to eMMC copy process..."
  13.  
  14.  
  15. # Backup bootloader
  16. echo "Backing up bootloader from eMMC..."
  17. dd if=/dev/mmcblk0 of=/tmp/bootloader.backup bs=1M count=8
  18.  
  19.  
  20. # Clear existing partitions but preserve bootloader
  21. echo "Clearing existing partitions (preserving bootloader)..."
  22. dd if=/dev/zero of=/dev/mmcblk0 bs=1M seek=8 count=1
  23.  
  24.  
  25. # Create new partition table and partitions
  26. echo "Creating new partition table and partitions..."
  27. parted /dev/mmcblk0 mklabel msdos
  28. parted /dev/mmcblk0 mkpart primary 8MiB 495MiB
  29. parted /dev/mmcblk0 mkpart primary 495MiB 100%
  30.  
  31.  
  32. # Create filesystems
  33. echo "Creating filesystems..."
  34. mkfs.ext2 /dev/mmcblk0p1
  35. mkfs.ext4 /dev/mmcblk0p2
  36.  
  37.  
  38. # Create mount points
  39. echo "Creating mount points..."
  40. mkdir -p /mnt/emmc_boot
  41. mkdir -p /mnt/emmc_root
  42.  
  43.  
  44. # Mount partitions
  45. echo "Mounting partitions..."
  46. mount /dev/mmcblk0p1 /mnt/emmc_boot
  47. mount /dev/mmcblk0p2 /mnt/emmc_root
  48.  
  49.  
  50. # Copy filesystems
  51. echo "Copying root filesystem..."
  52. cp -ax / /mnt/emmc_root/
  53. echo "Copying boot filesystem..."
  54. cp -ax /boot/* /mnt/emmc_boot/
  55.  
  56.  
  57. # Get new UUIDs
  58. BOOT_UUID=$(blkid -s UUID -o value /dev/mmcblk0p1)
  59. ROOT_UUID=$(blkid -s UUID -o value /dev/mmcblk0p2)
  60.  
  61.  
  62. # Update fstab
  63. echo "Updating fstab with new UUIDs..."
  64. cat << EOF > /mnt/emmc_root/etc/fstab
  65. # Static information about the filesystems.
  66. # See fstab(5) for details.
  67.  
  68.  
  69. # <file system> <dir> <type> <options> <dump> <pass>
  70. UUID=${BOOT_UUID}  /boot   ext2    defaults        0       1
  71. UUID=${ROOT_UUID}  /       ext4    defaults        0       1
  72. EOF
  73.  
  74.  
  75. # Update boot.cmd for eMMC
  76. echo "Updating boot configuration..."
  77. cat << EOF > /mnt/emmc_boot/boot.cmd
  78. setenv bootargs "root=UUID=${ROOT_UUID} rw rootwait console=tty1 console=ttyS2,1500000"
  79. # Load the DTB
  80. load \${devtype} \${devnum}:\${partition} \${fdt_addr_r} /dtbs/rockchip/rk3566-odroid-m1s.dtb
  81. fdt addr \${fdt_addr_r}
  82. # Load kernel and initramfs
  83. load \${devtype} \${devnum}:\${partition} \${kernel_addr_r} /Image
  84. load \${devtype} \${devnum}:\${partition} \${ramdisk_addr_r} /initramfs-linux.img
  85. setenv initrd_size \${filesize}
  86. # Boot with kernel and initramfs
  87. booti \${kernel_addr_r} \${ramdisk_addr_r}:\${initrd_size} \${fdt_addr_r}
  88. EOF
  89.  
  90.  
  91. # Generate new boot.scr
  92. echo "Generating new boot.scr..."
  93. mkimage -A arm64 -O linux -T script -C none -n "Boot Script" -d /mnt/emmc_boot/boot.cmd /mnt/emmc_boot/boot.scr
  94.  
  95.  
  96. # Sync and unmount
  97. echo "Syncing filesystems..."
  98. sync
  99. echo "Unmounting partitions..."
  100. umount /mnt/emmc_boot
  101. umount /mnt/emmc_root
  102.  
  103.  
  104. echo "Copy to eMMC complete!"
  105. echo "You can now power off the system and remove the SD card."
  106. echo "The system should boot from eMMC after restart."
  107. echo "Keep your SD card as a backup until you verify the eMMC boot works properly."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement