Title: ferdios-greeter Date: 2026-08-24 Author: Viktor “Vik” Bugov Section: Technology Summary: Early boot debugging and fancy graphics ## Early boot A typical boot on ferdiOS: 1. bootloader (white Google screen, see video) 2. kernel load 3. initramfs 4. init system (dinit) 5. compositor On Google Pixel3a, this takes around 6 seconds. If something goes wrong in any of these stages, it may be difficult to debug: 1. display or touchscreen not initialized yet 2. no keyboard 3. no networking 4. no visual indication that something went wrong ## ferdios-greeter We developed a program called ferdios-greeter that runs very early in the boot process (stage 3). It runs 500ms after the kernel has loaded. In the video above, ferdios-greeter adopts the framebuffer from the bootloader, and transitions into our own animated scene. The greeter has the following tasks: 1. Show visuals as early as possible 2. Provide a rescue/emergency shell that works with a touchscreen 3. Monitor potential issues (scan kernel logs) 4. Configure USB0 networking 5. Potentially request passcode from user for data decryption The greeter goes into 'emergency mode' automatically when it notices there is something wrong with the boot. So, instead of the device seemingly doing nothing, it can detect there is something wrong, and provide the user with options to investigate potential issues. The debug menu(s) can also be triggered by holding the "volume up" key during boot.

on-screen keyboard, and a fully functional terminal.

Shortcuts to commands to enter into that terminal.

Enable USB0 from the UI.

The greeter survives the rootfs mount pivot at the end of initramfs, so that early init system boot problems (dinit) will still yield the greeter's emergency screen, with a functional terminal (and dropbear daemon). ferdios-greeter also runs on desktop x86_64, so that various menus, and scenes can be developed without having access to a device. ## Fancy graphics If nothing goes wrong, a boot animation plays. These boot animations are *scenes* - configurable by the user, like plymouth - but more advanced, as this is a 2D renderer. The video above showcases a physics engine that dynamically feeds kernel log lines into the scene. The downside of ferdios-greeter is that it is written in C, so adding a new scene is not super trivial (compared to say QML). Nonetheless, we expect many more interesting loading screens to be made in the future. Here is what it looks like on desktop (with some mocked text)