Ubuntu Server Certified Hardware Coverage Guide

Welcome!

The Ubuntu Certification team is continuously revisiting the scope of the tests comprising the Ubuntu Certified programme and it is reviewed every six months, following the same cadence as the Ubuntu OS. This revision of new tests is performed during Ubuntu’s development cycle and it never applies to already-released versions of Ubuntu.

This document was previously tied to specific Ubuntu Server LTS releases. Going forward, however, it will apply to all Ubuntu LTS releases. Release specific versions of this guide will no longer be produced.

For each test job, one of the following certification statuses is specified:

Blocking

Features that are required for certification. If any of the blocking tests fails, the certification will fail.

Non-blocking

Features that are tested but not mandatory for certification. Failure in non-blocking tests will not prevent certification. However, a note will be added to the certificate to inform potential customers or users.

Note

Only categories of hardware are tested and not specific types of hardware. For example, tests are run to verify USB controllers work, but the type of peripheral(s) used during those tests are not specified.

Coverage is flexible based on customer requirements (for example, if a device’s use cases don’t require LEDs, then LEDs can be non-blocking)

Full test descriptions can be found in Canonical certification site for partners:

https://certification.canonical.com

Ubuntu Server LTS Coverage

As introduced in the 18.04 LTS cycle, Ubuntu LTS certification requires the testing of Vendor Approved Options in order to meet the requirements of the Ubuntu Server Certification programme. This means that all Vendor Approved Options for sale with a given model Server must be covered by testing at some point.

Once a Vendor Approved Option has been tested in one Server Model, it does not need to be retested for another Server Model. This increases the scope of testing but minimizes the amount of extra test work necessary. Thus, if Model A and Model B both feature Networkcard 1, Networkcard 1 is only required to be tested once in either Model A or Model B, and will be considered tested for both.

server-full

Note

The certification tests presented in this document are validated by Checkbox version 4.2.0.dev76.

Blocking

These items must be tested and must pass testing to be considered Certified.

  • Installation Methods

    • Metal as a Service is a required part of server certification testing. If a system cannot be automatically enlisted, commissioned, and deployed using MAAS without user interaction other than manually powering the system on the first time the system cannot pass Ubuntu Server Certification. An exception is made here for systems that use management engines like Intel AMT that provide no means of in-band configuration and thus require manual configuration in MAAS to work.

  • Intel Optane DCPMM devices

    • Configuration

    • Intel DCPMMs are tested in both Memory and AppDirect (Storage) modes. Specifically, only the fsdax, raw, and sector modes are covered, devdax mode is not currently tested.

  • Internal storage (RAID and Non-RAID). Only hardware RAID solutions are tested.

    • Storage devices (HDDs, SSDs, Hybrid, NVMe, RAID LUNs) are I/O load tested using open source tools

    • Basic RAID levels (0,1 or 5)

  • OCP, Mezzanine, or Daughter Cards

    • Any OCP, mezzanine or daughter card that enables ports on the motherboard must pass. (e.g. a mezz card that enables 10Gb on onboard SFP+ ports)

  • System management. Tests are applicable to systems that ship with a BMC or similar management device. Limited to Power Management and User/Password management for MAAS control and probing for info from the BMC.

    • In-Band Management (IPMI)

    • Out-of-Band Management (IPMI, AMT, etc)

    • Chassis Management (Blade / Cartridge type systems)

    • Virtual Machine Management (for LPAR or VM systems like Power or z13)

    • MAAS Compatibility

  • Containers

    • LXC must function

  • System Identification

    • Ensure that the Make/Model being returned to the operating system and via OOB Management is the same as what is being submitted for certification. Firmware must accurately reflect the Make/Model being certified.

  • Boot/Reboot

    • PXE Booting from a MAAS server

    • Rebooting to finalize deployment

  • GPGPU Devices (NVIDIA)

    • Systems that are AI/ML focused, such as those that ship with multiple GPGPUs and marketed for AI/ML workloads, must pass the GPGPU tests in addition to the standard test plan for certification.

    • Any GPGPU that is listed as a Vendor Approved Option for a server model must be tested regardless of whether that system is AI/ML focused (e.g. a small server that includes a T4 GPU option)

