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?
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.