Ultramarine Linux is a Fedora based GNU/Linux distribution developed by Fyra Labs, a professional services provider in various information technology areas. The distribution strives to be easy to use, stable, and secure with features to benefit developers as well as casual users. Some of the value it adds to the excellent Fedora base is the inclusion of additional repositories for software not distributed by Fedora. The third-party RPM Fusion, which provides, among other software, proprietary drivers for NVIDIA GPUs, is enabled by default. Fyra Labs also enables its own the Terra Repository, which includes some software, although not proprietary, that is not packaged by Fedora.
Ultramarine comes in various editions: a KDE Plasma Edition, a GNOME Edition, a Pantheon Edition, and the Flagship Edition featuring the Budgie desktop environment. This article reviews the KDE Plasma Edition release of Ultramarine 39, based on Fedora 39
I recently discovered Ultramarine Linux from a review of one of its previous on Distrowatch, after which I installed the Flagship Edition, featuring the Budgie desktop environment, on my tertiary laptop. After using it briefly, I found it to be extremely refined, adding to the already excellent Fedora base, so I decided to install the KDE Plasma Edition on my primary multi-booting laptop, a Lenovo LEGION 5i PRO 16ITH6 Review [82JF002RUS]Lenovo Legion 5i Pro, in place of the Fedora I had been planning to install on a Btrfs filesystem with an openSUSE style subvolume layout and Snapper integration. This will be a permanent installation that will join an existing Arch installation, installed with the openSUSE Btrfs/Snapper configuration using the process described in An Arch Linux Installation on a Btrfs Filesystem with Snapper for System Snapshots and Rollbacks, which has been running reliably with this configuration for three years, and an existing openSUSE Tumbleweed installation, which of course comes out-of-the box with this configuration and has been running reliably for almost as long.
Because Fedora's Anaconda installer, also used by Ultramarine, does not support complex hierarchical subvolume layouts, I converted an initial installation of Ultramarine using Anaconda to the openSUSE style of subvolume layouts and Snapper integration using the process described in A Fedora Installation with an openSUSE Style Btrfs Subvolume Layout and Snapper Integration for System Snapshots and Rollbacks.
A full review of Ultramarine Linux 39 KDE Plasma Edition is presented below, but for readers short on time, my observations of the distribution are summarized here.
In my brief use of Ultramarine's Budgie based Flagship Edition, I found that the distribution put extensive effort in providing an excellent Budgie experience, for example ensuring all of the Budgie extras, such as panel widgets ere available. As a Fedora based distribution, this experience is largely due to the already reliable and refined Fedora base, which makes an excellent development workstation. Because of my very positive impression of the Flagship Edition I choset to install the distribution's KDE Plasma edition instead of Fedors's KDE spin, as I had been planning to with a customized openSUSE style Btrfs/Snapper configuration.
Understandably, the amount of work done on desktop environment specific elements in the Plasma edition was not as extensive as the Flagship edition since this desktop not really the focus of the distribution. But those who prefer Plasma do get the benefit of Ultramarine's additions to the Fedora base, such as additional repositories enabled out-of-the box, a better -- arguably -- shell than Bash configured by default, and a promised performance improvement provided by incorporating System76 Scheduler.
In my case, because there was considerable effort in modifying the default Ultramarine (or Fedora) installation to the openSUSE Btrfs/Snapper configuration, Ultramarine's additions were not significant in saving the amount of time to a usable system. However, for potential Fedora users who will choose one of the typical storage configurations during installation, Ultramarine's enablement of additonal repositores, including the developers' own Terra repository is significant in providing a usable Fedora system out-of-the-box.
The pre-installation activities, i.e., finding the appropriate download link and finding checksums and GPG signatures or keys for ISO verification, for some distributions can be difficult, if the distribution does not prioritize these elements of its infrastructure. In Ultramarine's case, "Download" links are prominent on its website, and easy to find for each edition. Links to the checksum of each ISO is also easy to find as they are directly below the download links. GPG signatures or public keys, however are nowhere to be found on Ultramarine's website or GitHub pages. I did stumble upon the GPG key hidden on one of the GitHub pages for the Flagship Edition when I first installed it on my tertiary laptop, but it seems to have disappeared since then. I could not find the GPG signature or public key for the KDE Plasma Edition. Even Ultramarine's wiki providing instructions on ISO verification only mentions download integrity verification and makes no mention of authenticity verification using GPG signatures. This deficiency is the only area in which the distribution could be improved.
The lack of authenticity verification through GPG signed ISOs or GPG signed checksum files is common with many -- otherwise good -- distributions that are small, immature, or lack resources provided by corporate backing. As with Ultramarine, this happens to be the case in the recently reviewed Garuda Linux KDE Dragonized Edition.
Incidentally, Mageia has the best website in this respect, which easily allows filtering for the appropriate download by selecting installation type, desktop environment, target architecture, and download type. And after the download link is activated and the download is initiated, a page with comprehensive instructions for authenticity verification using GPG, in addition to download integrity verification, is opened.
The KDE Plasma Edition installation ISO, like the other three editions, is a fully functional live environment. It was faithfully representative of the installed system, except the lack of an available X11 session, as described below.
It has a range of applications to allow it to be useful even without installation of the OS. The Flagship Edition ISO I dded to a USB thumb drive even seemed to support persistence. The KDE Plasma Edition, however, definitely does not.
The live environment is entered, as usual, through the GRUB menu, which has two options, one to enter the live environment and another to test the installation image and then enter the live environment. After selecting either, the user is taken to the desktop environment without having a chance to select the session type, automatically using a Wayland session, although the installed system allows selection of an X11 session, as well as the default Wayland, from the SDDM login screen. This was one of the areas I had any issue with the installation ISO, because the screen recording application I used to record the installation and process to convert the installation to the openSUSE Btrfs subvolume layout and Snapper integration only had experimental support for Wayland.
Ultramarine, as a distribution based on Fedora, uses Anaconda, the installer used by Fedora and related distributions, including RHEL, the use in which was discussed in the review of Red Hat Enterprise Linux 9. It is telling of Ultramarine's character as closely following its parent in that the distribution uses Anaconda instead of the popular Calameres installer, as many distributions do, even if they are derivatives and their base distribution uses another installer.
Anaconda is a fairly advanced installer, allowing for advanced configurations, including the ability to set up encrypted RAID partitions. It is organized in a "hub and spoke" paradigm where its major parts are launched from a central screen. Users select each in turn, enter and modify installation parameters, and return to the central screen. Once all parts have been visited and parameters entered to the installer's satisfaction, the installation can proceed when the final confirmation button is pressed in the central screen. The following images show the central navigation screen and each of the components.
Anaconda provides two alternative components for configuring storage for the installation target. The older and traditional component, and Blivet-GUI, an embedded advanced partitioning component. This was used to initially configure storage during installation -- as shown in the following set of images -- before modifying the installed system to follow the openSUSE Btrfs subvolume layout and Snapper integration, as described in A Fedora Installation with an openSUSE Style Btrfs Subvolume Layout and Snapper Intergration for System Snapshots and Rollbacks.
Despite Blivet-GUI's limitations, described in the article referenced above, the initial installation was straightforward. There was one serious installation issue to be aware of, however, regarding how an existing systemd-boot boot manager in the ESP partition affects the installation, whatever the filesystem and storage configuration chosen for the installation target. The issue was that existing directories with a thirty-two character alpha-numeric name created by systemd-boot will cause the installed system's kernel to be written to the ESP partition, mounted at /boot/efi instead of /boot, as discussed in a Fedora Forum thread. In my case, a previous installation of KaOS, which only allows systemd-boot or rEFInd for installations on UEFI systems, had created such a directory on my Acer, and on my Legion an old installation of PopOS which uses systemd-boot by default instead of GRUB created this directory. On both laptops, because the kernel was installed in the ESP, this caused the GRUB menu to be created with entries that did not contain a valid path to the kernel image, causing a non-booting system when the entry was selected. On the Acer, where I first encountered the issue, I had to reinstall the Ultramarine Linux 39 Flagship Edition after resolving the issue by mounting the ESP in the live ISO environment and removing the directory. On the Lenovo, I made sure to remove the directory before attempting the installation of the KDE Plasma Edition. The offending directory on the Legion is shown in the following image, captured from the KDE Plasma Edition ISO live environment.
On first boot of Ultramarine KDE Plasma Edition, the Plasma Welcome application is presented. The application provides a brief introduction to Plasma's capabilities and features, as well as allowing integration of supported online accounts. Its screens are shown in the following set of images.
The Ultramarine Linux KDE Plasma Edition theme is typical of other distributions' Plasma appearance. The desktop layout is the standard Plasma panel at the bottom of the screen featuring the Icons Only Task Manager and System Tray widgets, among others. The color scheme is also standard Plasma with the Breeze Dark color scheme activated by default. The only notable aspect of the distrubtion edition's appearance is the availability of the Lightly Plasma Application Style, a fork of the default Plasma application style, Breeze, that modernizes the default by removing some decorative elements, such as frames around panels. It is also more configurable than Breeze, although not as configurable as Kvantum based application styles. The Plasma Application Styles screen of Plasma's System Settings with two of the Lightly style's configuration dialog tabs is shown in Image 6 and Image 7 in the following set.
The most substantive value addition that Ultramarine makes to the already excellent Fedora base is the out-of-the box enablement of additional repositories. The third-party RPM Fusion repositories which distribute software as precompiled RPMs for current versions of Fedora and Red Hat Enterprise Linux, including proprietary Nvidia drivers, are enabled out-of-the box, saving users some time after installation.
Ultramarine also includes two of its own repositories in the system, the Ultramarine repository, used mainly for the distribution's settings packages, and the Terra repository, maintained by Fyra Labs, the developers of Ultramarine Linux. The following set of images show the enabled and disabled repositories, and the software installed from the Fyra maintained repositories.
The only way I have seen that Ultramarine deviates from its Fedora base in a fundamental way is in its choice of the default shell. The distribution uses zsh as the default login shell. Bash is also available and provides the sh command via symbolic link, and by providing this command it is essential in the system. It is used, for example, as the interpreter for the SDDM .sh script that is executed at user login and actually invokes zsh as the login shell.
It is also set as the interactive shell in Konsole terminal emulator sessions by specifying /usr/bin/zsh as the command that is executed when Konsole is started.
Like fish, the "friendly, interactive shell," zsh is intended primarily to be an interactive shell. It provides advanced syntax highlighting, error checking, and completion. It is however, in my opinion, lacking in all of these areas compared to fish. Fish is especially robust in its command completion capability which parses the man pages available on the system to provide completions, as well as providing an advanced interface for viewing and cycling through completion alternatives. So, it seems to me that if the distribution wants to deviate from the typical choice of Bash as both the login and interactive shell, to choose fish as the interactive shell and Bash as the login shell.
Besides, the superiority of fish as an interactive shell, there are also some annoyances with zsh that users accustomed to Bash will have to overcome, which may make fish the better choice for use as an interactive shell. The most annoying characteristic of zsh for me is that the [HOME] and [END] keys have no effect on its command line.
There is one advantage, however, to the choice of zsh as both the interactive and login shell, as opposed to fish and Bash in that there will not be a situation where a user would switch to Bash from a fish shell to run a command in a familiar way. This is due to the fact that zsh is related to the original Bourne Shell whereas fish is not. The zsh configuration also includes expressions to avoid issues when it used to interpret Bash or other sh scripts. The configuration also sets zsh to emulate the behavior of Korn Shell (ksh), another shell in the Bourne Shell family.
In addition to the non-typical shell, Ultramaring also customizes the shell prompt with Starship. It uses the default configuration provided by the upstream project, so the prompt itself is not as interesting as Garuda's or my own custom configuration, but it is informative, depending on the current directory. Among the information it provides is information on about a Git repository if the present working directory is at some level inside the root of a repository.
In the few weeks I have used Ultramarine, I have only noticed one area of performance optimization; that is the use of the System76 Scheduler, originally developed by System76 for use with Pop Shell, and installed by the Terra repository package, system76-scheduler.
The contents of the package, as displayed by the DNF command in the Konsole window in the following image, includes a systemd service -- com.system76.Scheduler.service, a binary daemon started by the service -- /usr/bin/system76-scheduler, two .kdl and one D-Bus related .conf configuration files in the system configuration directory, and two .kdl and one D-Bus related .conf configuration files in the system data directory. The configuration files indicated as being in the system configuration directory are not actually installed by the package because they are included in the RPM spec as %ghost files; such files are if they are placed there by the user, for example by copying the configuration files from the system data directory to the system configuration directory, the package would own the files (see Directives For the %files list) .
The systemctl status query of the service is shown in the following listing.
brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ sudo systemctl status com.system76.Scheduler.service [sudo] password for brook: ● com.system76.Scheduler.service - Automatically configure CPU scheduler for responsiveness on AC Loaded: loaded (/usr/lib/systemd/system/com.system76.Scheduler.service; enabled; preset: enabled) Drop-In: /usr/lib/systemd/system/service.d └─10-timeout-abort.conf Active: active (running) since Wed 2024-04-10 19:19:06 EDT; 1 day 20h ago Main PID: 1320 (system76-schedu) Tasks: 8 (limit: 28398) Memory: 294.5M CPU: 5.034s CGroup: /system.slice/com.system76.Scheduler.service ├─1320 /usr/bin/system76-scheduler daemon ├─1511 /usr/bin/python3 /usr/share/bcc/tools/execsnoop └─1787 /usr/bin/system76-scheduler pipewire Apr 10 19:19:05 Ultramarine-16ITH6 systemd[1]: Starting com.system76.Scheduler.service - Automatically configure CPU scheduler for responsiveness on AC... Apr 10 19:19:06 Ultramarine-16ITH6 system76-scheduler[1320]: INFO monitoring process IDs in realtime with execsnoop Apr 10 19:19:06 Ultramarine-16ITH6 systemd[1]: Started com.system76.Scheduler.service - Automatically configure CPU scheduler for responsiveness on AC. brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] took 3s ❯
According to the project's GitHub page, it is a
Scheduling service which optimizes Linux's CPU scheduler and automatically assigns process priorities for improved desktop responsiveness. Low latency CPU scheduling will be activated automatically when on AC, and the default scheduling latencies set on battery. Processes are regularly [swept] and assigned process priorities based on configuration files. ...
These changes result in a noticeable improvement in the experienced smoothness and performance of applications and games. The improved responsiveness of applications is most noticeable on older systems with budget hardware, whereas games will benefit from higher framerates and reduced jitter. This is because background applications and services will be given a smaller portion of leftover CPU budget after the active process has had the most time on the CPU.
Phoronix also describes it and its potential to improver performance:
Last week System76 released System76-Scheduler 2.0 as their Rust-written Linux desktop scheduler that serves as a user-space daemon to dynamically manage process priorities to favor performance and responsiveness. [The new version includes the ability to detect] additonal processes, Pipewire integration, new performance optimizations, and other changes. With System76-Scheduler 2.0.1 there is now a "significant" reduction in total memory and CPU consumption. This performance work includes faster process info look-ups from PIDs, reduced heap allocations in hot paths, a new garbage collection method, and more. The v2.0.1 release also has some daemon fixes, Gamescope has been added to the scheduler's detection, other game launchers also now detected, and various other updates.
A Kwin -- Plasma's window manager -- script is included which informs the System76 Scheduler which GUI window has focus so that it can be prioritized by the scheduler. However, it is not enabled by default. The following image shows the Plasma System Settings (Workspace -> Window Management -> KWin Scripts) KWin settings screen where it can be enabled.
A benchmark tools such as Phoronix Test Suite (described in Introduction to Phoronix Test Suite) is required to objectively state the performance improvement due to the use of the scheduler, but in my use of Ultramarine I noticed that starting and stopping a headless VirtualBox virtual machine is much faster. Plasma desktop effects also seem much quicker and smoother.
The installation defaulted to Wayland on both the Flagship Edition installed on the Acer and the KDE Plasma Edition installed on the Lenovo, although Plasma had not defaulted to Wayland yet for Plasma 5.27, the version installed in Ultramarine's KDE Plasma Edition. The Plasma Edition did not have any issues with the Wayland session, apart from an insignificant difference in behavior between the two: the icon of the manually installed Firefox Developer Edition was replaced with an icon of the Wayland logo when the application was open. For some reason, this did not happen with Firefox Beta, despite both being installed as described in Installing Multiple Versions of Firefox Including Multiple Profiles.
The Flagship Edition did have a problem -- one that I hesitate to mention since I only used it very breiefly -- when connecting an external screen. I simply switched to an X11 session for the very brief time I used this edition.
All three instalations of Ultramarine Linux were on Optimus laptops, the Flagship Edition on the Acer with a GeForce GTX-960M, the KDE Plasma Edition on the Dell with a GeForce 1050 Ti Mobile and on the Lenovo with a GeForce RTX-3050. In all three cases, the FOSS Nuveau driver was the only driver installed for the Nvidia GPU, but despite the limitations, for example not using the dedicated video memory, the default worked well enough, with even external monitors working. On the Acer, on which I only used Ultramarine for a matter of hours, an external UHD TV connected via HDMI had no problems, except for having to initially use an X11 session. On the Lenovo which I used Ultramarine KDE Plasma Edition extensively for weeks also had no problems, even when connecting a portable AOpen monitor with Display Port through a USB3/Thunderbolt4 connector and an HDMI to mini-HDMU connector. I only used the Dell to work out the modification of the initial installation to the openSUSE Btrfs/Snapper confiiguration and never used an external monitor, but there were no issues.
Later, I describe the installation and configuration of the proprietary NVIDIA driver, and the state of the system after, but in the immediately following set of listings are the graphics characteristics of the default system. The first listing shows the recognized GPU on the PCI bus.
brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ lspci | grep -e VGA 00:02.0 VGA compatible controller: Intel Corporation TigerLake-H GT1 [UHD Graphics] (rev 01) 01:00.0 VGA compatible controller: NVIDIA Corporation GA107BM [GeForce RTX 3050 Mobile] (rev a1)
brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ lsmod | grep nvidia nvidia_wmi_ec_backlight 12288 0 video 77824 5 nvidia_wmi_ec_backlight,ideapad_laptop,xe,i915,nouveau wmi 36864 6 video,nvidia_wmi_ec_backlight,wmi_bmof,ideapad_laptop,mxm_wmi,nouveau brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ lsmod | grep nouveau nouveau 3641344 2 mxm_wmi 12288 1 nouveau drm_gpuvm 45056 2 xe,nouveau drm_exec 12288 3 drm_gpuvm,xe,nouveau gpu_sched 69632 2 xe,nouveau i2c_algo_bit 20480 3 xe,i915,nouveau drm_display_helper 237568 3 xe,i915,nouveau drm_ttm_helper 12288 2 xe,nouveau ttm 110592 4 drm_ttm_helper,xe,i915,nouveau video 77824 5 nvidia_wmi_ec_backlight,ideapad_laptop,xe,i915,nouveau wmi 36864 6 video,nvidia_wmi_ec_backlight,wmi_bmof,ideapad_laptop,mxm_wmi,nouveau
The driver associated with the NVIDIA GPU is shown to be nouveau in the following listing, first in a cat output of one if the files associated with the GPU in the /sys filesystem, and then with lsmod.
brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ ls -laH /sys/bus/pci/devices/0000:01:00.0/driver total 0 drwxr-xr-x. 2 root root 0 Apr 23 20:35 . drwxr-xr-x. 43 root root 0 Apr 23 20:35 .. lrwxrwxrwx. 1 root root 0 Apr 23 20:35 0000:01:00.0 -> ../../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0 --w-------. 1 root root 4096 Apr 23 20:35 bind lrwxrwxrwx. 1 root root 0 Apr 23 18:28 module -> ../../../../module/nouveau --w-------. 1 root root 4096 Apr 23 20:35 new_id --w-------. 1 root root 4096 Apr 23 20:35 remove_id --w-------. 1 root root 4096 Apr 23 20:35 uevent --w-------. 1 root root 4096 Apr 23 20:35 unbind brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ lsmod | grep nvidia nvidia_wmi_ec_backlight 12288 0 video 77824 5 nvidia_wmi_ec_backlight,ideapad_laptop,xe,i915,nouveau wmi 36864 6 video,nvidia_wmi_ec_backlight,wmi_bmof,ideapad_laptop,mxm_wmi,nouveau brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ lsmod | grep nouveau nouveau 3641344 2 mxm_wmi 12288 1 nouveau drm_gpuvm 45056 2 xe,nouveau drm_exec 12288 3 drm_gpuvm,xe,nouveau gpu_sched 69632 2 xe,nouveau i2c_algo_bit 20480 3 xe,i915,nouveau drm_display_helper 237568 3 xe,i915,nouveau drm_ttm_helper 12288 2 xe,nouveau ttm 110592 4 drm_ttm_helper,xe,i915,nouveau video 77824 5 nvidia_wmi_ec_backlight,ideapad_laptop,xe,i915,nouveau wmi 36864 6 video,nvidia_wmi_ec_backlight,wmi_bmof,ideapad_laptop,mxm_wmi,nouveau
The next listing shows that at the time the command was executed, the NVIDIA GPU was on and in the full power consumption mode, the ACPI Device Powwer State D0 (see target for the meaning of the ACPI power state and the reason that newer NVIDIA GPUs can never be completely off). The second part of the listing shows some power parameters of the internal power management of the GPU, notabl is the auto mode for the control parameter.
brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ cat /sys/bus/pci/devices/0000:01:00.0 power_state D0 brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ cat /sys/bus/pci/devices/0000:01:00.0/power/{autosuspend_delay_ms,control,runtime_active_time,runtime_status,runtime_suspended_time,wakeup} 5000 auto 7954823 active 125317 disabled
Even more notable is the next listing, which shows that at some time after the command shown in the previous listing of the ACPI power state, the GPU is in a suspended state, ACPI Device Power State D3cold, even without the NVIDIA driver being loaded. Another indication, apparently, that the Nouveay driver has made progress in power management of relatively newer NVIDIA post-Turing generation GPUs, or at least in querying its internal power status.
brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ cat /sys/bus/pci/devices/0000:01:00.0/power_state D3cold brook on Ultramarine-16ITH6 ordinatechnic_content on exp [!?] ❯ cat /sys/bus/pci/devices/0000:01:00.0/power/runtime_status suspended
Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: OpenGL vendor string: Intel Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: OpenGL renderer string: Mesa Intel(R) UHD Graphics (TGL GT1) Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: OpenGL version string: 4.6 (Core Profile) Mesa 23.3.6 Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: OpenGL shading language version string: 4.60 Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: Driver: Intel Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: GPU class: Tiger Lake Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: OpenGL version: 4.6 Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: GLSL version: 4.60 Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: Mesa version: 23.3.6 Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: X server version: 1.23.2 Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: Linux kernel version: 6.8.4 Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: Requires strict binding: no Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: GLSL shaders: yes Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: Texture NPOT support: yes Apr 23 18:50:07 Ultramarine-16ITH6 kwin_wayland[2055]: Virtual Machine: no
Ultramarine Linux, while generally an excellent distribution, and the KDE Plasma Edition providing a good Plasma experience, the edition did have a few issues. The first described in Installation, above, while serious will not affect anyone who had not previously installed systemd-boot. The OS did also have post-installation issues, one related to problematic hibernation specifically due to the laptop on which the distribution was installed, and another minor one in which the Global Menu widget -- a plasmoid not used by Ultramarine's default Plasmashell, but must be added by the user -- does not display the menu of GTK applications.
In its default state after installation was complete (including the modifications described in A Fedora Installation with an openSUSE Style Btrfs Subvolume Layout and Snapper Intergration for System Snapshots and Rollbacks) Ultramarine Linux, as with all distributions installed on the Lenovo Legion 5i Pro, had problems with hibernation. The issue was related to the ACPI OEM Platform S4 Handler shown in the following image taken from a larger image found in Section: ACPI Power States of /general-guides/1/Hardware/2/Graphics/3/Nvidia/nvidia-optimus-on-linux in which the ACPI power states are described.
The problematic hibernation behavior on the Legion -- also described in Lenovo LEGION 5i PRO 16ITH6 Review [82JF002RUS] -- required interaction with the rEFInd boot manager after hibernation was requested to ultimately enter hibernation. (I have set rEFInd as the default boot manager from which I select the GRUB of the distribution I want to boot; this is convenient when multi-booting because rEFInd can be permenantly set as the default boot manager. If a distribution's kernel has been compiled with an EFI stub, the kernel can be started directly from rEFInd bypassing its GRUB menu.)
Specifically, the observed problematic behavior on the Legion when requesting hibernation, for example, with
systemctl hibernatethe system would
The issue was easily resolvable, such that the system would directly the hibernation state, and not present the rEFInd interface, by editing the systemd-sleep configuration to override some configuration parameters. To modify the systemd-sleep parameters, I created a drop-in configuration file -- as suggested in the systemd-sleep documentation -- at /etc/systemd/sleep.conf.d/99-local.conf by copying /etc/systemd/sleep.conf and replaced the existing values of HibernationMode such that
#HibernateMode platform shutdownbecame
HibernateMode shutdownand
#HybridSleepMode suspend platform shutdownbecame
HybridSleepMode suspend shutdown
The effect of the configuration modification was a change in the value written to the file /sys/power/disk by the systemd suspend/hibernate services. When effecting a system hibernation, these services cause each of the actions corresponding to the configruation parameter in the order that they appear in the paramater assignment, by writing each in turn to the file /sys/power/disk. The first action that is completed without an error is the one that is that is put in to effect. The configuration change prevented "platform" as one of the possible values that can be written to /sys/power/disk. (See systemd-hibernate.service(8) and freedesktop.org systemd-sleep Configuration Documentation.)
The following set of images show the relevant files and illustrate the effect of the configuration changes. In the first image, the Konsole window at the lower right shows the contents of /sys/power/disk before the configuration change is put into effect, where the active mode, indicated by the square brackets, is "platform". In the second image, in the lower pane of the Konsole window to the upper right of the image, the active mode is "shutdown". The Konsole window at the bottom right of the image shows the drop-in file with the overridden parameters. The top pane in the Konsole window at the top right of the second image is also an interesting illustration of hibernation after the configuration; it shows the status of systemd-hibernate.service in which it shows the system entering hibernation and resuming the next day.