Benchmarks tests

The following test units are covered in this category:

benchmarks/disk/hdparm-cache-read_name

Cached read timing benchmark of {name} using hdparm

Unit type:

template

Category ID:

benchmarks

Status:

Blocking

After-suspend:

True

From template:

benchmarks/disk/hdparm-cache-read_name

Template resource:

device

Template filter:

device.category == ‘DISK’

benchmarks/disk/hdparm-read_name

Raw read timing benchmark of {name} using hdparm

Unit type:

template

Category ID:

benchmarks

Status:

Blocking

After-suspend:

True

From template:

benchmarks/disk/hdparm-read_name

Template resource:

device

Template filter:

device.category == ‘DISK’

CPU tests

  • A general stress test is performed to verify that the system can handle a sustained high load for a period of time.

  • Currently, the following architectures can be tested:

    • Both Intel and AMD CPU platforms (64-bit only)

    • IBM and OpenPOWER Power 8 and Power 9 (ppc64el)

    • ARM64 (ARM64 based Server Models must use a SoC that has been SoC Certified.)

    • IBM s390x

    • RISC-V (when applicable)

The following test units are covered in this category:

cpu/clocktest

Tests the CPU for clock jitter

Category ID:

cpu

Status:

Blocking

Purpose:

Runs a test for clock jitter on SMP machines.

After-suspend:

True

Plugin:

shell

cpu/maxfreq_test

Test that the CPU can run at its max frequency

Category ID:

cpu

Status:

Blocking

Purpose:

<missing purpose>

Description:

Use the Firmware Test Suite (fwts cpufreq) to ensure that the CPU can run at its maximum frequency.

Environment variable:

LD_LIBRARY_PATH, SNAP

User:

root

Plugin:

shell

cpu/topology

Check CPU topology for accuracy between proc and sysfs

Category ID:

cpu

Status:

Blocking

Purpose:

<missing purpose>

Description:

Parses information about CPU topology provided by proc and sysfs and checks that they are consistent.

After-suspend:

True

Plugin:

shell

Disk tests

The following test units are covered in this category:

disk/detect

Gathers information about each disk detected

Category ID:

disk

Status:

Blocking

Purpose:

Uses lsblk to gather information about each disk detected on the system under test.

After-suspend:

True

Plugin:

shell

disk/disk_cpu_load_name

Check of CPU load imposed by {product_slug}

Unit type:

template

Category ID:

disk

Status:

Blocking

From template:

disk/disk_cpu_load_name

Template resource:

device

Template filter:

device.category == ‘DISK’

disk/disk_stress_ng_name

Disk stress-ng test for {product_slug}

Unit type:

template

Category ID:

disk

Status:

Blocking

From template:

disk/disk_stress_ng_name

Template resource:

device

Template filter:

device.category == ‘DISK’

disk/read_performance_name

Disk performance test for {product_slug}

Unit type:

template

Category ID:

disk

Status:

Blocking

After-suspend:

True

Environment variable:

DISK_MDADM_READ_PERF, DISK_NVME_READ_PERF, DISK_READ_PERF

From template:

disk/read_performance_name

Template resource:

device

Template filter:

device.category == ‘DISK’

disk/stats_name

Disk statistics for {product_slug}

Unit type:

template

Category ID:

disk

Status:

Blocking

After-suspend:

True

From template:

disk/stats_name

Template resource:

device

Template filter:

device.category == ‘DISK’ and device.name != ‘’

Ethernet Device tests

The following test units are covered in this category:

ethernet/multi_iperf3_nic_device__index___interface

Multi-NIC Iperf3 stress testing for NIC {interface}

Unit type:

template

Category ID:

ethernet

Status:

Blocking

Environment variable:

TEST_TARGET_IPERF

