BSP with additional libraries install using SDK Manager

Hello experts,

I have a question regarding what might be the best way to do the following.

Suppose, I have a Jetson Nano production module and have an NVMe. I have two options to install OS(BSP), either install it in the built-in 16 GB eMMC or install it in the NVMe. I could install it in the NVMe and all the additional libraries later using SDK manager flawlessly. On the contrary, if I want to install the OS(BSP) in eMMC, I could do so as well but not all the libraries using SDK manager. After a while the SDK manager complains that there is not much space left. Now, my question is, what might be the best way if I want to still install the BSP in 16GB eMMC and then use SDK manager to install the supporting libraries into the NVMe? any mounting/mapping/linking ideas?

Thanks in advance.

Actually, jetson does not put all the components on the NVMe. Even when you “boot from nvme”, there are still some components on the emmc. This is the point 1 in below thread.

You can totally boot from nvme after rel-32.6. Which means the kernel and file system are both on the NVMe drive. I see no problem with that. Why do you still want to put something on the emmc?

Both emmc and NVMe will be some device node like /dev/mmcblk0p1 and /dev/nvme0np1 after you enter kernel. You can mount them with common ubuntu commands (mount/umount).

The process @WayneWWW describes is the most comprehensive way to get more disk space. However, if you are aware that most of the extra libraries (e.g., CUDA) are installed under “/usr/local”, then there is an easier (but perhaps not so flexible) way to deal with this. This is just an alternative which is easy to experiment with…

If you have an NVMe partition (for the sake of illustration I’ll call it “/dev/nvme0n1p1”), and you are ok with not putting all content on it, then you could copy all current content of “/usr/local” (prior to adding those extra packages) to the partition, and then mount nvme0n1p1 to “/usr/local”. Anything previously there would still show up because you’ve copied that content in prior to mounting there. Then, if you run SDKM to add packages like CUDA (which goes under “/usr/local”), the process will add to the NVMe instead of to eMMC.

If you later umount the “/usr/local” NVMe, then only the original content on eMMC will appear.

Imagine you’ve created a blank ext4 partition. Then you mount this temporarily on “/mnt”. This would copy the content (some of the options are actually redundant):
sudo cp -adpR /usr/local/* /mnt
(you could also use other tools, e.g., rsync)

Flashing never installs those extra tools. After flashing the Jetson reboots, and only then do those extra tools get installed. This means that you can uncheck flashing, work on getting “/usr/local” set up, and then run the install of packages like CUDA. Most of the content would go on “/usr/local” (which is now conveniently the NVMe). Some content would go into places like the dpkg management under “/var”, but the bulk of used disk space would be on the NVMe.

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