L4T cloud init

Hello

I’ve looking to l4t Linux_for_Tegra folder and I wonder, if previously a first boot, can it modified to add cloud-init program and user-data yaml file.

Or is there anything similar to this for Jetsons which I don’t know.

hello masip85 ,

may I understand your actual use-case in details?
thanks

For example, if I need to install a few jetsons, I don’t like to install it from sdk in each one of these,and after that configure wifi,vpn,packages,users…

Is much more productive to use this method:

including something similar to cloud init at first start up,leaving machine configured.

hello masip85,

actually, you’re able to deploy the flash without SDKManager, please refer to Flashing to Multiple Jetson Devices.

you should copy system.img from the filesystem partition you want to flash from. clone an APP partition can include all your configurations, you then use that back-up image to flash other platform to apply your customization.
please refer to developer guide and check the To clone a Jetson device and flash session.

Maybe I don’t understand your reply correctly,but:

That method has a big counter-part. I need to update the backup anytime there is a library update or I want to do minor modifications, in order to has it prepared for future installations in machines backup has to updated too.

Version control in different machines is quite more difficult too.

Those steps requires an amount of time cloud-init doesn’t need.

Being scriptable is also much more friendly to share across an organization.

hello masip85,

could you please share your actual use-case in detail,
please also have some examples for reference, thanks

You can imagine as many use cases as you want.

What if different machines are distributed trough an entire city or different city? You’ve got to find different skillset people who knows how to flash it following the way you explain (which is shortened at the video I linked). Using the ubuntu + cloud-init way that person just has to flash,connect usb, and boot system.

Imagine years pass by, and you want to use or reproduce configuration of the gold image you’ve got today. That image has to be stored for the years. With the ubuntu way you don’t need it to reproduce your system. Just ubuntu version and user-data.

But just imagine, across a organization with different jetsons in different cities, you want to change vpn or wifi password. You would have to enable a not ideal secure remote connection to do it yourself because in a non-headless ubuntu mode are not for everyone across a company or project. Each machine cannot have a technician aside, but it can have a person who reflashes it with a new user-data cloud-init file just booting it.

I would have

I have never used cloud init, and don’t know a lot about it. I’ve worked with NFS and PXE booting, but that was long ago. Could you describe in detail which part of the content you want on the actual Jetson, and if this is an eMMC model or SD card model? Also, do you simply want cloud available, or do you want to actually mount something in cloud as a rootfs partition?

Maybe I don’t explain myself correctly. I need it out of the cloud. When you have the physical hardware available.

Sometimes @JerryChang , that hardware is available for our IOT clients, and we don’t want them have to deal complicated instructions for installing hardware with the OS tuned: vpn, wifi, docker enabled, portainer, ssh keys, cuda versions …

Besides, is a lot of work if you have a handful of clients, with a handful of edge machines. Yo have to explain or guide them many times to do all this. Time consuming work. But in a prosper future, with different edge machines,with different configurations… I see a lot of work which cloud init would solve.

Regards

@JerryChang , is there any possibility to tweak L4T folder for installing cloud-init package before flashing? I’ve digging into R32.6.1/Linux_for_Tegra/nv_tegra/nv-apply-debs.sh , and I think tweaking it could be a possibility, but I don’t figure it out how.

Is that a possibility? Is any workaround easier than that?

hello masip85,

you may customize the rootfs to create new system.img for image flashing.
another approach is develop on your target, and clone the APP partition to back-up the system.img.

Just to throw a complication in, some of the content for early boot has no ability to be on a remote system. For SD card models some of the content normally “flashed” is in the QSPI memory, and for the eMMC models, that content is in eMMC. For the content in QSPI or eMMC for early boot there is no possibility of storing and retrieving this remotely.

Well that is one of the things that cloud init solve, because network config can be solved at first moment of first boot.

And is strange to me cloud-init is not present, because… it’s part of the official ubuntu repository. Did nvidia retrieved that? why?