How to clone Jetson Nano SD Card?

I am trying to back up Jetson nano image files but failed because of permission errors. I was facing permission problem when copy proc folder, I tried to change permissions using
sudo chmod -R u+rw /proc
command, but giving error
error: operation not permitted
so please suggest me how to solve this problem and its necessary copy proc folder or not while backup the image? Thank you

could you detach the microsdcard and backup it at some other device e… using card reader?

I tried this but without format sd card we can’t use in other device like laptop… Please suggest

if your laptop hhas ubuntu you should be able to see the sdcard in lsblk or df -h outputs;
it doesn’t need to be recognized as a mounted folder in order to be dumped with dd

1 Like

@shankarjadhav232
/proc is a virtual filesystem, so you can’t back it up. It’s created by the kernel and the files inside are not real files. I wouldn’t recommend trying to back up an entire sd card or live Nano. Rather, create a script to install your necessary things and apply that either in a chroot as above or on a live system. Packaging your app or or writing such a script so this is possible will save you time and headaches later, so the inital cost is more than worth it.

You can copy other files or even python packages, but be aware that doing so will require an understanding of unix permissions and the basic filesystem structure. You may find this handy cheat-sheet helpful:

I take backup of jetson nano image successfully and i flash this image in same jetson nano again but he take same user id and password. my Question is can i use this image for another jetson nano ? please reply…

I take backup of jetson nano image successfully and i flash this image in same jetson nano again but he take same user id and password. my Question is can i use this image for another jetson nano ? please reply…

@shankarjadhav232

No, it’s not safe.

As @mdegans says, it is not safe. I will qualify though that if you are flashing the exact same install to another Nano using the same exact flash software release, and if there are no “/etc/udev” entries depending on specific MAC addresses or serial numbers, then it stands a chance of working (but is definitely not a guarantee). As soon as you use different eMMC versus microSD variants, you are guaranteed a fail. As soon as you mix across a different release of flash software versus the clone source, you are guaranteed a fail.

yes, while it might perfectly work for a development test trial;
it is not possible to make sure if a rocket launched under control of such device wouldn’t blow up in the air as Airane 5 did back in 1996. ref: ARIANE 5 Failure - Full Report
Well, to be honest it neither would be possible to make sure the rocket wouldn’t explode given no prior cloning takes place at all. So it is more like about a complex structure that with some odds might fail or might not fail. Taking safety & security risks we increase useability, typically, but also increase odds that the system will fail due to some internal or external factor.
So in short : it depends, on policies, constraints, requirements & resources. From a technical prospective an exact clone of one nano will work on another nano - you may like to insert sdcard from one nano device to another to test it. On the other hand security policies might reqest to isolate resources of user of nano 1 & user of nano 2 so that it would require extra effort to address these concerns.
As far as I remember mksparse method would address to certain extend the issue of deployability of OS to many devices in a more meaningfull manner than a full dump does. However, it also might make sense to consider other options, including flashing of default rootfs that yet doesn’t contain any specific to hardware identifiers data, etc.

1 Like

when i run this command i got this error please check

chroot: failed to run command ‘/bin/bash’: Exec format error

please suggest what can i do next…
Thanks

@shankarjadhav232
Try this, and try again:

sudo apt install binfmt-support qemu-user-static

You may have to reboot your VM.

I am not using VM ,i have linux system i used this one . i Explain what i am doing exactly ,when i run

sudo cp enter_chroot/enter_chroot.sh /usr/bin/

i didn’t find enter_chroot.sh file in usr/bin/ then i try with
sudo nautilus
and copy manually enter_chroot.sh to user/bin/
it is okay ?

then i tried

sudo enter_chroot.sh Linux_for_Tegra/rootfs/

but i got
chroot: failed to run command ‘/bin/bash’: Exec format error.

Now i tried your solution also but i am getting same error…please help

…the above occurs when you try to run code from the wrong architecture. For example, running PC code on arm64/aarch64, or trying to run arm64/aarch64 on a PC. These are completely foreign architectures, and the system running that code does not speak that “language”. What @mdegans mentions with QEMU is because of this. QEMU emulation can act as a kind of “adapter” between architectures. Even if your host is not a VM, QEMU is essentially a VM which could help you get around that issue within your chroot environment.

My PC have Windows 10 but i use ubuntu using dual boot and i try with on this , So what can i do for complete steps please suggest …

I will back up a few steps first, and ask this question: Do you really just need to clone, or do you need to modify the clone? If you have Ubuntu, and just need to clone, then there are simple steps with the dd command. If you must actually edit or use chroot into the installation’s clone, then this is where QEMU becomes useful.

I want to modify image means install some lib,package and then create image and use to different different nano…what can i do for that ?

You must have QEMU in that case. What @mdegans mentioned is part of the requirement for installing QEMU.

There is an optional script which can create the user name/pass and set time zone from the PC by modifying the image to be flashed prior to actual flash (performed on the PC side). This script is human readable, and will demonstrate how to set up QEMU and use it. You could edit this script and experiment with that as a way to learn how to do this. See the script here:
https://forums.developer.nvidia.com/t/jetson-nano-all-usb-ports-suddenly-stopped-working/75784/37

More info (also thanks to @mdegans):
https://forums.developer.nvidia.com/t/tx2i-modify-rootfs-to-create-new-user-during-flashing/118076/5

EDIT: Note that you can often perform those script lines by hand on the command line as well.

multipass exec tegra-image-maker bash
when i run this command some times its running okay but sometimes we got error
C:\Windows\system32>multipass exec tegra-image-maker bash
exec failed: ssh connection failed: ‘Socket error: disconnected’
please suggest answer

which multipass type better for doing this hyper-V OR virtual box ?, i have windows 10 pro system