From template:

ethernet/multi_iperf3_nic_device__index___interface

Template resource:

device

Template filter:

device.category == ‘NETWORK’ and device.interface != ‘UNKNOWN’

Memory tests

  • Proper detection

  • General usage

  • A general stress test is performed to verify that the system can handle a sustained high load for a period of time.

The following test units are covered in this category:

memory/info

Check the amount of memory reported by meminfo against DMI

Category ID:

memory

Status:

Blocking

Purpose:

This test checks the amount of memory which is reported in meminfo against the size of the memory modules detected by DMI.

User:

root

Plugin:

shell

Miscellaneous tests

The following test units are covered in this category:

miscellanea/check_prerelease

Test that the system is not a pre-release version

Category ID:

miscellanea

Status:

Blocking

Purpose:

Test to verify that the system uses production, rather than pre-release, versions of the kernel and the OS.

Plugin:

shell

miscellanea/cpus_are_not_samples

Test DMI data for CPUs

Category ID:

miscellanea

Status:

Blocking

Purpose:

Sanity check of CPU information; fails if CPU is an engineering sample

User:

root

Plugin:

shell

miscellanea/dmitest_server

Test DMI identification data (servers)

Category ID:

miscellanea

Status:

Blocking

Purpose:

Sanity check of DMI system identification data (for servers)

User:

root

Plugin:

shell

miscellanea/efi_boot_mode

Test that system booted in EFI mode

Category ID:

miscellanea

Status:

Blocking

Purpose:

Test to verify that the system booted in EFI mode with Secure Boot active.

Plugin:

shell

miscellanea/get_maas_version

Verify MAAS version used to deploy the SUT

Category ID:

miscellanea

Status:

Blocking

Purpose:

<missing purpose>

Description:

If the system was installed via MAAS from a cert server, the MAAS version used should be contained in /etc/installed-by-maas

Plugin:

shell

miscellanea/ipmi_test

Test IPMI in-band communications

Category ID:

miscellanea

Status:

Blocking

Purpose:

This will run some basic commands in-band against a BMC, verifying that IPMI works. Use of MAAS to deploy the system implicitly tests out-of-band BMC control.

User:

root

Plugin:

shell

miscellanea/kernel_taint_test

Test that kernel is not tainted

Category ID:

miscellanea

Status:

Blocking

Purpose:

Test to verify that the kernel is not tainted by out-of-tree drivers, live patches, proprietary modules, etc.

Plugin:

shell

miscellanea/klog

Run FWTS Kernel Log check

Category ID:

miscellanea

Status:

Blocking

Purpose:

Run Firmware Test Suite (fwts) klog tests.

Environment variable:

PLAINBOX_SESSION_SHARE

User:

root

Plugin:

shell

miscellanea/maas_user_check

Verify BMC user called ‘maas’ was successfully created with administrative privileges

Category ID:

miscellanea

Status:

Blocking

Purpose:

This will verify that the maas user was successfully created with admin privileges

User:

root

Plugin:

shell

miscellanea/olog

Run FWTS OLOG check on ppc64el

Category ID:

miscellanea

Status:

Blocking

Purpose:

<missing purpose>

Description:

Run Firmware Test Suite (fwts) olog tests (ppc64el only).

Environment variable:

PLAINBOX_SESSION_SHARE

User:

root

Plugin:

shell

miscellanea/oops

Run FWTS OOPS check

Category ID:

miscellanea

Status:

Blocking

Purpose:

<missing purpose>

Description:

Run Firmware Test Suite (FWTS) oops tests.

Environment variable:

PLAINBOX_SESSION_SHARE

User:

root

Plugin:

shell

Non-device specific networking tests

  • Ethernet devices are tested at their full speed and must show a minimum of 80% of advertised maximum speed.

  • High Speed network devices (40 Gb/s and faster must also meet this requirement, however additional configuration and testing steps may be required)

  • CNAs and Infiniband devices must at least pass in network mode.

The following test units are covered in this category:

