[GUIDE] How To Install Ubuntu 18.04 On TX2

While nvidia devs are saying 18.04 is still not supported on TX2, I have discovered it’s possible to install latest JetPack for Xavier on TX2.

Just download L4T Sample Root Filesystem R31.1 & L4T Jetson AGX Xavier Driver Package R31.1 . Extract sample root file system into Driver package’s rootfs folder, run the apply_binaries.sh as sudo first, and then execute flash.sh after connecting your TX2 in recovery mode, as:

sudo ./flash.sh jetson-tx2 mmcblk0p1

I made an extensive test with this setup, and everything seems working fine (Wifi, ethernet, usb ports etc.), just like how it’s working on Xavier board.

It’s also possible install Cuda 10 on TX2, but you’ll need an Xavier board for that. After installing Cuda 10 on Xavier board, just compress cuda-repo-10-0-local-10.0.117 local ppa repository in /var path, and extract it on your TX2’s /var folder. (or if it’s possible, get this repo tar.gz file directly from jetson downloader for xavier). Then select this folder as local ppa repository from software updater. You can execute:

sudo apt-get install cuda-toolkit-10-0

after that.

I wonder, why devs haven’t released this jetpack version for TX2?

Interesting, have you also tried getting the new kernel to work? Or is that really only compatible with the Xavier? I can imagine changing some DTSI’s could be enough to get it to work (maybe just copy the old ones to the new kernel?)

This method is completely using drivers, kernel and root file system from Xavier Jetson release. There are config files for tx2 left in those files, this method uses those config files. I think devs were planning to release it with TX2 support, but somehow they decided not to for this release.

Thank you very much! That’s work!

I downloaded


after unziping L4T Sample Root Filesystem R31.1 & L4T Jetson AGX Xavier Driver Package R31.1

run the “apply_binaries.sh” as sudo first instead “apply_configuration.sh”.

Yes, it should be apply_binaries.sh, it was my mistake, just edited the main post.

Thank you for sharing.
At TX2:
rsync ip@xavier:/var/cuda-repo-10-0-local-10.0.117 /var/cuda-repo-10-0-local-10.0.117
cd /etc/apt/sources.list.d
nano cuda-10-0-local.list
#then add line below and save
deb file:///var/cuda-repo-10-0-local-10.0.117 /
sudo apt update
udo apt-get install cuda-toolkit-10-0

seems installed

export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
then reinstalling opencv allowed to build yolo with cuda 10

