User Tools

Site Tools


copy_larger_sd_card_to_smaller_sd_card

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
copy_larger_sd_card_to_smaller_sd_card [2017/01/28 21:40] – [Backup the SD Card] walkeradmincopy_larger_sd_card_to_smaller_sd_card [2023/03/09 22:35] (current) – external edit 127.0.0.1
Line 4: Line 4:
 \\  \\ 
 {{:16gbsd8gbsd.jpg?500|}} {{:16gbsd8gbsd.jpg?500|}}
 +\\ 
 +\\ 
 +After initially thinking this would be a really simple task, I soon learned that no, it is not. And the worst part of it is, if you have for example a 16GB SD card, that you want to copy to another 1GB SD card, the destination card might be slightly smaller, and it will fail. This is very frustrating. If you are in this position, then read on.
 \\  \\ 
 \\  \\ 
Line 141: Line 144:
 \\  \\ 
 {{:gparted_007b.jpg?700|}} {{:gparted_007b.jpg?700|}}
 +\\ 
 +\\ 
 +By default, dd will backup the entire SD card, whether it is part of a partition or not (so a 16Gb SD Card will produce a 16Gb file, that won't fit on my 8Gb destination SD Card).
 +\\ 
 +\\ 
 +We can tell the dd tool to only partition so far, but we need to know how much space we have used on the card. We know that our partition is 2048Mb, and the boot partition is nearly 700Mb, so for safety, I am going to use 2200Mb.
 +\\ 
 +\\ 
 +From the command line, use the following:
 +\\ 
 +<file>
 +sudo dd if=/dev/sdb of=~/rpi_all.img bs=1M count=2200
  
  
 +for me this gives the result:
  
 +2200+0 records in
 +2200+0 records out
 +2306867200 bytes (2.3 GB, 2.1 GiB) copied, 137.197 s, 16.8 MB/s
 +</file>
 +\\ 
 +sudo dd if=/dev/sdb of=~/rpi_all.img bs=1M count=2200
 +\\ 
 +\\ 
 +Where /dev/sdb is the SD Card (don't use the SDB1, SDB2 etc)
 +\\ 
 +\\ 
 +rip_all.img is the output file
 +\\ 
 +\\ 
 +count=2200 is telling dd to stop after 2200Mb.
 +\\ 
 +\\ 
 +~/ means folder you are in (PWD) to save you typing the entire path.
 +\\ 
 +\\ 
 +From the command line, use the following to check the file size.
 +\\ 
 +\\ 
 +    ls -hal *.img
 +\\ 
 +You should see the file you created called rpi_all.img. The filesize should be 2.2GB (2200Mb)
 +\\ 
 +\\ 
 +{{:dd_001.jpg?600|}}
 +\\ 
 +\\ 
  
 +----
 +==== Restore the SD Card ====
 +\\ 
 +Remove your original SD Card from the Linux PC and insert the smaller size SD Card you wish to use. Before writing to it we need to remove any partitions that it contains.
 +\\ 
 +\\ 
 +Open gparted (select the correct storage device remember).
 +\\ 
 +\\ 
 +{{:dd_restore_001.jpg?700|}}
 +\\ 
 +\\ 
 +Right click on all the partitions and remove them (Select Delete).
 +\\ 
 +\\ 
 +{{:dd_restore_002.jpg?700|}}
 +\\ 
 +\\ 
 +Once all of the partitions are removed, we have to click the arrow at the top of the gparted interface to accept the changes (just under the word Help in the above image).
 +\\ 
 +\\ 
 +Accept any warnings and proceed. You now have a blank SD Card.
 +\\ 
 +\\ 
 +To restore your image, use the following from the command line:
 +\\ 
 +<file>
 +sudo dd if=~/rpi_all.img of=/dev/sdb bs=1M
  
 +This gave me the output:
  
 +2200+0 records in
 +2200+0 records out
 +2306867200 bytes (2.3 GB, 2.1 GiB) copied, 460.966 s, 5.0 MB/s
 +</file>
 +\\ 
 +Note the time taken: 2306867200 bytes (2.3 GB, 2.1 GiB) copied, <color red>460.966 s</color>, 5.0 MB/s. This process took nearly 10 minutes, it's very slow so be patient.
 +\\ 
 +\\ 
 +Remove the SD Card from the Linux PC and put it in to the Raspberry Pi.
 +\\ 
 +\\ 
  
 +----
 +==== The Raspberry Pi ====
 +\\ 
 +If all has worked, the Raspberry Pi should now boot up. Once booted and logged in, we can check the partition sizes.
 +\\ 
 +\\ 
 +From the command line, use:
 +\\ 
 +\\ 
 +    df -h
 +\\ 
 +<file>
 +This will show the following:
  
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- df -h 
 Filesystem      Size  Used Avail Use% Mounted on Filesystem      Size  Used Avail Use% Mounted on
 /dev/root       2.0G  1.1G  880M  54% / /dev/root       2.0G  1.1G  880M  54% /
Line 174: Line 257:
 tmpfs           218M      218M   0% /sys/fs/cgroup tmpfs           218M      218M   0% /sys/fs/cgroup
 /dev/mmcblk0p1   63M   21M   43M  34% /boot /dev/mmcblk0p1   63M   21M   43M  34% /boot
- +</file> 
- +\\  
- +We can see from the /dev/root line above that the size is reported as 2.0G and that 880M is available. This is an 8Gb SD Card, and we need to reclaim that extra space. To do this, from the command line enter: 
-df -h+\\  
 +\\  
 +    sudo raspi-config 
 +\\  
 +\\  
 +From the menu, select No1. Expand Filesystem. 
 +\\  
 +\\  
 +{{:raspi-config-001.jpg?700|}} 
 +\\  
 +\\  
 +Once completed (takes just a few seconds) Select Finish and let the Raspberry Pi reboot. 
 +\\  
 +\\  
 +Now log back in and re-run the df -h command. 
 +\\  
 +\\  
 +    df -h 
 +\\  
 +<file>
 Filesystem      Size  Used Avail Use% Mounted on Filesystem      Size  Used Avail Use% Mounted on
 /dev/root       7.2G  1.1G  5.9G  15% / /dev/root       7.2G  1.1G  5.9G  15% /
Line 186: Line 288:
 tmpfs           218M      218M   0% /sys/fs/cgroup tmpfs           218M      218M   0% /sys/fs/cgroup
 /dev/mmcblk0p1   63M   21M   43M  34% /boot /dev/mmcblk0p1   63M   21M   43M  34% /boot
 +</file>
 +\\ 
 +Now it can be see that the partition (/dev/root) is 7.2GB in size, with 5.9Gb free.
 +\\ 
 +\\ 
 +That's it, all done.
 +\\ 
 +\\ 
 +As a footnote, I would copy the rpi_all.img to your PC, and the you can use this to create new SD Cards using Win32 diskimager as it's a lot less hassle. But only do this once you have proved the process works.
 +\\ 
 +\\ 
  
  
  
  
copy_larger_sd_card_to_smaller_sd_card.1485639652.txt.gz · Last modified: 2023/03/09 22:35 (external edit)