networking/predictable_names

Verify that all network interfaces have predictable names.

Category ID:

networking

Status:

Blocking

Purpose:

Verify that all network interfaces have predictable names.

Plugin:

shell

NVDIMM device tests

The following test units are covered in this category:

nvdimm/health

Report health state of installed NVDIMM devices

Category ID:

nvdimm

Status:

Blocking

Purpose:

This test will do a quick health check of installed NVDIMM devices.

User:

root

Plugin:

shell

nvdimm/info

Verify that NVDIMMs are discovered

Category ID:

nvdimm

Status:

Blocking

Purpose:

This test will probe any installed NVDIMMs and list them and their capacities.

User:

root

Plugin:

shell

Power Management tests

The following test units are covered in this category:

power-management/rtc

Test that RTC functions properly (if present)

Category ID:

power-management

Status:

Blocking

Purpose:

Verify that the Real-time clock (RTC) device functions properly, if present.

After-suspend:

True

Environment variable:

RTC_DEVICE_FILE

User:

root

Plugin:

shell

USB tests

  • Externally accessible physical USB ports are tested to ensure operability.

  • USB 2.0/3.x

The following test units are covered in this category:

usb/storage-server

Test USB 2.0 or 1.1 ports

Category ID:

usb

Status:

Blocking

Purpose:

<missing purpose>

Description:

Tests USB 2.0 or 1.1 ports on a system by doing write/read/compare tests on randomly created data. It requires that a USB stick is plugged into an available USB port before running the certification suite.

After-suspend:

True

User:

root

Plugin:

shell

usb3/storage-server

Test USB 3.0 or 3.1 ports

Category ID:

usb

Status:

Blocking

Purpose:

Tests USB 3.0 ports on a system by doing write/read/compare tests on randomly created data. It requires that a USB stick is plugged into an available USB port before running the certification suite. Additionally, it will only work with USB sticks and ports rated for USB 3.0 speeds or faster.

After-suspend:

True

User:

root

Plugin:

shell

Virtualization tests

(Only applies to Ubuntu on Bare Metal and limited LPAR scenarios.)

  • Virtualization extensions

  • Running an Ubuntu image on KVM

The following test units are covered in this category:

virtualization/verify_lxd

Verify LXD container launches

Category ID:

virtualization

Status:

Blocking

Purpose:

Verifies that an LXD container can be created and launched

Environment variable:

LXD_ROOTFS, LXD_TEMPLATE

Plugin:

shell

virtualization/verify_lxd_vm

Verify LXD Virtual Machine launches

Category ID:

virtualization

Status:

Blocking

Purpose:

Verifies that an LXD Virtual Machine can be created and launched

Environment variable:

KVM_IMAGE, LXD_TEMPLATE

Plugin:

shell

Non-blocking

These items will not block certification if they fail. Any failures should be referred to the Certification Team so that we can investigate and file bugs where appropriate.

  • Installation Methods

    • ISO Installation

  • Storage

    • Advanced RAID levels (10, 15, 50, etc)

    • VROC

    • External Storage

      • iSCSI

      • FC, FCoE

    • Storage Management Tools

      • Storage management tools packaged and documented for Ubuntu

      • Storage management tools should be fully functional on Ubuntu (executable from within Ubuntu)

  • Networking

    • SmartNICs

    • Infiniband

  • System Management

    • Redfish

      Redfish should be tested where supported, failures should be referred to the Certification Team, but IPMI can be used if Redfish fails.

  • Firmware Updates

    • Firmware update tools packaged for Ubuntu

    • Firmware updates possible from within the Ubuntu OS

  • TPM 2.0 Devices

  • Input devices

    • External keyboard (basic functionality)

CPU tests

The following test units are covered in this category:

cpu/arm64_vfp_support_platform

Validate that the Floating Point Unit is running on {platform} device

Unit type:

template

Category ID:

cpu

Status:

Non-blocking

Description:

Validate that the Floating Point Unit is running on {platform} device.

