Ubuntu does not impose hardware requirements beyond the requirements of the Linux kernel and the GNU tool-sets. Therefore, any architecture or platform to which the Linux kernel, libc, gcc, etc. have been ported, and for which an Ubuntu port exists, can run Ubuntu.
Rather than attempting to describe all the different hardware configurations which are supported for 64-bit ARM, this section contains general information and pointers to where additional information can be found.
Ubuntu 16.04 supports six major architectures and several variations of each architecture known as “flavors”. One other architecture (IBM/Motorola PowerPC) has an unofficial port.
Architecture | Ubuntu Designation | Subarchitecture | Flavor |
---|---|---|---|
Intel x86-based | i386 | ||
AMD64 & Intel 64 | amd64 | ||
ARM with hardware FPU | armhf | multiplatform | generic |
multiplatform for LPAE-capable systems | generic-lpae | ||
64bit ARM | arm64 | ||
IBM/Motorola PowerPC | powerpc | PowerMac | pmac |
Power Systems | ppc64el | IBM POWER8 or newer machines | |
64bit IBM S/390 | s390x | IPL from VM-reader and DASD | generic |
ARM systems are much more heterogeneous than those based on the i386/amd64-based PC architecture, so the support situation can be much more complicated.
The ARM architecture is used mainly in so-called “system-on-chip” (SoC) designs. These SoCs are designed by many different companies, often with vastly varying hardware components even for the very basic functionality required to bring the system up. Older versions of the ARM architecture have seen massive differences from one SoC to the next, but ARMv8 (arm64) is much more standardised and so is easier for the Linux kernel and other software to support.
Server versions of ARMv8 hardware are typically configured using the Unified Extensible Firmware Interface (UEFI) and Advanced Configuration and Power Interface (ACPI) standards. These two provide common, device-independent ways to boot and configure computer hardware. They are also common in the x86 PC world.
The following platforms are known to be supported by Ubuntu/arm64 in this release. There is only one kernel image, which supports all the listed platforms.
The APM Mustang was the first Linux-capable ARMv8 system available. It uses the X-gene SoC, which has since also been used in other machines. It is an 8-core CPU, with ethernet, USB and serial. A common form-factor looks just like a desktop PC box, but many other versions are expected in the future. Most of the hardware is supported in the mainline kernel, but at this point USB support is lacking in the Xenial kernel.
Juno is a capable development board with a 6-core (2xA57, 4xA53) ARMv8-A 800Mhz CPU, Mali (T624) graphics, 8GB DDR3 RAM, Ethernet, USB, Serial. It was designed for system bring-up and power testing so is neither small nor cheap, but was one of the first boards available. All the on-board hardware is supported in the mainline kernel and in Xenial.
The ThunderX 1S Reference Platform is a 1U rack mount chassis with a
Micro-ATX single socket motherboard supporting 10GE & 40GE
networking, x8 PCIe, 4 HDD drive slots and 8 DDR3 memory slots. The
ThunderX 2S Reference Platform is a 2U rack mount chassis with a ½ SSI
dual socket motherboard supporting 10GE & 40GE networking, x8 PCIe,
6 HDD drive slots and 8 DDR4 memory slots. The 2U chassis can
accommodate 4 sleds and each of the sleds has a dual 48 core socket
design (96 cores per sled). The Xenial kernel has support
for nearly all on-board hardware. Certain exceptions, such as the IPMI
system interface (/dev/ipmi
), may be supported in a
future Xenial update.
When using debian-installer
on non-UEFI systems, you may have to manually
make the system bootable at the end of the installation, e.g. by
running the required commands in a shell started from within
debian-installer
. flash-kernel knows how to set up an X-Gene system booting
with U-Boot.
The multiplatform support in the arm64 Linux kernel may also allow
running debian-installer
on arm64 systems not explicitly listed above. So
long as the kernel used by debian-installer
has support for the target
system's components, and a device-tree file for that target is
available, a new target system may work just fine. In these
cases, the installer can usually provide a working installation,
and so long as UEFI is in use, it should be able to make the
system bootable as well. If UEFI is not used you may also need to
perform some manual configuration steps to make the system
bootable.
Multiprocessor support — also called “symmetric multiprocessing” or SMP — is available for this architecture. Having multiple processors in a computer was originally only an issue for high-end server systems but has become common in recent years nearly everywhere with the introduction of so called “multi-core” processors. These contain two or more processor units, called “cores”, in one physical chip.
The standard Ubuntu 16.04 kernel image has been compiled with SMP support. It is also usable on non-SMP systems without problems.
Ubuntu's support for graphical interfaces is determined by the underlying support found in X.Org's X11 system, and the kernel. Basic framebuffer graphics is provided by the kernel, whilst desktop environments use X11. Whether advanced graphics card features such as 3D-hardware acceleration or hardware-accelerated video are available, depends on the actual graphics hardware used in the system and in some cases on the installation of additional “firmware” images (see Section 2.2, “Devices Requiring Firmware”).
Nearly all ARM machines have the graphics hardware built-in, rather than being on a plug-in card. Some machines do have expansion slots which will take graphics cards, but that is a rarity. Hardware designed to be headless with no graphics at all is quite common. Whilst basic framebuffer video provided by the kernel should work on all devices that have graphics, fast 3D graphics invariably needs binary drivers to work. The situation is changing quickly but at the time of the xenial release free drivers for nouveau (Nvidia Tegra K1 SoC) and freedreno (Qualcomm Snapdragon SoCs) are available in the release. Other hardware needs non-free drivers from 3rd parties.
Details on supported graphics hardware and pointing devices can be found at http://xorg.freedesktop.org/. Ubuntu 16.04 ships with X.Org version 7.7.
Almost any network interface card (NIC) supported by the Linux kernel should also be supported by the installation system; drivers should normally be loaded automatically.
On 64-bit ARM, most built-in Ethernet devices are supported and modules for additional PCI and USB devices are provided.