The Linux kernel feature known as ‘kexec‘ allows you to boot from the currently running kernel into a new kernel – effectively turning a Linux distribution into a feature-rich bootloader. This shouldn’t be confused with virtualisation technologies that allow you to run Linux as a guest. This capability has been around since 2005 (2.6.13) and …
Category: Linux
Build and Boot U-Boot and Linux on a Raspberry Pi 3 Model B+
With more than 30 million units in existence, the Raspberry Pi provides for an accessible and low-cost way to play with an ARMv8 embedded device using the latest and greatest upstream sources. In this post we’ll walk through the steps required to build U-Boot, the Linux kernel and a filesystem, as well as the steps …
i.MX6 UL Bus Encryption Engine (BEE) in the Linux Kernel
The ubiquitous i.MX6 Ultra Lite is high performance processor that offers a wide range of hardware security features such as ARM TrustZone, High Assurance Boot (HAB) and a Cryptographic Acceleration and Assurance Module (CAAM). The exact features and details depend on the specific part and are documented in detail in the Security Reference Manual (locked …
Discovering CPU features from userspace with ELF_HWCAP
As hardware architectures evolve they introduce new features – many of these features are abstracted away by the kernel yet result in some benefit to the user such as improved security or performance. However some features, like the introduction of a new CPU instruction can only benefit user-space if user-space is able to determine that …
The indirection of outb, iowrite and friends
The {in,out}{b,w,l} functions of the kernel provide the mechanism for reading from and writing to what we may describe as port I/O (PIO). The API is not architecture specific and thus present in most architectures and used by a wide variety of device drivers. However the mechanism to support PIO varies widely between architectures and …