From template:

cpu/arm64_vfp_support_platform

Template resource:

cpuinfo

Template filter:

cpuinfo.platform == ‘aarch64’

cpu/armhf_vfp_support_platform

Validate that the Vector Floating Point Unit is running on {platform} device

Unit type:

template

Category ID:

cpu

Status:

Non-blocking

Description:

Validate that the Vector Floating Point Unit is running on {platform} device.

From template:

cpu/armhf_vfp_support_platform

Template resource:

cpuinfo

Template filter:

cpuinfo.platform == ‘armv7l’

cpu/cpufreq_test-server

cpufreq scaling test

Category ID:

cpu

Status:

Non-blocking

Purpose:

Comprehensive testing of CPU scaling capabilities and directives via cpufreq.

User:

root

Plugin:

shell

cpu/cstates

Run C-States tests

Category ID:

cpu

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Uses the Firmware Test Suite (fwts) to test the power saving states of the CPU.

Environment variable:

LD_LIBRARY_PATH, PLAINBOX_SESSION_SHARE, SNAP

User:

root

Plugin:

shell

cpu/cstates_results.log

Attach C-States test log

Category ID:

cpu

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches the FWTS desktop diagnosis results log to the submission.

Plugin:

attachment

cpu/maxfreq_test-log-attach

Attach CPU max frequency log

Category ID:

cpu

Status:

Non-blocking

Purpose:

Attaches the log generated by cpu/maxfreq_test to the results submission.

Plugin:

attachment

Disk tests

The following test units are covered in this category:

disk/fstrim_name

Filesystem TRIM check for {product_slug}

Unit type:

template

Category ID:

disk

Status:

Non-blocking

From template:

disk/fstrim_name

Template resource:

device

Template filter:

device.category == ‘DISK’

disk/smart_name

Test SMART capabilities for {product_slug}

Unit type:

template

Category ID:

disk

Status:

Non-blocking

From template:

disk/smart_name

Template resource:

device

Template filter:

device.category == ‘DISK’

Ethernet Device tests

The following test units are covered in this category:

ethernet/ethertool_check_device__index___interface

ethtool check for NIC {interface}

Unit type:

template

Category ID:

ethernet

Status:

Non-blocking

From template:

ethernet/ethertool_check_device__index___interface

Template resource:

device

Template filter:

device.category == ‘NETWORK’ and device.interface != ‘UNKNOWN’

ethernet/info_automated_server

Provide information about detected ethernet devices

Category ID:

ethernet

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

This job provides detailed information about detected ethernet devices.

User:

root

Plugin:

shell

Firmware tests

The following test units are covered in this category:

firmware/fwts_server

Run FWTS Server Cert selected tests.

Category ID:

firmware

Status:

Non-blocking

Purpose:

Run Firmware Test Suite (fwts) Server Cert selected tests.

Environment variable:

PLAINBOX_SESSION_SHARE

User:

root

Plugin:

shell

Informational tests

The following test units are covered in this category:

config_file_attachment

Attach a copy of /etc/xdg/canonical-certification.conf

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches the config file for debugging config issues

Plugin:

attachment

cpuinfo_attachment

Attach a copy of /proc/cpuinfo

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches a report of CPU information

Plugin:

attachment

dkms_info_attachment

Attaches json dumps of installed dkms package information.

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches json dumps of installed dkms package information.

Plugin:

attachment

dmesg_attachment

Attach a copy of dmesg or the current dmesg buffer to the test results.

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches a copy of /var/log/dmesg or the current dmesg buffer to the test results

User:

root

Plugin:

attachment

dmi_attachment