CUDA Error: CUDA driver version is insufficient for CUDA runtime version
darknet: ./src/cuda.c:36: check_error: Assertion `0' failed.
Aborted (core dumped)
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sun_Aug_12_21:08:25_CDT_2018
Cuda compilation tools, release 10.0, V10.0.117

perhaps cudnn needs somehow be ported as well

What Linux kernel version is in this image?

I’ve not used this upgrade path, but just FYI you can expect that when the next JetPack/L4T release comes out it will officially support Ubuntu 18.04 on both Xavier and TX2. Timing of releases is never announced, but all of the hints are that this will be soon (don’t know if that is “metric soon” or “American soon” units).

As I am totally new to the TX2 (gut it today), I would be glad for some more detailed instructions. “Extract sample root file system into Driver package’s rootfs folder” means, I unpack those both downloaded files into some folder on the controlling machine that connects to the TX2? And the commands I run from the Linux_for_Tegra-Folder? Does the board in the recovery mode also need the USB connection to the controlling machine, or only Ethernet?

I need to compile some stuff that needs Ubuntu 18, making this all work in Ubuntu 16 will be a PITA, so I really would prefer 18 on the TX2.

Thanks for any hint :)


The micro-B USB cable from the micro-OTG USB port to the host PC is how a flash is accomplished. The Jetson has to be in recovery mode. Recovery mode by itself does nothing (you can go to recovery mode as many times as you want just to see it, and nothing will happen without further software from the host), but the Jetson looks like a custom USB device when in that mode. The host runs the driver package which understands this device and can flash.

Some terms: JetPack is just a graphical front end. When JetPack flashes it really runs the driver package…and this is the “flash.sh” script. The Jetson is in recovery mode with the micro-B USB cable connected during the flash. After a flash completes (if flash was checked to run), then extra packages can be installed. Those go over wired ethernet. If no flash is done, then only wired ethernet is required. If no extra packages are added and only flash is to occur, then only the micro-B USB cable (plus recovery mode) is needed.

JetPack will download and install the driver package for you. When you hear about the “Linux_for_Tegra/” folder his is from unpacking the driver package. Within this the master flash command is via the “Linux_for_Tegra/flash.sh” script. The “apply_binaries.sh” script is also in this folder, and the sample rootfs goes in “Linux_for_Tegra/rootfs/”. The driver package is never unpacked as root (never with sudo). The sample rootfs is always unpacked with root authority (with sudo). Following unpack of sample rootfs some files are added to this via the “sudo ./apply_binaries.sh” step. After that it is ready to flash (those previous steps are not required for each flash, these are just preparation).

Note that JetPack specifically requires an Ubuntu host. The driver package, when run on command line, will run on any 64-bit desktop Linux PC (I use Fedora). Mostly I run the driver package directly. I have an old Ubuntu atom laptop I use when I want to use JetPack for packages.

Note that if JetPack is used and both flash and package addition are chosen, then when the Jetson reboots it has a mechanism to report the IP address of the freshly booted Jetson to the JetPack installer. If you did not just flash, then you will have to watch the prompts or pop-ups to see if JetPack needs to know the IP address of the Jetson (which might in turn be found on the Jetson with “ifconfig”).

You add or remove packages at any time. Just uncheck flash steps.

The next release of JetPack (which is also the next release of the driver package) should be very soon, and this will provide Ubuntu 18.04 on both the TX2 and Xavier. The method here is a workaround to the current default Ubuntu 16.04. The usual Ubuntu mechanism for upgrade to 18.04 would leave the Jetson unbootable since it has no concept of this hardware’s boot requirements.

OK, this makes it a bit clearer, first USB connection, later Ethernet. I already did a normal standard flash procedure, and this went fine.

So I just unpack the large Linux package and flash with the command mentioned in the beginning of the thread. This should work out somehow. Thanks a lot!


OK, got it :) It is much easier than expected from the somehow unclear descriptions

I downloaded JetPack-L4T-4.1.1-linux-x64_b57.run and installed it, letting it download all the stuff it wanted. Fast Internet is recommended :) Of course in the end it did not find the board, so I pressed cancel without deleting files.

I have put TX2 into recovery mode, connected with USB and Ethernet.

Then I went to the Xavier/Linux_for_Tegra folder on a shell.

I started TX2 into recovery mode, while it was connected with USB and Ethernet.

sudo ./apply_binaries.sh
sudo ./flash.sh jetson-tx2 mmcblk0p1

Took a while, but then all was done, Ubuntu 18 was installed.

Do keep in mind that although people have had success with the Xavier version it isn’t officially supported, and that an officially supported way of doing this will be released soon.

Sure. I just need to get things going right now and will switch to the release when it gets available. My use case is more of the kind “having a Raspberry Pi on steroids” :)


Hello @linuxdev, where do you have that information from? Do you have any idea when the guide will be released? That would be very helpful! I use the Jetson TX2 for an open-source project and running Ubuntu 18.04 (with all drivers) on our Jetsons would be great.


It is already released, I installed 18.04 last week with the official way. Just load and install the latest SDK manager.


Thank you very much, Ralph! And thanks Nvidia for the release - this is awesome :)

Hi Ralph, where can we find the official way? Any link for the guide? Thanks

L4T R32.1 (Ubuntu 18.04) is installed via SDK Manager:
Installer: https://developer.nvidia.com/embedded/dlc/nv-sdk-manager
Instructions 1 (Download/Run): http://docs.nvidia.com/sdk-manager/download-run-sdkm/index.html
Instructions 2 (Install Software to Jetson):http://docs.nvidia.com/sdk-manager/install-with-sdkm-jetson/index.html

Thank you so much! I am new for TX2. Yesterday I just realized I have to flash it first instead of using it directly.