The automatic update mechanism for Ubuntu going from 14.04 to 16.04 does not understand Jetson hardware, so if you do this just by running the command Ubuntu provides, then you’ll end up needing to flash back to L4T.
On the other hand, there was one person who got migration from 14.04 to 16.04 to work. You might be interested in this, it seems to make 16.04 possible, but no guarantees (you’d have to do this right…some information further down talks about what can go wrong in a package update and gives some insight on possibilities for the full release upgrade):
https://devtalk.nvidia.com/default/topic/1036457/jetson-tk1/how-to-successfully-update-jetson-tk1-to-ubuntu-16-04/
As to individual apps (not the entire Ubuntu release) I always update (it is a bad idea to not update most systems). There have been times when libglx.so gets overwritten (about 99% of the time ), but this is easily solved if you still have command line access. The specific package which does this is “xserver-xorg-core”, and under any other individual package update there will not be any issue. The only update I’ve seen to be a problem is “xserver-xorg-core”. The exact file which can get overwritten is:
/usr/lib/xorg/modules/extensions/libglx.so
You will have a copy of the correct version here, and package update disturbs this:
/usr/lib/arm-linux-gnueabihf/tegra/libglx.so
To know if your drivers specific to the TK1 are correctly in place (including libglx.so) run this command after an update (you would lose graphics if you reboot with a bad libglx.so, but graphics would work anyway until reboot):
sha1sum -c /etc/nv_tegra_release
If the xorg version fails, simply copy the tegra version (or use a symbolic link which is what flash would do):
sudo cp /usr/lib/arm-linux-gnueabihf/tegra/libglx.so /usr/lib/xorg/modules/extensions/libglx.so
# OR:
sudo ln -sf /usr/lib/arm-linux-gnueabihf/tegra/libglx.so /usr/lib/xorg/modules/extensions/libglx.so
For reference, this is one of the files put on the sample rootfs on the host PC during a flash via the “sudo apply_binaries.sh” step. The file from the driver package “Linux_for_Tegra/nv_tegra/nv_sample_apps/nvidia_drivers.tbz2” supplies all of the files which are custom nvidia drivers, and you can always do the same as apply_binaries.sh (but on the running Jetson) by unpacking this in “/” with sudo. If you are ever afraid an update could lose any driver, then you could prepare ahead of time by copying nvidia_drivers.tbz2 to “/” of the Jetson. Then, at any time, make sure all drivers are back in place:
cd /
cd /
# Unpack all drivers:
sudo tar xvfj nvidia_drivers.tbz2
# Unpack just the one driver:
sudo tar xvfj nvidia_drivers.tbz2 usr/lib/xorg/modules/extensions/libglx.so
Something to know ahead of time is that normally the xorg version is just a symbolic link to the tegra version. Using nvidia_drivers.tbz2 to install just the xorg version only puts a symbolic link in, and if the tegra version is not already in place it won’t help. Unpacking the entire nvidia_drivers.tbz2 won’t hurt and will guarantee everything being correct.