Xubuntu-Core / XFCE4 18.04.2 - Custom Image for the Jetson Nano

Hello All!!

This is a custom image I have created for the Jetson Nano. ( Download link at the bottom. )

Built from the ground up using debootstrap, this image is based on a minimal Xubuntu-core / Xfce4 installation for a snappy desktop experience and a lighter weight alternative to the L4T Ubuntu image. This image is only 3.5 Gigabytes.

INSTRUCTIONS

(Please note: Your device must be rebooted at least once before all the drivers will be loaded correctly. The first boot is a good time to create any user accounts.)

Default Username: jetson
Default Password: 12345

Steps to create a new user and delete the default

  1. Download the archive and decompress it. (image size= 3.5 GB)
  2. Burn the .img with Belena Etcher or another tool
  3. Pop it in and boot the nano!
  4. Login using Username: jetson Password: 12345
  5. Open a term and sudo adduser somenewadmin
  6. sudo usermod -aG sudo somenewadmin
  7. sudo adduser somenewadmin adm
  8. sudo adduser somenewadmin plugdev
  9. exit (and log in as somenewadmin)
  10. Open terminal again and sudo deluser --remove-home jetson

Notes

The image contains the following:

  • The L4T-Jetson-Driver-Package-R32.1 (Everything thats normally installed with this package is included, you can check nvidias package manifest if you don’t already know what it is)

  • Xubuntu-core (basically everything that’s included in a typical minimal xubuntu/xfce4 installation)

  • Chromium-browser

  • VLC Media Player

  • Compton ( Compositor program to make everything silky smooth )

  • A couple GTK themes and a wallpapers to make things look pretty.

And that’s pretty much it! , I’ll attach a package manifest for everyone to take a look at.

Compton is set to autostart and the configuration file is added to the .config folder in the $HOME directory … feel free to play around with the settings but what I have feels pretty nice.

If there is anything anyone thinks I can do to improve this image let me know! if there is interest i’d like to create an image that contains everything the L4T image does like all the development tools , The Media API package , Cuda repositories and whatnot but as it stands now people can just use the SDK tool to install what they need.

let me know if you have any questions!!

Download link
https://www.filehosting.org/file/details/806376/Xubuntu-core-l4t-r32.1-2019-06-15.tbz2

Package manifest attached
xubuntu_nano_package_manifest.txt (46.2 KB)

1 Like

great work

Thanks!

I think the image is snappier than the regular L4T one, desktop performance in general feels great.

Let me know what you think if anyone ends up giving it a try.

If people are hesitate to install the pre-built image I can release the rootfs as well with the driver package pre-applied.

Oh also, the download size for this image is 1.1gb.

Regards,
Chris.

I probably sound pedantic (and I can be) or like a broken record, but I feel it needs to be said for security sake.

Adding a root password isn’t safe. That’s one reason the sudo group exists (so the root password can be disabled entirely as a security measure).

You should be able to add new users and delete the old with:

(directly after first boot as user Jetson)
sudo adduser somenewadmin
sudo adduser somenewuser
sudo usermod -aG sudo somenewadmin
exit (and log in as somenewadmin)
sudo deluser --remove-home jetson

That should be it after first boot. Use the regular user unless you need to modify the system. It’s wise to work this way on Windows as well.

Also, ssh host keys will have to be regenerated:

Thanks mdegans, that’s fair.

I attempted to set up the ubiquity installer along with the oem-config settings so the installation would function the same as the nvidia image however I ran into some issues so i just reverted to using a default account.

Thanks for your input!

Regards,
Chris.

Cuda repositories and whatnot but as it stands now people can just use the SDK tool to install what they need. ???

I cant seem to find an SDK tool for Arm64 ? the only one i see is amd64

sdkmanager_0.9.12-4180_amd64.deb

what am i missing ?

That’s correct scottkvps23 you need to install the sdkmanager on an x86 computer that is running Ubuntu 18.04 or you can install it in a virtual machine.

Then with the nano booted up and logged in you attach a micro usb cable from the nano to the x86 computer running the sdkmanager and it will allow you to install the extra packages.

There are also .deb packages in the Sdk manager dowbload path. Ones labeled ‘arm64’ are for the nano itself.

Also, a MicroUSB cable is not necessary to use SDK manager to provision a machine. Turns out if you have ssh open and use the up and credentials of the Nano that works too.

I don’t think SDK manager will connect to a custom image without ssh running. It’s existing connection relies on a network interface over MicroUSB and that is started by a service Nvidia added.

There are also .deb packages in the Sdk manager dowbload path. Ones labeled ‘arm64’ are for the nano itself. ??

where are these arm64 packages?

