-
Moving on from XML? A teaser for a possible alternative
The prominent role of XML throughout Genode has been a recurrent point of critique. Technical pros and cons notwithstanding, syntax is a matter of taste, and XML tastes not favorably to many. Over the past two years, I've secretly pondered over a tasteful alternative, which I'd like to share with you today. Continue...
-
MNT Pocket Reform Sculpt 24.10 Preview Image
Within in the last release cycle we worked on adding and extending the support for the i.MX8MP SoC as also found in one of the SoM options for the MNT Pocket Reform and are happy to show-case a first preview version of Sculpt running on this handy computing device. Continue...
-
Control the devices in your testing fleet
Imagine having a number of devices in a testing fleet, which you use to test your changes periodically or on each push to the repository. You are faced with the challenge of controlling these devices. In this article, I describe the solution we at Gapfuit came up with. Continue...
-
Building Rust projects with a custom profile
Starting with Rust 1.77, our Rust Goa projects were giving us trouble. My colleague Sebastian was quick to figure out and fix the initial runtime linking problem. However, with that out of the way, the applications would simply crash with a segfault. Continue...
-
Genode and RISC OS demo
This is the demo I showed on the RISC OS Southwest show this spring. Continue...
-
Goa - Debugging with GDB
With Goa supporting Sculpt OS as a remote test target and Sculpt supporting on-target debugging, it was time to streamline the debugging experience with Goa. In this article, I share the details about how I integrated GDB support into Goa and how it's put into use. Continue...
-
A couple of new challenges
An update to Genode's official list of future challenges has been long overdue. Continue...
-
Goa - Using a headless Sculpt as a remote test target
Goa's ability to run applications on a remote Sculpt system comes in handy for testing. However, switching between keyboards to control the remote-running application is a tiny inconvenience. My recent experiments with Sculpt on a ZimaBlade, which has no built-in display, thus motivated me to experiment with solutions for Sculpt as a truly remote test target. Continue...
-
On-target debugging with GDB on Sculpt OS 24.04
With the recent Sculpt release, we introduced initial on-target debugging support to get the best from the ported GNU debugger (GDB) and our custom debug monitor that fuels the Sculpt runtime. This little hands-on introduction is completed by a live demo. Continue...
-
What's new in Sculpt OS 24.04
Sculpt OS 24.04 is packed. The spectrum of topics ranges from user experience, over audio, USB, suspend/resume, on-target debugging, and goes on. In the article, I'm presenting my personal highlights of this most profound release so far, garnished with various bits and pieces of the updated documentation. Continue...
-
FOSDEM 2024 aftermath
This year's FOSDEM was once again an eventful experience. By now, most presentations have become available. Yet I took the opportunity to re-record a more complete version of my talk that I want to share with you. Continue...
-
Adding a dynamic desktop background to Sculpt
For getting to know LVGL, I wrote a configurable desktop background for Sculpt OS that shows certain system information (e.g. clock, battery state). Continue...
-
Goa - Test running applications on Sculpt
Since its first release, Goa allows test-running applications on the host. We recently added an alternative run target to Goa which enables executing a Goa application on a Sculpt system. Continue...
-
Goa - Porting a calculator app from Ubuntu UI Toolkit
I ported the calculator app from Ubuntu/Lomiri UI Toolkit. In this article, I walk you through the porting procedure step-by-step to provide a blueprint for porting other apps. It also serves as an additional and more advances Goa tutorial. Continue...
-
Manually installing wsman(1)
For convenience and to some degree also necessity most of our x86-based test machines feature AMT to power-cycle the system and also gain serial console access via SOL. On recent systems the controlling part is done via WS-MAN, for which a package is not always readily available on Linux distributions. The following post gives short instructions on how to build it manually and illustrates one or the other pitfall. Continue...
-
A SIP client for Genode on the PinePhone
We ported the "Linphone Console Client" and the "SIP Client for Ubuntu Touch" to Genode to expand the available features on the PinePhone when it comes to mobile communication. This article illustrates the integration and describes how you can experience it yourself. Continue...
-
Create a specialized run target for Goa
If you need special services for your Goa project, you can easily create a customized run target for testing your project. I will describe how you can achieve this in this article with two simple examples. Continue...
-
Crafting a modded Sculpt OS image in a few moderate steps
I'd like to invite you to get playful with Sculpt OS. Because Sculpt OS is entirely Free Software, no user is bound to the decisions taken by us core developers. This article gives you tangible steps to start modding your user experience beyond the mere configuration level. Continue...
-
What's new in Sculpt OS 23.10
My personal highlights and a few technical tidbits about the just released Sculpt OS version 23.10, putting the spotlight on the Framework laptop, the PinePhone, and the MNT Reform laptop. Continue...
-
Sculpt Customisation
The modularisation of Sculpt with release 22.02 enabled us to easily build customised Sculpt images. Instead of personalising my Sculpt OS via config files on the used file system, I've been managing my customisations in a separate repository since then. In this article, I want to share what modifications have worked out for me and provide ideas to fellow Genodians. Continue...
-
A first complex Rust package
With the release of depot packages for Sculpt OS 23.10, we finally have all building blocks in place to build and run a Rust package without needing to locally build its Genode dependencies. Continue...
-
Migration of incompatible File Vault containers
The File Vault is a graphical tool for creating and managing encrypted file containers in Genode. The first official version was published with Sculpt 21.03b. Since then, the File Vault is part of the basic tooling for Sculpt. Continue...
-
x86 CPU frequency and power steering with Sculpt 23.10
With Sculpt 23.10 the previous sneak peek feature got integrated into the Genode base framework and hence is readily available with the new Sculpt OS release. Continue...
-
Evaluating browser-performance limitations
I recently collected a bunch of browser benchmark measurements on Sculpt OS to get an idea of what factors might be limiting the browsing performance. Continue...
-
Enabling the upstream Rust toolchain
Release 23.05 reintroduced support for the Rust programming language to Genode, but our initial implementation relied on a slightly adapted Rust toolchain. As detailed in my previous blog post, we were working around issues with versioned FreeBSD libc symbols that were unsupported by our linker. Continue...
-
Docker image with Genode toolchain 23.05
The pre-built docker image to easily develop Genode on top of arbitrary host systems got updated to a more recent Ubuntu 22.04 base system. Moreover, it now contains the last Genode toolchain 23.05., Qemu 6.2, and all necessary host tools to run any kernel, board, and run-script combination. Continue...
-
Sculpt OS 23.04 on MNT Reform2
Though so much time has passed since the last Sculpt OS release for MNT Reform2, the development did not stop, and I proudly present version 23.04 to you. This new release includes some interesting features related to our beloved MNT Reform2 laptop, namely: Continue...
-
Bringing Rust back to Genode
Initial support for the Rust programming language was contributed to Genode release 16.05 by Waylon Cude, but it failed to get traction and was removed again with release 20.05. With the 23.05 release, we bring back Rust support from a different angle. Continue...
-
Sneak peek: dynamic CPU frequency steering with Sculpt 23.04
With the Sculpt 23.04 release an proof-of-concept extension is available for managing frequency, power and performance features of your Intel and AMD CPUs on Sculpt. Continue...
-
What's new in Sculpt OS 23.04
With Sculpt OS 23.04 being in the wild since almost two weeks, it's time to put the spotlight on the most prominent changes. Continue...
-
Firefox & Thunderbird VM for Sculpt 23.04
With the Sculpt 23.04 release several ready-to-use VMs powered by Seoul VMM got updated to the latest version. Continue...
-
Pine fun - App development or the quest for an SDK
In this article we will describe our approach and reasoning of how we want to support app development on the PinePhone for Genode enthusiasts. Continue...
-
Audio pkgs with a twist for Sculpt
Managing the audio driver and mixer is somewhat involved as the generic pkgs require the use of a launcher for run-time changes. The “pkgs with config” mend this by storing the config in a file-system. Continue...
-
Goa tool under the umbrella of Genode Labs
The Goa project was started in 2019 with the ambition to streamline the workflows of application developers targeting Genode, and Sculpt OS in particular. I maintained and improved the tool off-and-on as a personal project over the years. Now, coordinated with the release of Sculpt OS 23.04, Goa has become an official Genode-Labs project. Continue...
-
Genode at the FOSDEM 2023
Last week, I returned from the FOSDEM 2023 in Brussels and it was a great joy for me after all these years to finally see a real-live FOSDEM again. Besides belgian fries and sweetened mate tea, one could once again get a taste of Genode at the conference. This year, the OS framework received 3 presentation in two different tracks. Continue...
-
First system image of mobile Sculpt OS
At FOSDEM 2023, I'm going to introduce the mobile version of Sculpt OS at the "FOSS on mobile" developer room - the perfect opportunity to kick off a first public field test. Continue...
-
Genode and RISC OS continued
I am a RISC OS user and I love RISC OS. Continue...
-
Mobile user interface, not in the face!
When approaching the user interface for a Genode-based phone, we started with the vague idea to mirror time-tested user-interface paradigms established in the worlds of Android and iOS, but we ultimately diverged from this beaten track. Instead, we took the opportunity to reflect the unique security architecture of our operating system at the user-interface level, giving the user an extremely strong sense of control over the device. This article presents our rationale and the initial scope of functionality. Continue...
-
Getting Fujitsu U7411 up and running: Network Boot
Earlier this year, the Genode team met the challenge to bring our OS to recent Intel Gen11 hardware, more precisely we faced the task to fully enable the Fujitsu LIFEBOOK U7411. But first things first: How to prepare the notebook for remote booting without sufficient legacy BIOS support? Continue...
-
How to install a fresh VM on Sculpt
I recently needed to set up a new Linux VM on top of Sculpt. Since I encountered a few pitfalls along the way, I'd like to share my experiences and provide up-to-date instructions. Continue...
-
Zynq guide #2 - enabling the programmable logic
After the basic board-enablement covered by the first article of this series, it’s eventually time to focus on the distinct feature of the Zynq-SoC - the FPGA aka programmable logic (PL). Continue...
-
Pine fun - How low can we go...
One of the most pressing practical concerns of mobile phones is battery lifetime. We wondered, what can we expect from a Genode-based PinePhone? To find out, we took our custom SCP firmware as instrument to poke all the dials and knobs and we could find deep in the device. Continue...
-
Creating a captive portal VM for Sculpt
Some 3 years ago, I worked on a minimal and disposable VM for Sculpt that is capable of viewing the landing page of a local network. In many networks, this is necessary in order to gain internet access and therefore even before being able to deploy third-party packages in Sculpt. This article is a briefly polished version of the tutorial I created back then. But it should still apply to newer Sculpt versions. It uses VirtualBox 5 and with TinyCore guest running Firefox. Continue...
-
Identifying network-throughput bottlenecks with trace recording
I recently launched an investigation in order to identify bottlenecks in Genode’s network packet throughput. This endeavour sparked off a new tool, the trace recorder, for recording component traces in Genode that I want to present to you in this article. Continue...
-
USB smart cards via PKCS#11
With the 22.08 release, Genode gains support for accessing USB smart-card devices like typical authentication and HSM keys via PKCS#11. Continue...
-
Pine fun - Darling I bricked my internal storage
I somehow managed to brick my Manjaro distribution running on internal storage (eMMC) on my PinePhone. So, how do I re-install or install Genode in the future? Continue...
-
Bringing WireGuard to Genode
WireGuard is a protocol that implements encrypted, virtual private networks (VPNs) with focus on ease-of-use, a very small attack surface, and high performance. For quite some time now, we were keen to support WireGuard also in Genode as a native standard solution for peer-to-peer encryption. With Genode 22.05, we could finally accomplish that goal. Continue...
-
Pine fun - Telephony (Roger, Roger?)
In this article we will describe how we enabled basic telephony support on the PinePhone. Continue...
-
Pine fun - Cutting Linux-driver competencies
The previous episodes of the article series covered the challenges of transplanting complex driver code from the Linux kernel into Genode components. Once running happily in its new habitat, however, the driver code needs a heavy dose of domestication. This article shows how to curb the driver code from the overarching access of power, reset, pin, and clock controls. Continue...
-
VirtualBox6 3D acceleration (experimental)
With Sculpt release 22.04 we enabled experimental 3D acceleration support within Genode's VirtualBox6 port. This short guide describes how to try it out. Continue...
-
Darling, I FORTHified my PinePhone!
This is my experience story behind Genode's forthcoming custom firmware for the PinePhone's AR100 system-control processor (SCP). It makes a case for using Forth for implementing SCP functionality and describes the process of bringing Forth to the OpenRISC instruction-set architecture. Continue...
-
Pine fun - Touchscreen
On our mission to enable the PinePhone hardware for Genode piece by piece, let's turn our attention to the touchscreen device, which is the gateway to interactive system scenarios. Continue...
-
Writing a VFS plugin for network-packet access
Despite Genode already providing a socket API that is backed by two different Virtual File System (VFS) plugins, we have no mechanism for sending/receiving raw Ethernet frames via the libc yet. In Linux and FreeBSD, the kernel provides virtual TAP devices as an interface for this purpose. We can easily emulate this interface by implementing a new VFS plugin. In this article, I will share my experiences with this particular plugin and provide some insights in the internals of the VFS. Continue...
-
Setting Up Genode developing environment for Hyperbola OS
Hyperbola OS is an OS where all softwares are critically checked for freedom compatibility. It is based on Arch Linux and is moving towards OpenBSD's kernel. I have created a package for Hyperbola OS which should work for all Arch based OSes. Basically, you can install all dependencies and build a Genode toolchain automatically with the following command with root permissions: Continue...
-
Genode's Browser Odyssey
This article tells the twisted story behind Genode's native web browser, which is one of the most prominent achievements of the project during the past year. It is going to cover our motivation behind this undertaking, the rationale behind the choice of the browser engine, and many technical tidbits. Continue...
-
Definitely, maybe finished support for iMX8MQ Vivante GPU
In this series of posts I am going to elaborate on porting the etnaviv driver to Genode and what this effort did entail. The fourth and for now last entry is about wrapping the project up and along the lines mending one or the other dent - namely increasing the performance. Continue...
-
Pine fun - Display
Having switched the development workflow from the Pine-A64-LTS board to the real deal - the PinePhone - in the previous article, it is time to turn our attention to the arguably most challenging parts of the hardware, namely the display subsystem. Continue...
-
Let's make -Wconversion our new friend!
Ten years ago, Christian Helmuth opened a Genode issue with the suggestion to enable warnings about implicit type conversions by default. Now that this issue has almost finished primary school, the time is ripe to attend it. Continue...
-
Zynq guide #1 - getting started
This is the first article of a series about the Zynq-7000 SoC from Xilinx. Though not a particularly new SoC, it is still quite unique as it features an FPGA in conjunction with a Cortex-A9 CPU. This opens a bunch of interesting application scenarios since the FPGA can act as a customisable co-processor or hardware accelerator. In this article, I will guide you through the very basic board bring-up to get a first sign of life from this hardware with Genode. Continue...
-
An Attempt to avoid C++ exceptions
Genode employs C++ exceptions for propagating errors, which is true to the language. However, the use and the mechanics of C++ exceptions comes with its own bag of problems. The upcoming Genode version 21.11 introduces a new error-handling pattern that will hopefully give us relief. Continue...
-
Sculpt OS 21.10 on ARM
Beside the x86 architecture, the new Sculpt OS 21.10 can also be used on top of the MNT Reform 2 and i.MX 8MQ EVK board. Although those ARMv8-based boards are not yet officially supported, you can give it a first try. Continue...
-
Test driving Sculpt's 3D support
With Sculpt release 21.10 we revived Genode's Intel GPU multiplexer which we demonstrated at FOSDEM 2018. At the time we supported only the Broadwell platform and after many bugfixes, the enablement of further Intel Graphics Devices (Skylake, Kaby Lake, ...), the update of the Mesa 3D library to version 21.0.0, and many new features, we are happy to announce that 3D acceleration support on Sculpt OS has been dramatically enhanced. Continue...
-
Genode's VFS #3: Networking
Over the past years, the Virtual File System (VFS) has played an ever more important role in Genode-based systems. Its applications cover not only access to conventional file systems but also font servers, network stacks, cryptographic devices, debugging facilities, and more. Yet documentation about the VFS is quite scattered and context-specific. In this article series I'd like to gather simple examples that explain how to use most of the plugins and utilities around Genode's VFS. Continue...
-
Genode and RISC OS integration.
This is the story of running two full systems at the same time on different cpu cores. Continue...
-
Pine fun - Booting Genode on the PinePhone
Until now, my exploration of the Allwinner A64 SoC was mainly concerned with the Pine-A64-LTS board, which offers developer conveniences like booting over the network, or easily accessible reset and GPIO pins. Now, it's time to switch gears by moving the development workflow over to the PinePhone. Continue...
-
Spunky #6: CPU device driver
In this article series I illustrate the development of an Ada kernel for Genode named Spunky. The approach is to first successively translate parts from the C++ base-hw kernel and temporarily integrate them with the remaining C++ parts. Once, the whole Kernel made it to Ada, Spunky can be further developed independently to benefit from the characteristics of Ada or even SPARK. This time, I'll talk about the port of the CPU device driver and about the use of the GNAT binder for the Spunky main package. Continue...
-
Pine fun - Networking
This article walks through the challenge of porting a network driver from the Linux kernel to Genode. It thereby exemplifies Genode's device-driver environment approach for the reuse of unmodified Linux kernel code, touches crucial technicalities of the Linux kernel, and provides practical clues. Continue...
-
Experimental Gpu session for the etnaviv GPU driver
In this series of posts I am going to elaborate on porting the etnaviv driver to Genode and what this effort did entail. The third post is about replacing the ad hoc Drm session with an adapted Gpu session. Continue...
-
MNT Reform 2 - Use Sculpt OS on SD-card
There is a new, updated Sculpt OS version available for the MNT Reform 2. It features a fully functional, and more performant SD-card driver. It enables you to persistently install Sculpt OS and additional depot packages on your MNT Reform 2. Moreover, the new driver support enables you to exchange the SD-card dynamically at runtime. Continue...
-
Mobile networking in Sculpt
Last year, ssumpf added basic LTE modem support to Genode. Since many Sculpt-compatible laptops come with integrated LTE modems already or can be easily upgraded, I started a little side project to equip Sculpt with easy-to-deploy mobile networking support. In this article, I summarise how to reap the fruits of this project. As a side effect, it showcases the varied possibilities of component compositions. Continue...
-
Genode's VFS #2: Storage and interconnections
Over the past years, the Virtual File System (VFS) has played an ever more important role in Genode-based systems. Its applications cover not only access to conventional file systems but also font servers, network stacks, cryptographic devices, debugging facilities, and more. Yet documentation about the VFS is quite scattered and context-specific. In this article series I'd like to gather simple examples that explain how to use most of the plugins and utilities around Genode's VFS. Continue...
-
Experimental porting of the etnaviv Mesa driver
In this series of posts I am going to elaborate on porting the etnaviv driver to Genode and what this effort did entail. The second post is about dealing with the Mesa driver and briefly skims over the process. Continue...
-
Spunky #5: IRQ controller driver
In this article series I illustrate the development of an Ada kernel for Genode named Spunky. The approach is to first successively translate parts from the C++ base-hw kernel and temporarily integrate them with the remaining C++ parts. Once, the whole Kernel made it to Ada, Spunky can be further developed independently to benefit from the characteristics of Ada or even SPARK. This time, I talk about my personal learning curve regarding low-level programing with Ada and the porting of the IRQ controller driver. Continue...
-
Experimental porting of the etnaviv Linux DRM driver
In this series of posts I am going to elaborate on porting the etnaviv driver to Genode and what this effort did entail. The first post is about dealing with the Linux DRM driver and briefly skims over the process. Continue...
-
Genode's VFS #1: The basics
Over the past years, the Virtual File System (VFS) has played an ever more important role in Genode-based systems. Its applications cover not only access to conventional file systems but also font servers, network stacks, cryptographic devices, debugging facilities, and more. Yet documentation about the VFS is quite scattered and context-specific. In this article series I'd like to gather simple examples that explain how to use most of the plugins and utilities around Genode's VFS. Continue...
-
Linux device driver ports - Choose compilation units
In my first blog post of this series, I've described the motivation to break new grounds in porting Linux drivers to Genode. Moreover, you've seen how to re-use the headers and configuration of a pre-built Linux kernel. In the last blog post, we continued our journey with a new helper tool to generate missing Linux kernel function definitions automatically. This time I'll continue with how to choose the absolutely necessary compilation units for a given driver resp. subsystem. Continue...
-
Dynamically changing keyboard remapping rules
When setting up my Sculpt-based work environment, my intent was to run an unmodified Linux installation as VM in Sculpt. Being strongly accustomed to i3wm, I quickly noticed the lack of the Windows key that is used for controlling the i3 window manager but which is intercepted by Sculpt for the same job. A bit reluctant to change my habits and retrain new key combos, I needed a better solution. With advice from Norman, I came to a pretty neat solution that I would like to share with you. Continue...
-
Native screenshot component
Martin had recently expressed to me that a native screenshot component using the Capture session would be really helpful. Moreover, when writing the VNC server article, I also encountered the need to make a screenshot myself. As I already got in touch with the Capture session, I briefly switched contexts to bring the screenshot component into being right away. Continue...
-
Remote desktop solution for Sculpt via VNC
Thanks to alex-ab, we already have a native VNC client available in Sculpt to connect to VMs remotely. How nice would it be to also bring a VNC server to Sculpt and thereby enable remote desktop scenarios? In this article, I want to share my experiences made when developing a VNC server application with Goa and ultimately present a ready-to-use package for Sculpt. Continue...
-
Spunky #4: Kernel Timing
In this article series I illustrate the development of an Ada kernel for Genode named Spunky. The approach is to first successively translate parts from the C++ base-hw kernel and temporarily integrate them with the remaining C++ parts. Once, the whole Kernel made it to Ada, Spunky can be further developed independently to benefit from the characteristics of Ada or even SPARK. This time, I talk about the translation of timeout scheduling and the underlying timer driver. Continue...
-
MNT Reform 2 - Run Sculpt OS
It has been a while since I started to do the first steps of porting Genode to the MNT Reform 2. Continue...
-
A short guide to the Timer Session interface
In my last article about timing, I presented the Timeout framework - the most preferable solution when you want to do timing in native Genode applications. However, I also pointed out that the Timeout framework isn't always the best solution and promised to explain in detail when and how to fall back to the Timer session in this case. That's what this article is about. Continue...
-
Pine fun - Pruning device trees
We briefly touched the treasure trove called device trees in the previous article. To leverage the wealth of information for the development and porting of Genode device drivers, this article introduces a handy new tool set. Continue...
-
Introducing the File Vault
The File Vault is a graphical user interface that aims for making it easy for everyone to create and manage encrypted file systems in Genode. A beta version of the vault was just published for Sculpt 21.03b in my depot mstein -> Tools -> file vault. Therefore, I'll give a short overview of the program. Continue...
-
Do you 🖤 your 💻?
Once in a while, I come across a website that uses unicode emoji for illustration. Github is one of these that uses such symbols in the sidebar of the notification view. However, if you do not have a font installed that contains the corresponding glyphs, you will only see those beautiful inexpressive boxes ⌷ (or even whitespace). This is the case for the falkon browser packaged for Sculpt. Yet, it is pretty easy to augment it with emoji support. Continue...
-
Pine fun - Taking Linux out for a Walk
In preparation of the porting of drivers from Linux to Genode, we have to gather knowledge about the drivers' natural habitat. This article goes through the steps of building a custom Linux system that is tailored to a driver of our choice. Continue...
-
A short guide to the Timeout framework
Last week, a colleage of mine asked me on how to use the native interface for userland timing in Genode, the Timeout framework. So, I thought it would be worth sharing this knowledge in form of a short article. Continue...
-
Troublesome guest additions
On my journey towards transitioning to Sculpt as a day-to-day OS, I already desribed how to access an existing Linux installation in my previous article. Since I recently struggled with installing the VirtualBox Guest Additions, I want to share my findings with a short follow up article. Continue...
-
USB stick passthrough in Sculpt 21.03
Recently, I wanted to use an USB stick in my Linux VM in Sculpt 21.03 and I couldn't figure out anymore how to do it. I was surprised that I struggled to find information on this topic and so I wrote this short tutorial in order to make it easier for others. Continue...
-
Pine fun - One Platform driver to rule them all
In the previous article we exercised direct-device access from user-level components. In Genode systems beyond such toy scenarios, however, it would be irresponsible to follow the path of allowing arbitrary drivers to access any device willy-nilly. Our call for discipline and rigidity is answered by the (rising drum roll) platform driver. Continue...
-
Starting an existing Linux installation from Sculpt
In the last years, I've had an on-and-off relationship with Genode mostly because other commitments kept me from spending time with the framework. Although I was keen on using Sculpt as a day-to-day OS, I didn't manage to make a smooth transition. Initially, my idea was to use my existing Linux system and install Sculpt in parallel. Ideally, I would be able to start my existing Linux system in Virtualbox on Sculpt. My first efforts were stalled by some EFI boot issues and due to a lack of time this idea slumbered for about two years...until recently. Continue...
-
Making the MNT Reform my own
This is the little embarrassing story of my first customization of the MNT Reform laptop that I received just two weeks ago. Continue...
-
Linux device driver ports - Generate dummy function definitions
In my last blog post I've described the motivation to break new grounds in porting Linux drivers to Genode. Moreover, you've seen how to re-use the headers and configuration of a pre-built Linux kernel. This time we'll continue by invoking the very first initialization routines. Therefore, a new little helper tool gets introduced to generate missing Linux kernel function definitions automatically. Continue...
-
Performance analysis made easy
Identifying performance bottlenecks of Genode's low-level system components remains a tedious effort. For this reason, it is usually not practiced as a routine during development but only under strong pressure. Conversely, performance optimizations may be implemented without evidence for their presumed effect, increasing complexity for rather intangible benefits. Now a new utility presented in this posting comes to the rescue. Continue...
-
Linux device driver ports - Breaking new ground
In my following blog post(s) I want to elaborate on recent attemtps to renew and enhance the way Linux device drivers are ported to Genode. This is highly experimental work. So be warned if you try to follow the same approach: it hasn't proved its worth yet. But first let me explain why to break new grounds at all. Continue...
-
A C++ inlining anecdote
During my recent work on the management component of Sculpt OS, the compile time of this particular component started to bother me. Moreover, the size of the resulting binary raised my eyebrows. So I took a closer look. Continue...
-
What's new in Sculpt OS 21.03
The just released version 21.03 of Sculpt OS becomes resilient against several classes of driver failures, improves the responsiveness and convenience of the user interface, and makes recent Genode features like CPU-load balancing and screen capturing available to Sculpt components. Let's have a look at the most prominent changes. Continue...
-
Pine fun - Device access from the user level
Genode's peripheral device drivers live outside the kernel and have the form of regular user-level components. This article presents how the device-hardware access works under these conditions, while taking the general-purpose I/O pins of the Pine-A64-LTS single-board computer as playground. Continue...
-
Pine fun - Kernel packaging and testing
With our toes still a bit frozen from testing the waters of the user land, we now take the remaining steps towards a cultivated Genode life, largely automating our work flow, packaging the kernel, and testing the platform like there is no tomorrow. Continue...
-
Genode on RISC-V - an Update
RISC-V support on Genode has been around for five years by now. Our initial RISC-V port to the base-hw kernel reached back to the privileged ISA specification 1.7 while the current stable version is already at 1.11. Therefore, we have experienced quite a big part of the RISC-V evolution and generally appreciate the direction RISC-V is heading. Continue...
-
Pine fun - Excursion to the user land
Equipped with the rudimentary debugging skills presented in the previous article, it is time to conquer the remaining stumbling blocks on our way to the user land. Continue...
-
Pine fun - How did we come here?
Some kids from the city once told me about programs called "debuggers". They also use a technology named "green light" to cross the streets. City kids. As we are still far away from urban territory, we are in need of the rural ways of debugging. What are our options? Continue...
-
Pine fun - Kernel skeleton
Of the several kernels supported by the Genode OS framework, the so-called base-hw kernel is our go-to microkernel for ARM-based devices. Section Execution on bare hardware of the Genode Foundations book goes into detail about its underlying software design. This article describes the process of porting this kernel to a new board, specifically the Pine-A64-LTS single-board computer. Continue...
-
Mobile Tech Demo
Recently, a bunch of posts on this blog platform circled around Genode seriously entering the mobile world. Be it the enabling of a touchscreen, LTE modem support, or the first steps to bring Genode to the Pinephone. But a mobile platform doesn't have different technical requirements only, like support for certain peripherals. It varies in the way people are interacting with it, which needs to be considered in its GUI. To experiment in this direction a bit on the one hand, and to integrate several of the recent new components available in Genode in a sound prototype was the motivation behind the tech demo that is described in the following. Continue...
-
Pine fun - Bare-metal serial output
For low-level kernel-bootstrapping work, we need a primitive way to print debug messages over a serial connection. This article goes through the steps of executing custom code on bare-metal hardware with no kernel underneath, and attaining serial output by poking UART device registers directly. Continue...
-
Warming up for some Pine fun
I recently got my hands on a PinePhone along with a Pine64 board and have the aspiration to bring Sculpt OS to this platform. This is a very welcome opportunity to document the process of such a porting effort. Continue...
-
LTE modem support for Genode
One of Genode's visions is to support smartphones in the no so distant future. After we took care of touchscreen input the second most important feature of a phone is to drive modems in order to provide network connectivity. Modern modems are usually connected via an M.2 slot to the SoC of the phone and because protocols like LTE have real-time demands ship their own real-time capable operating system. Continue...
-
CPU-load balancing
In the following article the current state of the load balacing topic, as scheduled by the 2020 roadmap, will be described. Additionally, the feature can be test driven by a extended Sculpt 20.08 based image and a video recording is available. Continue...
-
"U can't touch this"
With our on-going effort to add more and more Genode support for NXP's i.MX 8M Quad EVK SoC, which is for example deployed by the Librem 5 smartphone from Purism, it became time to add touchscreen input to the list of Genode supported features, because a phone without a touchscreen would not be of much use, would it be? Continue...
-
Genode development container
In the past, the question was asked several times: why doesn't Genode provide a development container, e.g., a docker image. The question was raised by some community members, as well as people interested in giving Genode a try. They did not want to install an additional compiler toolchain and a bunch of tools and thereby pollute their daily working environment. Continue...
-
What's new in Sculpt OS 20.08
The version 20.08 of Sculpt OS has just become available. Let's have a look at the most interesting changes and new features. Continue...
-
Genode Community Summer 2020
Update: Due to the uncertain situation with the Corona virus and the low number of participation requests so far, the Genode Community Summmer 2020 will not take place! Continue...
-
Streaming Android to Genode using Scrcpy
In this post I report about the work of bringing Scrcpy to Genode. Additionally, a short video demonstrates the outcome of the undertaking. Continue...
-
MNT Reform 2 - First Steps
Recently, I was honored for receiving the first beta MNT Reform 2.0 shipped by MNT Research GmbH. This is an interesting laptop project produced by a team of three people: Lukas Hartmann (electronics / software design), Ana Beatriz Albertini Dantas (product / industrial design), and Greta Melnik (sleeve design / SMD assembly). Continue...
-
Re-stacking the GUI stack
As I am currently right in the middle of a far-reaching rework of Genode's low-level GUI stack, I'd like to share a bit of background behind this work: the Why, the What, and the How. Continue...
-
Micro benchmarks - what can possibly go wrong
From time to time I need to compare execution times and memory throughput in between Genode's hw-kernel and the baseline (typically using Linux) regarding one of the hardware platforms supported by Genode. Mostly this is done when the hw-kernel is ported to new hardware, or we experience unusual workloads on a platform, like recently when investigating a non-working USB driver on Raspberry Pi 1. Continue...
-
The CBE series #4 - Video "A Linux VM on a CBE device"
There is now an online video of the tutorial "The CBE series #3 - A Linux VM on a CBE device" available on Youtube. It goes through the whole tutorial starting with a fresh Sculpt 20.02 installation until the rekeying of the CBE device while rebooting the Linux VM on top of it. Continue...
-
The CBE series #3 - A Linux VM on a CBE device
In the Genode 20.05 release notes we teased using the CBE for running encrypted VMs in Sculpt. This article will guide you through setting up a CBE device, installing and using a Linux VM on it, and controlling the CBE online - like creating snapshots, resizing the device, or doing a rekeying. Continue...
-
The CBE series #2 - Online resizing
This article describes in detail how online resizing is done in the Consistent Block Encrypter (CBE). Online resizing enables the user to re-dimension the block pools used in the CBE block device with the device remaining accessible throughout the entire process. Continue...
-
The CBE series #1 - Online rekeying
This article explains in detail how online rekeying works in the Consistent Block Encrypter (CBE). Online rekeying means to re-encrypt a CBE block device completely with a new encryption key and eventually remove the old encryption key while the device remains accessible the whole time. Continue...
-
Autoconf support is landing in Goa, Git comes to life
I'd like to share a few recent developments around Goa, which is a new tool for porting, building, and packaging Genode components. With autoconf, a third build system enters the picture, which, in turn, paves the ground for bringing software like Git over to Genode. Continue...
-
Porting Sculpt (1) - Preparations
In my previous article, I presented an overview of undertaking the port of Sculpt OS to another SoC. Today, let us take a closer look at the first step - taking technical and non-technical preparations. Continue...
-
Remap mouse buttons in the input filter
As the current USB HID driver simply parses the report descriptor some input devices will operate in its default configuration. That, however might be undesirable - input filter to the rescue. Continue...
-
An Android VM for ARMv8 (update)
This is a follow up on the current state of the An Android VM for ARMv8 line of work. The article explained how to build Android from source and how to execute Android as a virtual machine on Genode. We were able to boot Android successfully but still had issues with the camera and the audio devices. Continue...
-
What does it take to bring Sculpt OS to another ARM SoC?
Since I wrote the article about the ARM SoC landscape from Genode's perspective, I got repeatedly asked about the principle steps needed to enable Sculpt OS for various ARM-based hardware platforms. Drawing from our experience with the initial port of Sculpt OS to a 64-bit ARM device in Genode version 20.02, let me try to provide a rough guide for the steps needed to port Sculpt OS to a new ARM-based hardware platform. Continue...
-
Native VNC client
In order to connect to VMs remotely, several options exist. Using VNC is one way to go. Virtualization solutions like Qemu/KVM have built-in support, so a native VNC client on Genode becomes handy. In this post I'm going to report about a ported VNC client of the libvncserver project and its usage on Sculpt 20.02. Continue...
-
Virtual Machine Monitor for ARM
In my last blog post, I described some aspects of ARMv8 hardware-assisted virtualization. The presented findings were collected during some exploration work I've done together with my colleague Alexander Boettcher during last year. As already mentioned, one outcome of this work was a new Virtual Machine Monitor (VMM) written from scratch for the ARMv8 architecture. In the meantime the VMM got extended to support recent, generic Linux kernels for ARMv8 and ARMv7, and thereby supersedes the former, outdated PoC implementation for ARMv7. Continue...
-
An Android VM for ARMv8
In my last article I described how to build a Linux image that can be executed by Genode's VMM on i.MX8 platforms. With this article we take things to the next level by creating and executing an unmodified Android 10 VM on the i.MX 8M EVK SoC. Continue...
-
Compartmentalized window management in Sculpt OS
When using Sculpt OS day-in day-out, the simple default window manager as introduced in the manual is quite limiting. This article presents an alternative that is able to remember window positions across reboots, swap out window decorations on the fly, and that empowers the user to modify the window layout directly via a textual interface. Continue...
-
Using the Block::Request_stream API in the NVMe driver
The NVMe driver component is switched to the Request_stream API in accordance to the road map, where consolidation of the Block-level components is scheduled for the upcoming 20.05 release. As a side-effect, things got a little bit simpler in the driver. Although being one of the first drivers to be converted to new the API it is late to the party nonetheless. Continue...
-
CPU affinity with Sculpt OS
With the latest 20.02 Sculpt release we added support to configure the affinity and number of CPUs available to components running on Sculpt. The principal support was already part of the Genode framework since 13.08, but missed to be easily usable on previous Sculpt versions. Continue...
-
Let's encrypt Genodians.org: Extending Goa
Since the first days we're serving Genodians.org via HTTPS and retrieve the site certificate from https://letsencrypt.org/. Unfortunately, our current certificate-update process uses the quite complex Certbot tool, which requires Python 3 and around a dozen of libraries. Therefore, the process is run in a temporary Linux VM periodically by hand, and I'd like to replace this cumbersome procedure by a Genode subsystem in Genodians. Continue...
-
Goa updated to Genode 20.02
Now that Genode 20.02 is out of the door, it's a good time to update Goa to the match the most recent Genode version. Continue...
-
Exploring the ARMv8 system level - Virtualization
During last autumn, my colleague Alexander Boettcher and me wrote a virtual-machine-monitor for ARMv8 for Genode from scratch. It was an intensive teamwork and much more fun than just poring alone over some problem. In this fifth post about my ARMv8 first steps, I'd like to summarize some of the insights from this work. Continue...
-
Building a Linux VM image for ARMv8
This brief article summarizes the steps necessary to build a runnable Linux kernel and initrd disk image that can be executed on top of Genode's custom VMM for i.MX8 platforms. Continue...
-
Exploring the ARMv8 system level - Multi-Cores
Within the past months I collected some experiences with enabling Genode's own hw kernel on ARMv8 hardware platforms. A first series of posts covered the low-level first steps that had to be taken. In this forth part I like to summarize the insights gained by enabling multi-cores of the NXP i.MX 8M SoC, and by investigating several other SoCs and its SMP setup. Continue...
-
FOSDEM 2020 in review
FOSDEM and the microkernel developer room in particular was certainly one of the highlights of the year. In this posting, I share my personal impression of the event and a few links of interest. Continue...
-
Running Genode in VirtualBox
After I finished the most recent article about Spunky I received feedback from people who tried to run Sculpt OS with Spunky inside a VirtualBox VM and met some difficulties. While trying to reproduce the scenario, I noticed that there seems to be not much documentation about how to run Genode scenarios other than the ready-to-use Virtual-Appliance image from the Sculpt download page in VirtualBox. And there are a few pitfalls. Continue...
-
Spunky #3: Desktop system, FOSDEM video, scheduler, plans
In this series of articles I'll illustrate a hobby project of mine that is trying to create a kernel for Genode written in Ada 2012. This project is not about writing a kernel from scratch but rather successively take parts from the existing base-hw kernel and translate them to Ada. Thus, the design mainly follows the approach taken with base-hw. To be able to test the already translated parts, I link them together with the remaining parts from base-hw. The interfacing between the Ada and the C++ parts is done on the level of object methods. Over time, the code base of the new kernel will become more and more Ada and less C++. Maybe later this work will also lead to some formal verification with SPARK. But for now, I'm happy with Ada. So let's go! Continue...
-
Sculpt OS - FOSDEM 2020 Edition
In my talk at FOSDEM, I present a brand new version of Sculpt OS. It is a preview of the upcoming release. For those of you who are eager to play with this version, I have put a downloadable image online. Continue...
-
Goa - publishing packages
In the previous articles (1, 2, 3) about Goa, we created a minimalistic Unix system by combining Genode's ready-to-use building blocks with universally loved GNU software. Now it's time to publish our little creation so that it can be deployed directly on Sculpt OS. Continue...
-
Screencast on Sculpt OS
From time-to-time the screen cast support on Genode pops up. Martin successfully ported avconv and demonstrated it back then in 2016. In the event of Sculpt OS, I lately had the chance to update the port and integrate it with Sculpt OS in form of packages ready for use. The following instructions will guide you through the setup. Additionally a short video recorded running on Sculpt is available. Continue...
-
Pending Sculpt user-interface changes
During our road-map discussion, I vaguely mentioned my plan to change the administrative user interface of Sculpt OS. This post is a response to John's inquiry for more details. Continue...
-
Graphical CPU utilization and monitoring tool (19.12)
The top_view component is a tool using the tracing infrastructure of Genode to gather thread related information, e.g. execution time, and prepare them for graphical presentation. Lately the tool got some updates I want to share. Beside the textual post I also uploaded a short tutorial video. In order to test the current version, you will have to build the Sculpt OS image yourself. Continue...
-
Goa - sticking together a little Unix (part 3)
In the previous article, we went from a first life sign of the bash shell to an interactive scenario. Today, we spice up our little system with the magic potion of Unix, namely the presence of a collection of useful utilities and a mechanism to combine them. If someone asked me for one word condensing the essence of Unix, it would be "pipe". Off we go, plumbing! Continue...
-
Spunky - Part 2: The Signals, The FOSDEM, and The Repository
In this series of articles I'll illustrate a hobby project of mine that is trying to create a kernel for Genode written in Ada 2012. This project is not about writing a kernel from scratch but rather successively take parts from the existing base-hw kernel and translate them to Ada. Thus, the design mainly follows the approach taken with base-hw. To be able to test the already translated parts, I link them together with the remaining parts from base-hw. The interfacing between the Ada and the C++ parts is done on the level of object methods. Over time, the code base of the new kernel will become more and more Ada and less C++. Maybe later this work will also lead to some formal verification with SPARK. But for now, I'm happy with Ada. So let's go! Continue...
-
Goa - sticking together a little Unix (part 2)
Let us transcend the simplistic bash scenario created in part 1 and enter the stage of an interactive system. Continue...
-
Goa - sticking together a little Unix (part 1)
Whereas the first article about Goa was concerned with building software using commodity build systems, this article takes you on a ride of creating a small Unix OS out of Genode's ready-to-use building blocks, publishing the result, and deploying it on top of Sculpt OS. Continue...
-
Goa - streamlining the development of Genode applications
The development of applications for Genode used to require a lot of learning about Genode's way of organizing source code, our custom build system, and the use of run scripts. With Goa, I introduce a new tool that aims at largely removing these burdens from application developers. Continue...
-
The ARM SoC landscape from Genode's perspective
We get repeatedly asked for our opinion about ARM system-on-chips (SoCs) suitable for the use with Genode. Even though Genode supports the ARM architecture since 2009, the answer has remained anything but simple. This article presents constraints faced by a small player attempting to realize an ARM-based product that deviates from the beaten track of using a Linux-based OS. It should not be regarded as ground truth but rather as the subjective perspective of Genode Labs. Continue...
-
Simple tracing within Qemu
I recently discovered Qemu's tracing feature. It is useful for examining the state of device models, like interrupt controllers or the CPU, or for observing the behavior of guest operating systems. As a simple example, lets enable tracing for ARM's interrupt controller called GIC. The device model resides in Qemu in the file hw/intc/arm_gic.c. In order to find out which trace events exist one can either grep for trace- or examine the file trace_events which resides in each directory that supports tracing. The file hw/intc/trace_events contains the following entries for ARM's GIC: Continue...
-
Sculpt OS on HP EliteBook 840 G5
A few weeks ago, I got hold of a brand-new HP EliteBook and was eager to find out how Sculpt OS may do on it. The specs promised a smooth ride but as always I had to face some hidden obstacles. Continue...
-
New Challenges ahead
We maintain a collection of future project ideas on a dedicated website. Today, I reviewed and updated the topics. Let me present the ideas. Continue...
-
Exploring Genode Base HW with Raspberry Pi - further workflow automation
In a previous article I described step by step how to prepare a Raspberry Pi and Genode build system to be able to almost automatically build and test compiled images on a device. There was one piece missing in this puzzle that made it incomplete: after each build device had to be started manually. This article describes my solution to this missing element. Continue...
-
Invitation to the Genode Community Summer
Recently, several requests reached us at Genode Labs from people interested in coming to Dresden for a certain period of time to work on their Genode project while beeing able to seek our assistance in person. To give this idea a dedicated space, Genode Labs will hold a new event, the "Genode Community Summer" this year. Continue...
-
Speaking of Security
The term security is overloaded to a point that makes it almost meaningless. On our website, we speak of Genode as a technology for building highly secure operating systems. But what does that even mean? Let's take a closer look at the security landscape at large, and our focus in particular. Continue...
-
The Säntis System Summit in Summer 2019
I must admit that I more or less stumbled into this wonderful event by chance. Not knowing what to expect exactly from the online presentation I was totally overwhelmed by the positive experience in the end. Not only provided the location at mountain Säntis in Appenzell a breathtaking scenery and the hotel was great, but, most of all, amongst all organizers and participants there was an enthusiastic, open-minded and relaxing atmosphere that made this (un)conference special to me. Continue...
-
Download Debian VM and the VirtualBox Guest Additions reloaded
With the release of Sculpt 19.07 and release of Debian 10 (Buster) it is about time to update the download_debian package as well. I briefly tested the VirtualBox guest-additions version 6.0.4 (that's the version provided in the non-free repository) by installing them directly from the .iso which appear to work well. Continue...
-
Exploring Genode Base HW with Raspberry Pi - beginning
It started few months ago. Continue...
-
Copy and paste with Sculpt OS 19.07
The upcoming Sculpt OS version 19.07 allows the user to copy and paste text between virtual machines, terminal windows, Qt5 applications, and the administrative interface (Leitzentrale). This article sheds light on the underlying mechanism and its security considerations, shows how to configure subsystems to use the new feature, and covers a few caveats you may encounter. Continue...
-
Exploring the ARMv8 system level - Part 3
Within the last weeks I collected some experiences with enabling Genode's own hw kernel on ARMv8 hardware platforms, and like to share it via genodians.org. In the first post I've described how to first create a non-functional dummy system image. In part 2, I wanted to show how easily you can develop and debug early system level startup code when using QEMU. This time I'll center on the exception level changes, and the flexible page-table layout in ARMv8. Continue...
-
Tracing support for Genode's VFS
I just published a new trace_fs component within my depot. It announces a file system that can be mounted, e.g. to a noux-system instance. The directory structure of the file system represents Genode's recursive parent child relationship. Continue...
-
Type-safe bit access using the register framework
Years ago, when I wrote my first device drivers for Genode, I found myself thinking about a very common problem in this area: MMIO regions that are structered with bit-granularity. Accessing such structures in C++ was normally done with hand-crafted bit arithmetics that not seldom ended-up in long cryptographic statements with raised error potential. Type-safety in this field is highly desirable to improve driver development but unfortunately not part of the basic C++ features. This initiated the development of the so-called MMIO framework in Genode, which later evolved into the more generic Register framework. Over the years, the Register framework has become the prefered tool to describe and access sub-byte structures of any type (not only MMIO) in Genode and has received a lot of handy features of which I'd like to give an overview in this article. Continue...
-
Exploring the ARMv8 system level - Part 2
In this blog series I write about my insights when porting Genode's hw kernel to ARMv8. In the first post I've described how to first create a non-functional dummy system image. In this post, I want to show how easily you can develop and debug early system level startup code when using QEMU. Continue...
-
Enablement of Genode's ARMv8 support
ARMv8 introduces a new 64 bit instruction set architecture (ISA). This implies that there exists a different general purpose register set as well as new instructions and opcodes that are not compatible with ARMv7 or ARMv6. While for high level languages like C or C++ the burden of opcode generation is transparently handled by the compiler, there are always cases (e.g, assembly, application binary interface, ELF format) that have to be handled specifically for each ISA. In this article I will describe the most important adaptions required to execute Genode on the ARMv8 architecture. Continue...
-
Exploring the ARMv8 system level
Recently I got the chance to explore the 64-bit ARM system level universe. Finally, there were resources left to implement support for the ARMv8 architecture in Genode's own hw kernel. In the following blog posts I'd like to summarize my insights. Continue...
-
Modern look for the graphical terminal
Some weeks ago, I was finally done with the wishy-washy Solarized Dark color theme in my terminals and searched for a palette rich of contrast but still pleasing to the eyes. The new color palette inspired me to a small coding project for our graphical terminal over the Hack'n'Hike weekend. Continue...
-
User-friendly handling of missing ports in depot tools
I enjoy the elegant and potent system behind packages in Genode. Therefore I found it particularly sad that, for me, a tiny, rather superficial issue always dimished the user experience: Missing archives of third-party code, called ports, are reported only one at a time, and each time, the user has to push the process forward manually. Because of this, building large packages like Sculpt with dependencies to over 20 of these ports, can become an annoying task. Continue...
-
SPARK as an extremum: Components in pure SPARK
Some time ago Norman Feske wrote about C++ and SPARK as a continuum. His article shows how SPARK can be used to implement critical functionality in SPARK while implementing the core component in C++ on Genode. He further describes a set of rules to prevent unexpected side effects in SPARK. In short it boils down to stateless libraries written in SPARK that cannot interact with the environment but can consume and produce data. While this might sound restricted at first glance this approach can be used to strengthen the security of existing software such as parsers or protocol checkers that shield the C++ code from tainted data. We also applied this method successfully outside of Genode by replacing the C++ parser of the Fizz TLS library by our own SPARK implementation. Continue...
-
Resurrecting Escape Paint with Hatari
A recent series of events flared up my enthusiasm for Atari home computers. I just couldn't help but draft a plan of bridging this nostalgic trip with our modern-day Sculpt OS. Continue...
-
Spunky: A kernel using Ada - Part 1: RPC
In this series of articles I'll illustrate a hobby project of mine that is trying to create a kernel for Genode written in Ada 2012. This project is not about writing a kernel from scratch but rather successively take parts from the existing base-hw kernel and translate them to Ada. Thus, the design mainly follows the approach taken with base-hw. To be able to test the already translated parts I link them together with the remaining parts from base-hw. The interfacing between the Ada and the C++ parts is done on the level of object methods. Over time, the code-base of the new kernel will become more and more Ada and less C++. Maybe later this work will also lead to some formal verification with SPARK but for now, I'm happy with Ada. So let's go! Continue...
-
Seoul VMM and the new VM interface
In January I presented the ongoing work at the FOSDEM 2019 about the generalization of the virtualization interface on Genode for x86. Now the first bunch of commits entered Genode master for the Seoul VMM. Continue...
-
Debugging complex software stacks on Genode Linux
When dealing with large and especially ported software stacks on Genode, sophisticated debugging facilities become a must have. One way to achieve this is to develop or port your software stacks on Genode Linux and take advantage of the GNU Debugger (GDB). Of course this is not possible for low level software, like device driver or kernel, but in general useful for anything that does not access hardware directly. In this article I will describe a hands on experience example on how to debug Java using GDB. Continue...
-
Wrapping build.conf to use it more conveniently
The Genode build system uses GNU Make to build all components as well as to drive the run-tool for automated testing. A key piece is the build.conf file that for one configures the build system (specs, repositories etc. pp) and for the other sets various run-tool options. Over the years, instead of dealing with adapting the file directly, I started to use simple wrapper snippets to make testing on a variety of machines more convenient. Continue...
-
The case against Ambient Authority
This blog is the third in a series on Genode for not-so-technical people. In these blogs I try to answer the question what Genode offers on safety and usability that other systems don't. Read the second part here. Continue...
-
Physical Hard Disk Passthrough in Genode's version of VirtualBox.
Here, I'll describe how to set up Linux booting from the physical Hard disk, and mounting several partitions. Here: http://genodians.org/skalk/2019-03-18-hybrid-packages described how to tweak VirtualBox for using your physical hard disk as a single "Block" session, and accessing it in an exclusive fashion. The disadvantage is that VirtualBox uses all your hard disk exclusively, so you will be unable to use it in Sculpt for your GENODE partition. In other words, your GENODE partition should be on a separate hard disk, or a flash stick. This may be inconvenient. So, I found how I could give to VBox a selected set of partitions only (/dev/sda9 being Linux root partition, /dev/sda8 being a Linux swap partition, /dev/sda7 was my data partition with Genode sources, formatted with JFS file system and /dev/sda1 was my second data partition, formatted as FAT32). And /dev/sda11 was my Genode partition. Continue...
-
C++ and SPARK as a continuum
SPARK is an Ada-inspired programming language for high-assurance computing. It was designed for the application of formal verification methods to real-world software. The prospect of bug-free software is music to our ears! I wonder, can there be a love affair between SPARK and Genode's predominant implementation language, C++? Continue...
-
Graphical CPU utilization and monitoring tool
The top_view package is a tool using the tracing infrastructure of Genode to gather thread related information, e.g. execution time, and prepare them for graphical presentation. I already develop it for a while beginning with the early Sculpt versions. In the last weeks I extended it in my leisure time with some extra features, with the goal to selectively monitor behaviour of components of interest over some time. The main impulse was triggered during the work on audio on Sculpt, where I missed a basic online tool that supports me to get better insights into some behaviour of the system. Continue...
-
On Ambient Authority
This blog is the second in a series on Genode for not-so-technical people. In the blogs I try to answer the question what Genode offers on safety and usability that other systems don't. Read the first part here. Continue...
-
HoG 19.0, bounties
A few lines of news about HoG, and crossing fingers for wind in the bounties sails. Continue...
-
Updated packages for Sculpt CE
With the image release of Genode's Sculpt CE yesterday, it is time to report about some updated packages of mine. Continue...
-
Sculpt as a Community Experience
We just released the fourth version of Sculpt OS today. It is subtitled "Sculpt as a Community Experience". In this posting, I'd like to explain what's behind this slogan. Continue...
-
Tweaking existent packages to your needs
Since the first Sculpt OS version, I have used several virtual-machines side-by-side. One for web-browsing, another for e-mail processing, and of course one for development purposes. At that time, I had some trouble using those three VMs at once with respect to performance and stability using the Rump Ext2 filesystem server. So, I decided to use dedicated partitions of my hard-drive for the VMs instead of image files as block device backend. Although, that early problems were solved, I've kept my already installed Linux VMs in the corresponding partitions. Continue...
-
Remote-control your test target via power scripts
In this post, I take Valerius's excellent article about remote booting and Intel AMT as an excuse for a detour from network-development setups into remote power control with Genode's run tool. Continue...
-
System programming - wrestling with hardware
As any system programmer knows, we do have to deal with a lot of uncommon bugs. So I like to take the chance to describe one we encountered a few days ago. After I had a demonstrator working for an ARM based system on a chip (SoC), the scenario suddenly started failing at random instructions at varying addresses and also in ever changing components. An example would be an illegal memory access (page fault) caused by this ARM instruction: Continue...
-
Remote booting of x86 machines with PXE and Intel AMT
Two weeks ago, I ordered a refurbished Thinkpad T420, which is compatible with many OS'es, including Genode/Sculpt. It is listed in cnuke's Genode unofficial HCL. So, I, from the beginning, wanted to set up the usual workflow of Genode developers. Continue...
-
Integrating and running automated tests - Part 2
In this article I'd like to give a very practical guide about how you can create, integrate and run your custom test scenarios on Genode. This is the second of two parts. If you have missed the first part, you may want to read it first. Continue...
-
How to start my VM with the new Sculpt-CE preview
Things have changed a bit with the revised software deployment in the recently published preview of Sculpt CE. No matter wether you are updating from Sculpt VC and have installed your VM following the Sculpt-VC documentation or whether you downloaded a fresh Debian with the Sculpt-CE preview - this brief walk-through might help you getting it to run (again). Of course, once Sculpt CE gets released, the added documentation will explain things way more comprehensive. Continue...
-
Disposal browser VMs
Since the early beginning of Sculpt I host and maintain two packages for running an up-to-date Firefox as VM. My main motivation is to have the door to the Internet out-of my "work" VM, which contains all sorts of sensible data. Continue...
-
Download Debian VM and the VirtualBox Guest Additions
Since most of the previous launchers but a few vital ones are gone and superseded by the index mechanism, the download_debian package is now located in Depot → cnuke → Virtual Machines → download_debian. As Debian's guest-additions packages might target a newer VirtualBox host version it is now recommended to install them in a different way to properly match the currently supported host version. Continue...
-
On Microkernels versus Monoliths
I like the Genode platform, it offers me a system that is much safer against all those bad things that threaten current systems. Computer viruses that cripple Mac, Windows and Linux are mostly eliminated. These become at most an annoyance, if they have any success at all. Also, the regulary patching to close security holes can become a faint memory. Here endeth the advertisement. Continue...
-
A Java based network filter on i.MX6 SoloX
With the recent advancements in home automation (smart home) and the Internet of Things (IoT), networking capable embedded technology has started to enter our working and home environments at an ever increasing pace. Often this leads to feature and performance driven developments that neglect the security implications of such environments. Is it desirable that the smart light bulb, when part of your local network, can access your Internet connection? Who does control the data flow in such scenarios? We think security must be an important measure in those environments, at least on par with the feature set. To accommodate the security requirements we introduce the following exemplary network filter scenario. Continue...
-
FOSDEM'19 - Microkernel devroom (update)
This is a follow up to my FOSDEM'19 post - that also has been updated. Norman's and Jakub's lightning talks are now available as MP4 and WEBM streams. Continue...
-
Native audio with Sculpt VC
On the way back of FOSDEM 2019 I recognized that I missed to setup audio for my Sculpt VC machine. I used it already with Sculpt TC, but somehow I never took the time to re-integrate it with Sculpt VC. The next days after the FOSDEM trip I consulted my personal audio advisor -Josef- how to setup things. Continue...
-
FOSDEM'19 - Microkernel devroom
The year 2019 marked Genode Lab's turn to organize the Microkernels and Component-based OS devroom at FOSDEM 2019 in Brussels. The devroom has been established in 2012 and every year since, varying open-source organizations or private microkernel enthusiasts have taken over and passed the organization helmet on. We had a great time meeting familiar and new faces at the devroom and, in my personal opinion, we had an interesting mixture of talks this year. I especially want to thank the Unikernel speakers, since they brought a breath of fresh air into the devroom, while staying at eye-level regarding the technical skills required for systems programming. So, thank you! Continue...
-
On Overbroad Internet Comments
Genode is not always remembered for its more remarkable accomplishments, but instead for less identifying features of the project. Many of these recollections evolve into critique based in aphoric generalisms about C++, of XML, or of microkernels. This has been especially true of Genode's choice of C++. I examine here why this is so, and why it tends to bring about less constructive conversation. Continue...
-
GUI chronicles 2: Mandelbrot
Let's go short and sweet this week, with a "picture's worth a thousand words" situation report, and some continuation of community conversation. Continue...
-
A convenient shortcut for working with test packages
The train to FOSDEM was the perfect setting for creating a dirty little tool for quickly building and running single test packages. Continue...
-
Getting started with Genode network developments
Yesterday afternoon I had to take care of duties that kept me away from the office, so motivated by a question on the mailing list last week, I decided to write down some handy tips related to Genode developments and networking. Continue...
-
A brief history of symbol maps on Genode
When programming against Genode's shared libraries one might encounter things like this: Continue...
-
Copy system state via JTAG
Currently, I'm working on Genode to support NXP's i.MX7 Dual SABRE board. In the past, we had to manage a zoo of quite different ARM hardware here at Genode Labs including nightly builds and testing. The hardware was ranging from ARM1176 to Cortex A15, from Broadcom, Texas Instruments, Samsung to NXP SoCs. Having a variety of hardware is good for stressing the generic codebase and to make Genode attractive for different user groups, but hindering the development of a still moving kernel like Genode's hw. Continue...
-
Integrating and running automated tests - Part 1
In this article I'd like to give a very practical guide about how you can create, integrate and run your custom test scenarios on Genode. In order to do so, I'll take a little real-life example and walk through the single steps of the very same procedure that I follow everytime I develop a new test. I'll try to concentrate rather on the big picture then on all the details. But in turn I'll give you pointers to further documentation whenever sensible. Continue...
-
Locking up your Sculpt VC screen
Using Sculpt on my working machine as day-to-day OS became quite comfortable. Still, some inconvenient stayed. One specific one appeared whenever I started for lunch - I wanted to lock the screen. Currently, this functionality is missing - because of that I had to power down my machine during lunch. Obviously, this is annoying - so I started to investigate how to solve the issue. Continue...
-
Testing components directly on Sculpt via the depot user local
Software is installed on Sculpt using the deploy mechanism that incorporates a caching component to keep the memory footprint for often used parts of the system constant. For the time being it is not contemplated to easily replace already loaded files and is therefor unsuited for testing components. However, there is still a way to perform the testing on Sculpt: the depot user local. Continue...
-
GUI basics 2: IPC
This time around let's explore a few inter-related topics: Continue...
-
Genode's Conscious C++ dialect
C++ is a power tool that scales from embedded systems to the most complex software stacks imaginable. When we started Genode in 2006, the feature set of the language was extremely persuasive. It strikes a great balance of giving the programmer full control whenever needed while also featuring means of expressing high-level software designs. This power is a two-edged sword though. In this series of postings, I'd like to share how we learned to handle it without regrets. Continue...
-
GUI chronicles
My next GUI basics post is delayed by one slot : I have made progress on haiku-on-genode and it's important – for my sanity if nothing else – to do a sort of "checkpoint" here first. Continue...
-
How to prepare an x86 notebook for debugging
For my first article on Genodians, I recorded my preparation steps to enable a recent notebook model for developments including the preservation of the OEM Windows installation, remote power control, and serial-over-lan logging. Continue...
-
GUI basics
As mentionned on the mailing-list, TTS develops radio automation software for Haiku. We are in need of a second, stable platform. I thus intend to port our applications to Genode and yet preserve much of its source code and its use of the Haiku APIs – meaning I've embarked on e.g. writing a libbe.so that makes calls to Nitpicker and an RM-mapped framebuffer instead of sending RPC-like commands to an app_server as is the case in Haiku. Continue...
-
A new place for sharing Genode-related stories
Genodians.org presents ideas, announcements, experience stories, and tutorials around Genode, written by people like you and me. Genode users and developers are very welcome to join our tribe of authors! Continue...