How to create a new SD master card, or backup efficiently your existing card¶
If you want to backup your machine, or prepare an image from the golden machine to share it to the world (or your students), you may want to follow those steps.
The golden machine is the machine on which the setup is made. Everything is prepared according to your needs. Once it’s ready, you just cleanly shut it down, pop the SD card out, and copy it to share the love!
Everything in this guide is written by using a Linux computer in which the sdcard is inserted.
Find and unmount your sd card¶
Firsts things firsts, we need to know where is our sdcard in the linux filesystem.
To find the device, open a terminal and type in
sudo fdisk -l.
In the output, there will be a section looking like this:
Disk /dev/mmcblk0: 58.29 GiB, 62587404288 bytes, 122241024 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xa2033091
There is a very high probability that the device name we are looking for starts with
mmcblk. To make sure this is the device we are looking for, use the size displayed (in this case, it is a 64GB sdcard).
We are now going to make sure the device is not mounted on your system (some OSes mount inserted sdcards automatically).
sudo umount /dev/mmcblk0p1 and
sudo umount /dev/mmcblk0p2 to unmount the disk.
If the devices were not mounted, you may see an error message that you can ignore. The message looks like this:
umount: /dev/mmcblk0p2: not mounted.
Copy the sdcard to your disk¶
Choose and navigate to an appropriate directory on your computer.
We are going to use
dd to copy the sdcard. The command to type is the following:
sudo dd if=/dev/mmcblk0 of=planktoscopeimage.img bs=4M status=progress
if: stands for
input file, this is the input that we want to copy FROM
of: stands for
output file, this is where the image is going to be written
bs: chooses a block size of 4M, this helps to speeds up the copy
status: just display a progression of the copy
The copy may take more than 15 minutes to complete, so you can go get a coffee or something.
Congratulations, you now have a complete copy of your sdcard!
However it’s big. Huge even. We are going to resize it to make its storage and sharing easier.
Shrink and share!¶
Before shrinking the image, let’s sanitize it first and remove eventual secrets stored in it (like wifi passwords for example).
mkdir mnt sudo mount -o loop,rw,offset=$((532480 * 512)) planktoscopeimage.img ./mnt/
You can now cleanup the image. The
mnt directory is the same as the root of your sdcard. You should find your way from there.
Notably, do not forget to edit/remove the following files:
mnt/etc/wpa_supplicant/wpa_supplicant.conf: wifi configuration and network secrets
mnt/home/pi/.ssh/authorized_keys: public ssh keys authorized to connect to this planktoscope
mnt/home/pi/data/: this folder has all the images taken before by your machine, you may want to clean it up too
mnt/home/pi/.*history: bash and python history
mnt/home/pi/.gitconfig: git config
If you want to distribute the image you created, you need to start the service that will recreate the host ssh keys on startup:
sudo ln -s /lib/systemd/system/regenerate_ssh_host_keys.service etc/systemd/system/multi-user.target.wants/regenerate_ssh_host_keys.service
Once your cleanup is done, unmount the image with
sudo umount mnt.
Now, let’s shrink the image! To do so, we are going to use PiShrink.
You can install the script using the following:
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh chmod +x pishrink.sh
Now, starts PiShrink on your image, and watch it do its magic:
sudo ./pishrink.sh -z -a planktoscopeimage.img
-z -a are used to compress the image to a gz file using the multithread version of gzip (pigz).
If you want to distribute the image you created, you should use the flag
-p with PiShrink to remove logs, apt archives, ssh hosts keys and similar things.
You now have a compressed image that should be between 10 and 100 times smaller than the one you started with. You can distribute it (don’t forget to do the steps above first), archive it, do whatever you please with it!