Attach a copy of /sys/class/dmi/id/*

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches info on DMI

Plugin:

attachment

dmidecode_attachment

Attach output of dmidecode

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches dmidecode output

User:

root

Plugin:

attachment

efi_attachment

Attaches firmware version info

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches the firmware version

User:

root

Plugin:

attachment

info/buildstamp

Attaches the buildstamp identifier for the OS

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches the buildstamp identifier for the OS

Plugin:

attachment

info/disk_partitions

Attaches info about disk partitions

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches information about disk partitions

User:

root

Plugin:

attachment

info/hdparm_name.txt

Attaches info from hdparm about {name}

Unit type:

template

Category ID:

info

Status:

Non-blocking

Description:

<missing description>

From template:

info/hdparm_name.txt

Template resource:

device

Template filter:

device.category == ‘DISK’

info/kvm_output

Attaches console log from the kvm_check_vm test

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches the debug log from the virtualization/kvm_check_vm test to the results submission.

Plugin:

attachment

info/network-config

attach network configuration

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

<missing description>

Plugin:

attachment

info/secure-boot-check

Check secure boot state

Category ID:

info

Status:

Non-blocking

Purpose:

Output whether secure boot is enabled or disabled

Plugin:

attachment

installer_debug.gz

Attach the installer’s debug log for diagnostic purposes.

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches the installer debug log if it exists.

User:

root

Plugin:

attachment

kernel_cmdline_attachment

Attach a copy of /proc/cmdline

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches the kernel command line used to boot

Plugin:

attachment

lsblk_attachment

Attach information about block devices and their mount points.

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches disk block devices mount points

Plugin:

attachment

lshw_attachment

Attach lshw output

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches lshw output

User:

root

Plugin:

attachment

lsmod_attachment

Attach a list of currently running kernel modules

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches a list of the currently running kernel modules.

Plugin:

attachment

lspci_attachment

Attach a list of PCI devices

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches very verbose lspci output.

Plugin:

attachment

lspci_network_attachment

Attach very verbose lspci output for device information.

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches very verbose lspci output (with central database Query).

Plugin:

attachment

lstopo_verbose_attachment

Attach the output of lstopo

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches the system topology as presented by the lstopo command

Plugin:

attachment

lstopo_visual_attachment

Attach the output of lstopo command to present system topology.

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches the system topology as presented by the lstopo command

Plugin:

attachment

lsusb_attachment

Attach output of lsusb

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches a list of detected USB devices.

After-suspend:

True

User:

root

Plugin:

attachment

meminfo_attachment

Attach copy of /proc/meminfo

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches info on system memory as seen in /proc/meminfo.

Plugin:

attachment

modinfo_attachment

Attach modinfo information

Category ID:

info

Status:

Non-blocking

Purpose:

Attaches modinfo information for all currently loaded modules

Plugin:

attachment

modprobe_attachment

Attach the contents of /etc/modprobe.*

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches the contents of the various modprobe conf files.

User:

root

Plugin:

attachment

modules_attachment

Attach the contents of /etc/modules

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches the contents of the /etc/modules file.

Plugin:

attachment

sysctl_attachment

Attach sysctl configuration files.

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches the contents of various sysctl config files.

User:

root

Plugin:

attachment

sysfs_attachment

Attach detailed sysfs property output from udev

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches a report of sysfs attributes.

Plugin:

attachment

udev-summary_attachment

Attach a summary of udev devices

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches a summary of devices found via udev

Plugin:

attachment

udev_attachment

Attach dump of udev database

Category ID:

info

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

Attaches a dump of the udev database showing system hardware information.

Plugin:

attachment

Miscellaneous tests

The following test units are covered in this category:

miscellanea/apport-directory

Check the /var/crash directory’s status and contents.

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Test that the /var/crash directory doesn’t contain anything. Lists the files contained within if it does, or echoes the status of the directory (doesn’t exist/is empty).

Plugin:

shell

miscellanea/bmc_info

Gather BMC identification info

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

This will gather some information about the BMC itself for diagnostic purposes. This will not work on non-IPMI systems like AMT and blade/sled type systems.

User:

root

Plugin:

shell

miscellanea/cpuid

Attempt to identify CPU family (x86/amd64 only)

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Attempts to identify the CPU family of an x86/amd64 processor

User:

root

Plugin:

shell

miscellanea/debsums

Check the MD5 sums of installed Debian packages

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Verify installed Debian package files against MD5 checksum lists from /var/lib/dpkg/info/*.md5sums.

User:

root

Plugin:

shell

miscellanea/efi_pxeboot

Test that system booted from the network

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Test to verify that the system booted from the network. Works only on EFI-based systems.

User:

root

Plugin:

shell

miscellanea/get_make_and_model

Gather info on the SUT’s make and model

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Retrieve the computer’s make and model for easier access than digging through the dmidecode output.

User:

root

Plugin:

shell

miscellanea/klog_results.log

Attach FWTS kernel log results for submission.

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Attaches the FWTS klog results log to the submission

Plugin:

attachment

miscellanea/olog_results.log

Attach the FWTS olog results log to the submission.

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Attaches the FWTS olog results log to the submission

Plugin:

attachment

miscellanea/oops_results.log

Attach the FWTS oops results for submission.

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Attaches the FWTS oops results log to the submission

Plugin:

attachment

miscellanea/reboot_firmware

Test that system supports booting into firmware setup utility

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Test that the system supports rebooting into the firmware setup utility.

Plugin:

shell

miscellanea/secure_boot_mode

Test that system booted with Secure Boot active

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Test to verify that the system booted in Secure Boot active.

Plugin:

shell

miscellanea/sosreport

Generate baseline sosreport

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

Generates a baseline sosreport of logs and system data

User:

root

Plugin:

shell

miscellanea/sosreport_attachment

Attach the baseline sosreport file

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

<missing description>

User:

root

Plugin:

attachment

miscellanea/submission-resources

Check that data for a complete result are present

Category ID:

miscellanea

Status:

Non-blocking

Purpose:

<missing purpose>

Description:

A meta-job that verifies the data necessary for a complete result submission are present. Failure indicates that the results are incomplete and may be rejected.

Plugin:

shell

Non-device specific networking tests

The following test units are covered in this category:

networking/ntp

Test NTP server synchronization capability.

Category ID:

networking

Status:

Non-blocking

Purpose:

Test to see if we can sync local clock to an NTP server

After-suspend:

True

User:

root

Plugin:

shell

USB tests

The following test units are covered in this category:

usb/detect

Display USB devices attached to SUT

Category ID:

usb

Status:

Non-blocking

Purpose:

Detects and shows USB devices attached to this system.

After-suspend:

True

Plugin:

shell

Q & A

What do you mean by MAAS Compatibility?

In order to be listed as certified, a system is required to have been deployed using Ubuntu’s Metal as a Service (MAAS) tool. This is determined by using MAAS to enlist, commission, and deploy the OS and certification tools onto the target systems to be tested. Additionally, there should be as little human intervention as necessary to perform this task, such as the user manually needing to power the machine on during the initial enlistment phase.

Does changing the speed of processors require a new certificate?

No. Only changing the CPU family would require retesting and issuing a new certificate.

What about non-x86 processors?

Any architecture supported by Ubuntu may be certified. At this time, this includes x86_64, ARM, ARM64, Power 8, Power 9, s390x, and RISC-V.

Complete Test Plan

The Hardware Certification Testing Coverage aims to test as thorough as possible and ensure that systems and their components are compatible and function well with Ubuntu and Ubuntu Tools; however, it is not possible for this scope of testing to catch issues that are unique to a system or platform or may appear during the hardware development lifecycle. For example, tools to manage firmware, storage configurations, etc., and their usage vary by vendor and platform, but end users expect this functionality. This testing is not done by the Ubuntu Server testing tools and and should be tested by the Partner on a regular basis.

Because of this, please work with your Partner Engineer to outline and document those tests that are not covered by the standard tooling. Partners are strongly encouraged to integrate the Ubuntu test tools and Ubuntu OS into their own processes for OS and Hardware Validation. Your Partner Engineer will gladly help assist you in any way to make this possible.