i dont use ubuntu as a desktop, nor a deb based distro… dont really want to install one either.

I absolutely hate now Nvidia set this up too. Why can’t apt just work? I have no idea. Why is machine A required to install something on machine b? You got me. Please, Nvidia, retire SDKM.

On your Ubuntu host PC, after running sdkm and installing everything, if you are very observent you may spot a sneaky option for download location. The dpkg files get put there.

Sorry I didn’t read carefully enough. I don’t think you have a choice unless Nvidia had a sdkm port for fedora/suse. There is also a tarball with the debs to install on nano but I can’t recall the download url.

In regards to my custom image, a micro usb cable hooked up to the nano from the host machine works fine.

I don’t believe it used ssh however the ssh service was running when i tried this.

However as you mentioned if you wish you can set up ssh and install over the network.

Also I understand if you don’t want to install ubuntu or a deb based OS, that’s what virtual machines are good for.

all you need to do is download Virtualbox then grab a vm image of ubuntu 18.04.

Go here:

https://www.virtualbox.org/
https://www.osboxes.org

As a side note, this custom image has all the same functionality as the sample rootfs available from nvidia so if you can do something with that image you should be able to do it with this one as well.

I an not 100% certain but it would make sense they used ssh because if I change the IP to that of a real interface with ssh running is still works. I’m sure it’s not ssh for the flashing bit, bit for the install bit it appear to be.

Unfortunately there are known issues with SDKM in a VM. It must be run on bare metal because of the way it handles USB.

I used virtual box to install the sdk’s on my nano…

It worked fine.

You just need to make sure to install the virtualbox extension pack that provides usb functionality to the vm.

I’ve done it twice now without issue.

plug the nano into the host, then at the bottom of the vm there is a usb icon/

Click the usb icon and select the nvidia corp. usb device.

the sdkmanager will recognize that the nano is attached and you will be able begin the install.

It is possible to install CUDA and Visionworks on the nano without the sdkmanager.

All the debs are located in a local repository in the /var directory on the standard l4t image.

it’s a pain in the butt though.

Download the standard L4T image and mount it.

navigate the the /var directoy and copy the repositories to the same directory on the nano sdcard.

on the l4t image navigate the /etc/apt/sources.d directory and copy the cuda and visionworks sources.list’s

copy those to the apt/sources directory on the nano.

boot the nano then navigate to the /var directory.

inside the locale cuda and visionworks directories are GPG keys, apt-key add them.

then apt-update.

then install each of the .deb packages.

…something like that anyway sorry for the terrible instructions.

Did you try flashing and the install both? I don’t think that will work. It might, but it’s a configuration Nvidia doesn’t support and explicitly warns against.

Yes, they can also be found there. Nano .deb files can be found just about anywhere but an apt repository.

In reference to the tarballs I mentioned earlier, the .deb packages are in one of these downloads as well but I can’t recall which. When I get off mobile I will check which:

edit: I can’t find them. I may be mistaken about them being in a tarball, or I may be failing at searching.

Sorry you’re correct, I have not attempted to flash the nano via the sdkmanager on a vm.

However I have not had any issues installing the CUDA,AI,ComputerVision and Multimedia components via a usb cable connected to a host machine running an ubuntu 18.04 virtualbox image.

You’re right that nvidia should host the components in an online repo …it would make things a lot easier.

they should also release a package manifest for all the development tools they are pre-installing in their L4T image so ppl know whats included.

I was only able to get that to work over ssh. I plugged my nano into my workstation and all hid devices stopped responding. The particular workstation has what I suspect are usb power issues. It shouldn’t happen, especially since the nano is powered through the barrel jack, but it does. These are the sorts of edge cases Nvidia didn’t think about but happen all the time.

I think Nvidia is used to embedded developers who are willing to install their software on their host and all that it implies. The problem is when you advertise something as “Ubuntu” people are going to expect it to be just that, not Nvidia customized green-everywhere Ubuntu with some software you have to install on your (Ubuntu on bare metal only) host for reasons nobody can quite explain.

What I find to be an example of doing it right (from Docker):
https://get.docker.com/

Or these very clear instructions here (again, from Docker):
https://docs.docker.com/install/linux/docker-ce/ubuntu/

The first installs docker on just about anything. You run it with

#   $ curl -fsSL https://get.docker.com -o get-docker.sh
#   $ sh get-docker.sh

or even directly in one step with a pipe to sh.

The second is what most people coming from debian based Linux are used to. Update the system, apt-get install some stuff, add a gpg key, add a repo, apt-get update, and apt-get install the-thing.

It’s what people have already done many times and are hopefully used to. It just works, and will continue to work, and can auto-update, and can work in a container, and…

SDKM only works if all the stars are aligned.