Here are a few Buildroot tricks I use to develop and test my packages. This post will likely evolve over the years to come. For the basics, please see my post Buildroot Development Checklist. It covers how to use the check-package and test-pkg tools shipped with Buildroot. Tip: if stuck, always check the Buildroot documentation! introduction I often need to rebuild from scratch to verify fundamental changes to the structure of my embedded systems.

Building Emacs with JIT

- 3 mins read
Very brief intro to building GNU Emacs from GIT, with GCC JIT enabled to greatly speed up our favorite editor, GNU Emacs! Perquisites You need a lot of development packages installed to check out and build Emacs. How to install these are outside the scope of this blog post. The output of the configure script and some intuition is usually sufficient. On Debian, Ubuntu, or Linux Mint, systems at least the following is needed:

Migrating from Terminator to Kitty

- 2 mins read
Daniel Lipovetsky’s Typometer results. Ever since I first learned about Terminator I’ve been a huge fan! It’s a great replacement for the standard Gnome terminal with its built-in support for horizontal and vertical splits. It’s not a race car though … like Gnome terminal it’s built around libvte. So on a bad day of clashing with Ubuntu, GDM, systemd and the new handling of capabilities, two of my colleagues went all-in on Alacritty and now swear by it!

Fast init for Linux systems

- 14 mins read
Finit is an alternative to SysV init and systemd, originally reverse engineered from the EeePC fastinit by Claudio Matsuoka — “gaps filled with frog DNA …” Latest release available on GitHub Features Runlevels, defined per service One-shot tasks, services (daemons), or SysV init start/stop scripts Runparts and /etc/rc.local support Process supervision similar to systemd Sourcing environment files Conditions for network/process/custom dependencies Pre/Post script actions Tooling to enable/disable services Optional built-in getty Optional built-in watchdog, with support for hand-over to watchdogd Built-in support for Debian/BusyBox /etc/network/interfaces, automatically calls ifup/ifdown Cgroups v2, both configuration and monitoring in initctl top Plugin support for customization Proper rescue mode with bundled sulogin for protected maintenance shell (optional) Blog Posts Some of these feature are presented below, for more, see the online documentation and the following blog posts:

HowTo play with SNMP

- 2 mins read
This mini HowTo describes how to use the SNMP client tools to retrieve human readable information from devices running an SNMP daemon. In the examples below mini-snmpd is used as the daemon and as client both the command line net-snmp tool and the snmpB GUI are used. Personally I use both Ubuntu and Debian, so the tools I use to download the clients will reflect that. See your respective UNIX distro’s help pages for how to install these client tools in your operating system.

Because I always forget, here’s a reminder to myself on how to use git format-patch and git send-email from the command line.

The following process applies to many other mailing-list based projects as well, with local differences in helper scripts.

Multicast HowTo

- 13 mins read
Introduction This HowTo attempts to give some insight into the basics of setting up multicast routing. Both static multicast routing, with SMCRoute, and dynamic multicast routing, with mrouted and pimd. For some use-cases, in particular link-local multicast, it may not be possible to use multicast routing, then I recommend trying out: Bridging networks, see bridge(8) or Linux bridge - how it works igmproxy, mcproxy, or OpenVPN in Layer-2, bridged mode Make sure to check out the FAQ for the most common problems.

Finit custom connectivity check

- 3 mins read

This post shows how you can extend Finit with your own conditions. The example we will use is a simple Internet connectivity checker. When it triggers we start BusyBox ntpd which, if started with any other type of condition (none, default route, etc.) may get stuck trying to resolve pool.ntp.org.

I believe there is a gap in the market between BusyBox init and systemd. In particular in the embedded space. This blog post shows how easily it is to get up and running quickly with FastInit (Finit)!

I’m a really bad salesman, and an even worse writer, so instead of trying to convince you with my poor English, I’ve made a demo. It is a Buildroot external that can be used to add Finit to your own projects.

For details, look here: https://github.com/troglobit/br2-finit-demo, try out the latest build in Qemu.

Finit bootstrap

Finit bootstrap

Remap Prev/Next on ThinkPad

- 1 min read
I still use my awesome little ThinkPad X200, in fact I now have more of them and even a few X201’s. They are truly the best machines I’ve ever used! :-) One annoying thing though, when going back to these traditional ThinkPad keyboards is the prev/next keys next to the arrow keys. On modern ones they are PgUp/PgDn and I recently learned how to elegantly remap them in X. Note the difference, below, to the original at ThinkWiki.