Keeping Track of Time with Systemd

Nearly all smart devices obtain and keep track of time – it’s something that ‘just works’ and something which we often take for granted. Yet under-the-hood there is a surprising amount of complexity – software needs to obtain an accurate external source of time (e.g. NTP), it needs to handle drift and gradual synchronisation between …

Xmas Charity Fundraiser 2021

This Xmas the Good Penguin is raising money for The Forever Friends Appeal – the official NHS charity for the Royal United Hospital (RUH) in Bath. The money we raise will go to the newborn intensive care unit (NICU) to provide state-of-the-art treatment, diagnostic equipment, and to support families at one of the most vulnerable …

An overview of OpenSBI

Thanks to BeagleBoard.org, we’ve recently received a pre-production beta version of the BeagleV StarLight development board. It’s an affordable Linux platform that’s truly open source with it’s software, hardware design and RISC-V instruction set architecture all made available under free and open licenses. When we booted the board for the first time we noticed some …

An overview of PSCI

If you boot a 64-bit kernel on an ARMv8-A platform, you’ll probably notice some output relating to PSCI. In this post, we’re going to explore what this is and why it’s there. The Power State Coordination Interface (PSCI) is an ARM standard that describes a software interface for power management between an operating system (not …

5 Serial Automation Gotchas

Automated tests that make use of interactive consoles are commonplace. Whether it’s a Linux console over a serial port or a proprietary CLI over a network socket – they require little in terms of hardware yet give access to lots of functionality. However writing a reliable automated test can be more challenging and time consuming …

Flattened uImage Tree (FIT) Images

You’re probably familiar with the steps required to boot Linux from U-Boot: you first load several binaries into memory, perhaps a device tree, a kernel, maybe even an initrd. You then invoke a command such as bootm or booti with arguments providing memory addresses for the binaries you’ve just loaded. However there is a much …

Yocto Security Hardening: CVEs

The volume and complexity of the software running in embedded devices is not only astonishing but ever increasing – yet each additional line of code has the potential to introduce a security vulnerability. An attacker may only need to exploit one single vulnerability for a bad outcome to occur. Therefore the obvious way to reduce …