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.
Most importantly, you can find the latest Sculpt OS image along with up-to-date documentation here:
- Sculpt download page
- Up-to-date documentation
By default, Sculpt uses the US-English keyboard layout but it now offers a few alternative keyboard layouts like French and German right in the settings menu at the upper left corner.
A change of this setting is reflected in the config/managed/event_filter file. For tweaking the input processing beyond the keyboard-layout setting, you may copy this file to config/event_filter using the inspect view.
inspect:/> vim /config/event_filter inspect:/> cp /config/managed/event_filter /config/event_filter
With the /config/event_filter file in place, you may notice that the keyboard-layout menu vanished. This is because now the user has taken over manual control. (BTW, one can get the menu back at any time by deleting the file). This event-filter configuration offers customization opportunities such as the remapping of keys (e.g., for mapping capslock to escape), tweaking pointer acceleration, scroll-button handling, and the definition of modifier keys.
Note that the keyboard-layout definitions have moved to the /config/keyboard/ subdirectory to keep the /config/ directory tidy and neat. Caution: When updating Sculpt OS, don't reuse your existing event-filter configuration unmodified! You need to replace the chargen includes, pointing to the new location, e.g.,
<include rom="en_us.chargen"/> <include rom="special.chargen"/>
must be changed to
<include rom="keyboard/en_us"/> <include rom="keyboard/special"/>
We reworked the resource-assignment controls for deploying a component. Below the CPU-affinity matrix we introduced in the previous release, the dialog now also allows for the selection of the component's scheduling priority. Note that here the notion of priority refers to hard static priorities as opposed to nice levels. That is, a high-priority activity prevents all lower-level priorities from executing. Consequently, the assignment of a high priority comes at the risk of starving lower-priority components. The dialog presents four options:
The highest priority should be preserved to latency-critical device drivers such as audio drivers. This option is also a sensible choice for trusted components that must stay somewhat responsive under any condition. For example, the components of the management GUI operate on this priority to preserve the user's control over the system even in the event of a rampaging high-priority device driver.
The second-highest priority is recommended for latency-sensitive applications such as audio and video players as well as their dependencies. For example, it is the appropriate priority for window-management components.
The default priority is suitable for all regular applications as well as storage and networking components.
The lowest priority is designated for non-interactive best-effort workloads such as long-running computations. By assigning the background priority to such components, they won't impede the user's perception of the responsiveness of the system.
The new capture and event interfaces serve as counter parts of the GUI interface. Whereas the GUI interface allows a client to put pixels on screen and receive input events, the capture and event interfaces allow a client to capture the screen and inject user-input events into the system. Normally, these interfaces are used by graphics and input-device drivers. However, they are also useful for remote-desktop scenarios, virtual keyboards, or for taking screen shots.
Note that those interfaces are security critical. When handing out a capture interface to a component, the component becomes able to observe the screen content of all applications present at the GUI server. Vice versa, by handing out an event interface to a component, the component becomes able to inject user-input events to the GUI server, acting on behalf of the user. The built-in choices allow a component to be connected to either the system-global GUI server, or specifically to the management GUI.
Thanks to Genode's recent support for pluggable network drivers, the wireless and wired network drivers can now safely be restarted without doing any harm to the network-application stacks on top.
Besides the above mentioned user-visible changes, there are several further improvements under the hood.
Since the first introduction of the Chromium-based Falkon web browser to Sculpt OS half a year ago, we continuously improved its performance and stability. The new version runs circles around the initial port. You can find it in the "Tools" menu of the package index by Christian Prochaska (cproc).
We have now established a consistent alphabetic order of menu items and file lists displayed in the management interface, which eases navigation.
On modern Intel-based machines, Sculpt OS leverages Intel Hardware P-states (HWP) for improved power and thermal management now.
The new version leverages Genode's heartbeat-monitoring mechanism to track the health of the Intel graphics driver. Should the driver get stuck - which can in principle happen when connecting an unusual output device - the driver will automatically be restarted. This way, the Sculpt system will recover after unplugging the unsupported device.
Robustness against malfunctioning USB HID and PS/2 drivers. Previous versions of Sculpt OS had a hard dependency on the well-being of user-input drivers. The new version has become able to deal gracefully with a failing driver - e.g., when connecting a USB device that lets the HID driver trip over - the remaining Sculpt system stays in tact. E.g., a peripheral connected via PS/2 can still be used, vastly easing error diagnosis.
Optional support for CPU-load balancing as introduced by Genode 20.11. You can find the CPU-load balancer in the package index of Alexander Böttcher (alex-ab) in the "Migration" menu. By the way, this particular package index hosts a number of further highly interesting packages, ranging from ACPI support, over CPU-load monitoring, to browser-VM appliances with Firefox pre-installed.
The music-player scenario that was exemplified in the release notes of Genode 20.11 can be readily installed from the package index of Josef Söntgen (cnuke).
I wish you a lot of fun with the new version of Sculpt OS!