Ubuntu Setup (Target)

NVIDIA DRIVE™ provides and supports the Ubuntu-based file system. This file system is suited for small to medium embedded target systems based on NVIDIA® Tegra® processors.
Ubuntu-Based File System
The Ubuntu-based file system is intended to be used for software development because it has immense flexibility to quickly add required 3rd party pre-built packages from Internet-based PPA servers.

Logging In

If you experience instability or timeouts with ssh connections to a Xavier processor in the Drive AGX system, set -o ServerAliveInternal to keep the ssh session live. For example:
$ ssh -o ServerAliveInternal=240 nvidia@<xavier IP address>
See the standard Linux ssh manpage documentation for more information.
The file systems (drive-oobe-rfs only) support Secured Shell (SSH) and serial console logins. Use following username/password to login:
username: nvidia
password: nvidia

DRIVE OS Linux Username and Password

For information about the default DRIVE OS username and password, and how to change the username and password, see Changing the Default Target Username and Password.

Using apt-get

The apt-get tool is the mechanism with which the Ubuntu systems keep track of software installations.
apt-get is a command line interface that enables:
Installing software packages from Ubuntu repositories on the local system or the Internet
Removing existing packages
Upgrading existing packages (or even the entire system)
Because package dependency information is included with the packages (i.e., B requires A, C conflicts with D), removals and upgrades can be checked to see if dependencies are broken, making the system safe and easy to use. The file system comes with the Ubuntu <TBD_OS_ver_target> ARM Internet repository already set up, so you can use apt-get immediately to install Ubuntu software packages from the Internet.
apt-get keeps a local database of available packages from the repositories it knows about. The packages in the Internet repository are periodically updated with bug fixes, security patches, and other minor changes, and the local database will not contain these updates until it itself is updated.
Your target has Internet access.
For instructions on setting up target Internet access, see Enabling Internet Access on the Target.
To update the local database
Enter the following command:
$ sudo apt-get update
Packages can then be installed with the apt-get install command.
To install packages
$ sudo apt-get install <package> <package>
Where <package> is the name of the package to install, such as foo and bar in the following command:
$ sudo apt-get install foo bar
The command line is sufficient even if foo and bar depend on other packages that are not yet installed. apt-get determines what dependencies are missing and offers to install them. If dependency conflicts prevent the installation of either package, apt-get reports the conflicts and refuses to do anything.
To remove packages
$ sudo apt-get remove <package> <package>
Where <package> is the name of the package to remove. For example, the following command line removes the bar and baz packages:
$ sudo apt-get remove bar baz
If other packages require a package to remain installed, then apt-get also offers to remove the other packages. To prevent accidental removal of needed packages, verify the full list of packages to be removed.
For additional information, see apt-get in “Chapter 3. Package Management” of the Ubuntu Server Guide at:

Installing GUI on the Target

The default filesystem that comes with the SDK does not contain the graphical user interface.
To install the GUI and work with the graphical user interface, execute the following steps:
1. 1. Ensure target board is flashed using SDKM or Docker DRIVE OS image.
2. Ensure the target is connected to the internet and execute the following commands below:
sudo apt-get update
sudo apt-get install gdm3 ubuntu-unity-desktop
3. The commands result in the following prompts that require the following user actions:
1. On query for /etc/alsa/alsa-base.conf to keep or overwrite: Press enter (keeps current version).
2. For time zone configuration: Choose continent, city to set time zone, and press enter.
3. On query for /etc/gdm3/custom.conf to keep or overwrite: Press enter (keeps current version).
4. Choose default display-manager between gdm3 or lightdm: Choose gdm3 and press enter.
4. To enable autologin, open /etc/gdm3/custom.conf as a superuser using a text editor (vim, gedit, emacs, etc.) and add the lines below to the file:
# Enabling automatic login
AutomaticLoginEnable = true
AutomaticLogin = <username>
5. Reboot the target:
sudo reboot

Network Configuration in NVIDIA Filesystems

The service/daemon that manages/configures the network in NVIDIA filesystems (driveos-core-rfs, driveos-oobe-rfs) is systemd-networkd, which is different from the standard network manager (NetworkManager) used in Ubuntu 18.04 by default.
systemd-networkd is the only network manager installed. Hence, utilities like netplan aren’t installed to support both systemd-networkd and NetworkManager.

Configuring Interfaces

To configure a particular interface, you must create a network file/netdev file in /etc/systemd/network/.
For example, to configure interface eth0 with DHCP, create network file 50-wired.network and place it in /etc/systemd/network/:
For more information on network file semantics, priority, and location, see the systemd-networkd man page.

File System Source Code

The drive-t186ref-linux-<release>-oss-src.run installs filesystem sources under the directory:
NVIDIA DRIVE Linux filesystems contain a combination of Ubuntu repository and NVIDIA CUDA repository packages. As an alternative to above source, you can get the source of Ubuntu repository packages (from the Ubuntu repository) using the command:
apt-get source <package>
Ensure that all data is saved. Execute a software shutdown command, such as halt/shutdown to the target system to avoid data corruption; otherwise, file system corruption may occur. Once the target system is shut down, you may use physical/electrical shutdown or reset commands, such as tegrareset or aurixreset in the AURIX command terminal.