Copy T4L/rootfs to other computers

I’ve copied the customized T4L directory to another place and flash from there and then the system didn’t work correctly. I found untar rootfs with -p option. but do I need to do a specific thing when I tar them up? to keep file permission as is?

What is your use-case? An example of what you want to accomplish would help, but some information follows which might be of use to you…

When installing JetPack/SDK Manager you really are installing a front end to the flash software. Various parts are automatically downloaded and unpacked for you, but everything in the “Linux_for_Tegra/” folder, other than “Linux_for_Tegra/rootfs/”, is from the individual “driver package” (this is “L4T”). The sample rootfs is then unpacked in the “rootfs/” directory, and “apply_binaries.sh” then unpacks NVIDIA drivers into that “rootfs/” (without “apply_binaries.sh” the sample rootfs would be purely Ubuntu).

So if you were to go here, and pick an L4T release (each JetPack/SDKM release is for a given L4T release):
https://developer.nvidia.com/embedded/linux-tegra-archive
…and then download the associated “driver package” (this is the board support package, or BSP) and “sample rootfs”, then you are partially mimicking what JetPack/SDKM would do.

As an example, if I go to the R32.6.1 release:
https://developer.nvidia.com/embedded/linux-tegra-r3261
…then I could unpack the driver package at any random (but previously empty) directory as a regular user. Example from some empty directory, purposely not using sudo:

  • tar xvfj jetson-210_Linux_R32.6.1_aarch64.tbz2
  • This would have created a “Linux_for_Tegra/” subdirectory.
  • Then, from “Linux_for_Tegra/rootfs/”, and purpsosely using “sudo”, install the sample rootfs:
    sudo tar xvfj /where/ever/it/is/Tegra_Linux_Sample-Root-Filesystem_R32.6.1_aarch64.tbz2
  • Finally, add NVIDIA content using this command from the “Linux_for_Tegra/” subdirectory:
    sudo ./apply_binaries.sh

Note that there might be a need to install something like QEMU, but if you’ve used JetPack once, then this is already set up. The resulting “Linux_for_Tegra/” can be placed most anywhere on the system and command line flash run using flash.sh. It is the GUI JetPack/SDKM part which adds other requirements since it also helps to download content and run commands.

Basically all in the “Linux_for_Tegra/” folder is preserving ordinary user permissions, and all in “rootfs/” requires root/sudo permissions.

1 Like

Thank you for your quick response @linuxdev !

This comprehensive guide helps a lot.
I used SDK manager to download all Linux for Tegra files and rootfs, and want to move them to other places (even other computers) to continue customizing.

Is there any tips for doing it?
When I moved all of them with sudo cp -r command, flashing was succeeded but the actual system on Jetson works weirdly.
I guess there is a permission issue…

If you were to copy these manually, then you would have to use “sudo” to retain file ownership and permissions. There are also times when one system might have different accounts set up, and the copy would have to preserve user and group numeric IDs, and this is the realm of backup software, e.g., “rsync”. Something like “rsync” is capable of preserving numeric IDs and device special files, something cp has problems with in some cases.

It is quite possible that cp will work if you use “cp -a -r ...” to not only recursively copy, but to also preserve attributes. However, if account setup causes an ID to translate, then you would be advised to switch to rsync so numeric IDs and device special files can be more closely copied.

I also do not know if you need to do anything special from JetPack/SDKM when it is in a non-standard location, but command line flash will itself work from anywhere (and even from non-Ubuntu Linux systems).

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.