This page collects various tips & tricks for getting the most out of the Certified Ubuntu on Xilinx Devices release.
Unless otherwise noted, the information on this page applies to both 20.04 and 22.04 images.
Table of Contents
Table of Contents | ||
---|---|---|
|
Installing a Graphical Package Manager
The core of the Ubuntu ecosystem is 3rd-party packages. Ubuntu 20.04 LTS provides some packages as tradition Debian .deb
packages in apt repositories. Sandboxed modern applications are provided as Snaps (such as xlnx-config
). By default, the Certified Ubuntu on Xilinx Devices image does not provide a graphical package manager. If you would like to add one, there are several available in the existing Ubuntu package repository ecosystem.
...
Code Block |
---|
$ sudo snap install snap-store |
Stopping the Ubuntu Graphical Desktop Environment
If you wish to stop the Ubuntu graphical desktop environment and return to a strictly command line environment, you can do so by using the systemd
interfaces. The systemd
“multi-user” target is equivalent to runlevels 3, 4, or 5 in traditional systems based on SysVInit
. This can be used to save system memory which would otherwise be used for running the rich desktop experience.
...
Code Block |
---|
$ sudo systemctl enable multi-user.target $ sudo systemctl set-default multi-user.target |
Switching Desktop Environments
The default graphical environment in Ubuntu 20.04 LTS is based on GNOME3. Other desktop environments are available and can be installed to suit personal preference.
...
Info |
---|
NOTE: The default Ubuntu display manager is |
Screen Sharing and VNC
You can share the desktop by enabling Screen Sharing in the GNOME desktop settings. You first need to install the vino Vino package. More details can be found at the following page:
https://linuxhint.com/enable-screen-sharing-ubuntu/
Understanding CMA Usage
Many of the Xilinx designs, particularly those that leverage the Xilinx If you’d rather run a more traditional VNC server with support for multiple virtual desktops instead of sharing the primary desktop, you can refer to the following guide:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-20-04
Understanding CMA Usage
Many of the Xilinx designs, particularly those that leverage the Xilinx Video Codec Unit (VCU), make extensive use of Contiguous Memory Allocator (CMA) in the Linux kernel.
...
Note |
---|
For general usage, Xilinx does not recommend lowering the CMA below 256MB |
Updating the Board-Level Metadata EEPROM
Xilinx evaluation boards have metadata about the board stored in an I2C EEPROM soldered to the board. Among this data is the serial number of the board, name of the board (eg, ZCU102), board revision, and Ethernet MAC address.
Xilinx declares how & where this information is stored in the device tree DTS file for the ZCU102 here: https://raw.githubusercontent.com/Xilinx/u-boot-xlnx/master/arch/arm/dts/zynqmp-zcu102-rev1.0.dts
...
Most of the data is informational only, but two pieces are critical:
Board Name (address
0xd0
)MAC address (address
0x20
)
If the board name field is not correct, the Certified Ubuntu on Xilinx Devices image will not boot properly. The Certified Ubuntu release uses this data during its initial boot phase (the ImgSel
tool) documented by Xilinx here: Booting Certified Ubuntu 20.04 LTS for Xilinx Devices . The ImgSel
tool reads the board name and then uses this information to boot the correct BOOT.BIN file.
...
The same basic process can be used to update the Board Name, Board Serial Number, or Board Version fields. Keep in mind that when writing the values for the Board Name, Board Version Number, and Board Serial Number to use the ASCII values in hexadecimal. The MAC address is written in native hexadecimal values.
Ubuntu Internal Error Messages
From time to time, the Ubuntu desktop may display error messages similar to Sorry, Ubuntu 20.04 has experienced an internal error.
...
Code Block |
---|
$ sudo systemctl disable apport.service |
Rebuilding the Image Selector Utility
The core of the Certified Ubuntu for Xilinx Devices boot process on ZCU10x boards is the Image Selector tool. This utility performs the initial boot of the board, reads board-identifying information from the attached EEPROM, and then reboots into a customized set of boot collateral for the specific board it is running on. For more detail on this process, see the Booting Certified Ubuntu 20.04 LTS for Xilinx Devices page.This is what allows the same Certified Ubuntu for Xilinx Devices SD card image to boot on multiple boards. Typically, there is no need to modify this code. If a user determines that they would like to modify the way that Image Selector operates, it can be rebuilt inside the Vitis environment. The source code of Image Selector is part of the Xilinx embeddedsw
repository on the Xilinx GitHub.
...
Minimum Processing System (PS) configuration:
https://github.com/Xilinx/embeddedsw/blob/master/lib/sw_apps/imgsel/src/psu_init.c#L1045
Minimum Board Support configuration:
https://github.com/Xilinx/embeddedsw/blob/master/lib/sw_apps/imgsel/src/xis_singleimage.c#L50
Using a Custom Device Tree
To temporarily override the dtb without modifying the fit image (Kria) or bootxxxx.bin (zcu10x), you can create a new dtb named "user-override.dtb". Copy user-override.dtb to the FAT partition and reboot. If user-override.dtb is found on the FAT partition by U-boot, it will use this dtb instead of the board-specific dtb found in the FIT image when Linux is started.
Understanding the Configuring flash-kernel
Prompts When Updating the Linux Kernel
When updating the Linux kernel via packages available in the Ubuntu package feed, the following prompt may appear:
...
In general, it is safe to choose either the local version or the maintainer’s version. This message is an artifact how the Linux kernel packages are configured for the Certified Ubuntu image. Typically, the Ubuntu version of the Linux kernel includes both the splash
and quiet
command line arguments. The splash
argument is typically used in desktop Linux distributions and instructs the kernel to display a splash screen (eg, a screen displaying the distribution's logo) if one is available. The quiet
argument puts the kernel into non-verbose mode. Omitting this option will produce much more output on the terminal during Linux kernel boot. In most Linux distributions (including Ubuntu), the quiet
argument is used to produce a more aesthetically pleasing boot experience. The AMD-Xilinx Certified Ubuntu image omits the quiet
argument in order to produce more debug messages that are useful when prototyping. This change in the default boot arguments is applied using a meta-package overlay. This overlay causes a mis-match in the kernel package configuration when updating it via normal package management methods.
When updating the kernel, the options presented correspond to:
install the package maintainer's version
-- This option will add the default "quiet splash
" options back to the Linux kernel command linekeep the local version currently installed
-- This option will keep the AMD-Xilinx configuration which omits thequiet
option.