While searching for your next GNU/Linux enabled computer, you may have found that some vendors such as Dell, HP and Lenovo sell a selection of desktops and laptops with Ubuntu pre-installed. In fact, Ubuntu is certified on an ever-growing list of hardware. But what does it mean exactly for such a device to be “Ubuntu certified”, and how does this happen? Let’s find out.
Certified for Ubuntu
A computer is made of many different components, from the CPU to the touchpad, the sound card to the wireless module. In order to provide the best user experience, each of these components has to work well on its own, and all of them have to play well together. If you’ve ever installed GNU/Linux on a recent computer or a device with very specific components, you know it’s rarely an easy task. After installing your favorite Linux distribution on your brand new laptop, you log in and discover that the Bluetooth doesn’t work so you cannot use your wireless mouse. Later on, you close your laptop lid, put it in your bag and when you reopen it, you find out the audio is not available anymore and you have to reboot to listen to your music!
The Ubuntu certification program ensures that, for a given computer, all of its components work as expected and the user can enjoy the best experience “out of the box”. It is a guarantee of quality, functionality and maintenance, as Ubuntu certified devices are based on Long Term Support (LTS) releases and therefore receive updates for five years.
Canonical works closely with hardware partners to enable Ubuntu on their devices. The goal is two-fold:
- to create what we call an “OEM image”, a disk image which will be used in factory to pre-install the devices with Ubuntu,
- to ensure the work that has been done to create the OEM image is upstreamed so that the components that have been enabled will work fine with later releases of Ubuntu (the “stock” image you can download on ubuntu.com).
Why do we need an OEM image?
You might wonder why we don’t use the “stock” Ubuntu image on Ubuntu certified hardware. There are two main reasons:
- Our hardware partners may need specific software installed by default or features added on their devices. For instance, Dell devices come with a specific disk partitioning and with the Dell Recovery tool installed by default, allowing their users to be able to perform system recovery and to create a recovery media, respectively.
- Recent devices may require drivers that have not made it to the upstream Linux kernel yet or that are only available on a newer Linux kernel that may not have long term support. Having a dedicated OEM kernel provides more flexibility: we can cherry-pick specific additions from the latest mainline kernel (support for newer technology, improvements for already supported components, etc.) while keeping the stability of a long term supported one.
Behind an OEM image
So what does it take to create an image for a specific device? Different teams within Canonical are working together throughout all phases of a project to bring Ubuntu to a given device and ensure its components will be well supported with the future releases of Ubuntu.
But these teams stand on the shoulders of giants. Nothing would be possible without the hard work of the Linux community that creates and maintains many of the bricks that Ubuntu Linux is built on, as well as Canonical teams such as the Desktop team, Foundations team and Security team, who work together to bring all of this together in the form of the stock Ubuntu image.
Field engineers are constantly in touch with component vendors and manufacturers to track issues related to hardware drivers as well as firmwares (BIOS, UEFI). They help identify and investigate problems early on and help testing and debugging new firmwares and drivers releases.
Hardware enablement engineering
Hardware enablement (HWE) engineers are in charge of building and maintaining the OEM kernel that contains drivers for new hardware, new features and bug fixes that are not necessarily available in the generic kernel. They also ensure anything that is added into the OEM kernel ends up in the generic kernel so that everyone can benefit from these improvements with a later stock Ubuntu image. Finally, the team develops and maintains Firmware Test Suite (FWTS), a free and open source program that identifies BIOS, UEFI, ACPI and many other errors and provides feedback on how to fix them.
When a new device is enabled with Ubuntu, the mainstream team carefully crafts an image from the current Long Term Support (LTS) version that includes features specific to our partner (the Dell Recovery tool and partitioning mentioned earlier for instance), the proper version of the OEM Linux kernel and other tweaks and fixes to optimize the release for that specific device. They also set up automated sanity checks so that every image released is tested for defects before passing it to the quality assurance team.
Once the OEM image is ready, the quality assurance (QA) team kicks in and runs a certification test suite using Checkbox, a free and open source testing tool developed and maintained by the Certification team. The test suite allows the team to run hundreds of tests to make sure things like CPU, graphics card, wireless, touchpad, suspend and resume features all work as expected. In case of issues during the tests, bug reports are opened and assigned to the right teams along with all the information engineers may need to reproduce, debug and fix the problem. Once fixes are provided, a new image is generated and tested until all the issues are ironed out.
Certification is a complex beast and the Certification team handles all of it! First, the Certification team develops and maintains different tools used internally, including Checkbox mentioned earlier and other software to automate device provisioning and testing. The team acts as the gatekeeper for certified devices, reviewing and issuing the actual certificates for the pre-installed versions of Ubuntu (basically, if you see the Ubuntu logo or “Ubuntu certified” on a website selling computers, it’s thanks to the Certification team’s stamp of approval). It is also in charge of continuous automated testing of certified devices in our lab to ensure the latest Linux updates work well. Last but not least, the team helps testing certified devices with more recent stock Ubuntu versions (a process internally called “N+1”) to ensure the fixes made for certified devices are upstreamed and made available to everyone.
No project could be completed without good management. Project managers make sure each device enablement project keeps on track, that the different teams (both internal and external) are updated with the information required to meet the deadlines and go on to the next phase, that a solution is found for each bug raised, and more generally that the device gets enabled and the image sent to the factory to be pre-installed on the devices on time.
The “Ubuntu certified experience” for everyone! (with certified hardware)
As mentioned by Martin Wimpress’ article “What’s new in Ubuntu Desktop 20.04 LTS?”, starting with Ubuntu Desktop 20.04 LTS, it is now possible to obtain a certified device experience by installing the general release of Ubuntu. When installed on certified hardware, the device-specific enablement will be automatically installed and configured, just as it would be in the preloaded factory images.
This is a good news if:
- you already own such a device, but got it with another operating system pre-installed and would like to replace it with Ubuntu,
- you’d like to get a new device with Ubuntu pre-installed, but this option is not available in your country (some vendors may decide to only sell their devices with Ubuntu pre-installed in certain countries).
Wrapping things up
We just scratched the surface on what it means to certify Ubuntu Linux on a device, and we only discussed desktop and laptop computers. Every year, Canonical enables hundreds of devices so that users can get a great Ubuntu experience out of the box, not only on the desktop side but also on the server side as well as on IoT devices. This process also brings better Linux support overall for a multitude of components, which is always good for the Linux community at large.