DEV Community

Cover image for Build Embedded Debian Web Runtime with the Power of Isar
Jani Hautakangas
Jani Hautakangas

Posted on

Build Embedded Debian Web Runtime with the Power of Isar

Originally posted on Medium


When most people think about building something for embedded devices, Yocto is the first tool that comes to mind.

But there’s another option worth considering, one that blends the stability of Debian with the flexibility of BitBake. In this post, I’ll walk you through how I used Isar (Integration System for Automated Root filesystem generation), Debian Bookworm, and WPEWebKit to create an experimental embedded web runtime running on a Raspberry Pi 5 and Intel NUC, and why this approach might be worth trying in your next project.

Isar

Isar flow

Why Isar?

The build process in Isar will feel familiar if you’ve worked with Yocto: each component is defined in a BitBake recipe, and you can create dependency trees in the same way.

The biggest difference is that Isar builds everything around Debian tooling and packaging. It fetches packages directly from upstream Debian repositories, giving you stable and well-tested packages out of the box.

That said, you can still build from source, customize configurations, and add your own packages.

I’ve been using Isar for some time in a client project to create and maintain Debian platforms for a fleet of industrial PCs. Ever since, I’ve thought it would be a handy tool for creating an embedded web runtime. So, I decided to give it a try and figured others might be interested in the process too.

The Demo Setup

For this demo, I used:

  • Debian Bookworm as the base platform
  • A slightly customized Weston IVI-shell
  • WPEWebKit, built from source (version 2.48.3)
  • Hardware: Raspberry Pi 5 and an old Intel NUC (still in its box after many years!)

For configuration, I used kas (a tool that makes it easy to set up BitBake-based projects) and kas-container to run the build in a container, avoiding the need to install Isar and its dependencies locally.

Implementation

I started by creating a configuration structure for my needs, plus BSP layer recipes for the Raspberry Pi 5 and Intel NUC.

I implemented a few Weston modules to make the system UI look more polished than the default Weston setup.

Next, I wrote the recipes to build the Weston modules and WPEWebKit.
I wanted Weston to run as a dedicated webruntime user, which required additional configs and PolicyKit rules.

Getting WPEWebKit up and running took several iterations, a few quirks, and some patching here and there but eventually it worked.

Results

The result was a config screen where you can select the desired build configuration:

KAS container menu

Once you hit Build, you’ll see the familiar BitBake process in the terminal:

Isar terminal

Finally, after flashing the image to the Raspberry Pi 5:

Note: This is just a tech demo, not a full production web runtime. Each application launches a separate WPEWebKit instance, and there’s no runtime manager to coordinate them.

If you’d like to try it, the project’s README has setup instructions.

Debian 13 support is already in progress, and there’s an experimental branch with early Ladybird browser engine integration but it’s not finished and currently does not even compile.

The project is available on GitHub as webruntime-debian.

Top comments (0)