We've gotten large enough where we need a more featureful place for discussions outside of GitHub, and for a place for the community to collate and improve documentation.
and check out the new Bazzite Buzz #8 for some new Bazzite updates. You'll find sections for all your favorite Universal Blue topics, so come say hello!
If you installed Bazzite previously with the older ISOs then YOU MAY BE STUCK ON FEDORA 38 BUILDS IF THE INSTALLER INSTALLED A :38 IMAGE AND NOT A :latest IMAGE! If you are unsure and feel like you are not up to date, open a host terminal and enter rpm-ostree status. If it says that your deployment is on :38 then you need to follow these instructions!
Open a host terminal and enter the command below for the image you're using.
Bazzite AMD/Intel Desktop: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite:latest
Bazzite Nvidia Desktop: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-nvidia:latest
Bazzite AMD/Intel Desktop GNOME: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-gnome:latest
Bazzite Nvidia Desktop GNOME: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-gnome-nvidia:latest
Bazzite Steam Deck/HTPC/Handheld PC: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-deck:latest
Bazzite Steam Deck/HTPC/Handheld PC GNOME: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-deck-gnome:latest
For specific images that relate to hardware (Framework, Microsoft Surface, ASUS, etc.) see the full image list and make sure "latest" is selected.
After you enter the command, wait for it to finish (this will take a while), and reboot. You should now get the latest updates for Bazzite.
We apologize for the inconvenience if you had to rebase, but you will NOT lose userdata rebasing to the :latest branch of the current image that you are on.
If you tested the Fedora 39 builds of Bazzite early, then you need to rebase back to :latest to be updated to future Bazzite versions as well.
Bazzite is a custom image of Fedora Linux 39 utilizing Universal Blue's custom image framework designed to bring users the best in Linux gaming for their PCs, including the Steam Deck and other handheld PCs. Bazzite's newsletters highlight all of the work we have been doing to bring gamers the best features ready to go for their PCs, home theater setups, and handheld gaming devices.
If you are new to the project then here's how this technology works: Bazzite and other Universal Blue images follow the continuous delivery methodology of development which means we're constantly adding new features and squashing bugs to the image through updates. These updates also include anything directly from upstream (Fedora and Universal Blue) and upgrades from the packages we include.
Today's newsletter focuses primarily on the state of Bazzite today and some new features to the project, including the migration from Fedora 38 to Fedora 39 in our builds. As always, we have the changelog for all of the new features and bug fixes at the end of the newsletter.
GNOME 45 running on Bazzite, which is now using Fedora 39 as a base.
Bazzite has upgraded from Fedora 38 to Fedora 39 recently. This means all of the changes from Fedora Linux 39 will already be in Bazzite once you update to the latest build.
The highlights of this release are mostly tied to performance, package upgrades, and for those using GNOME images, it is now upgraded to version 45.
The upgrade is automatically done through an update on desktop images and will be there when you reboot. The Steam Deck centric images, the images with Game Mode, will require you to update in Game Mode. Of course, you can open the terminal and enter ublue-update and rpm-ostree update to update through the terminal if you prefer to upgrade immediately. Although there has been inconsistent reports of users stuck on Fedora 38 builds. Please refer to the top of the newsletter to fix that.
Bazzite on the Lenovo Legion handheld PC. Photo taken by Oteresk.
That's right! The Lenovo Legion Go can run Bazzite using the Steam Deck / HTPC images. Install the bazzite-deck or bazzite-deck-gnome image on it to see it in action for yourself.
Lenovo has a consistent track record with hardware with fantastic Linux support. Eventually there might be a dedicated Legion Go image depnding on the circumstances. When this is released, you can rebase to the Legion Go image without having to reinstall. We will keep the community up to date if this happens, but for now you can use it with the generic Steam Deck images with some caveats, but surely as time goes it will improve.
Lenovo Legion Go running Game Mode and in-game! Photos taken by Oteresk.
Now, for some bad news. Asus ROG Ally support progress has been halted due to a required kernel module that is not cooperating with the Ally image. We recommend at this time to use ChimeraOS and Nobara if you want a SteamOS-like experience on the Ally. This might be resolved in the future, but this is the hard truth presently that the project is facing with this handheld. It may be revisited at a later time, and anyone who owns this handheld can attempt to figure out the issues if they feel up for the challenge.
Users can now switch to different update branches of Bazzite.
Latest (default, stable)
Testing
Unstable (not recommended)
Latest is the default branch and what we generally recommend for most users to stay on. Testing is a preview of what's to come, and unstable is only recommended for advanced users and is exactly how it sounds.
Waydroid has improved since it was first packaged in Bazzite. Lots of bug also have been squashed the last couple of weeks. OpenRazor should function properly now once installed through the Bazzite Portal. Lutris should no longer complain about missing Wine dependencies, and Nix applications should have icons.
Slightly off-topic from Bazzite, but some related news that applies to the Universal Blue project as a whole.
For the video editing enthusiasts out there, if you use DaVinci Resolve and want to get it working well on Bazzite or any Universal Blue image, check out this article that goes over in detail how to get DaVinci Resolve working inside of its own container.
Bluefin showcase by Justin Garrison.
While we're on the topic of Universal Blue, Bluefin is another Universal Blue image centered around an Ubuntu-like experience, but using the Fedora Linux technology that Bazzite users are already familiar with. A great image to install on a laptop or workstation. If you want a developer-focused OS in the same nature as Bazzite, then give it a shot even if it's in a virtual machine for testing purposes!
Bazzite and its community has grown extraordinarily since we first started. The project is now established and can move forward focusing on stability and hardware support. The future of Bazzite will be focused on keeping up with feature parity of SteamOS, getting other hardware to work on it, and taking cues from the feedback we have received to make a better image for everyone.
There has also been users in our community who would prefer not to use Discord as a communication method for support or discussion. A user has suggested to have an unofficial Matrix room. However, the maintainers of the images may not be as present, if at all, for any alternative means of communication outside of Discord and the Github discussions. This is detrimental for support, but we are not against a community forming outside of the official communication channels discussing and helping each other surrounding the Universal Blue projects including Bazzite
Bazzite still has the feeback survey open if anyone who hasn't taken it yet is still interested.
We would like to thank our community for helping the project grow into what it is today. New users who want to give Bazzite a try, here is the the latest releases.
If you installed Bazzite previously with the older ISOs then YOU MAY BE STUCK ON FEDORA 38 BUILDS IF THE INSTALLER INSTALLED A :38 IMAGE AND NOT A :latest IMAGE! If you are unsure and feel like you are not up to date, open a host terminal and enter rpm-ostree status. If it says that your deployment is on :38 then you need to follow these instructions!
Open a host terminal and enter the command below for the image you're using.
Bazzite AMD/Intel Desktop: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite:latest
Bazzite Nvidia Desktop: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-nvidia:latest
Bazzite AMD/Intel Desktop GNOME: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-gnome:latest
Bazzite Nvidia Desktop GNOME: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-gnome-nvidia:latest
Bazzite Steam Deck/HTPC/Handheld PC: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-deck:latest
Bazzite Steam Deck/HTPC/Handheld PC GNOME: rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-deck-gnome:latest
For specific images that relate to hardware (Framework, Microsoft Surface, ASUS, etc.) see the full image list and make sure "latest" is selected.
After you enter the command, wait for it to finish (this will take a while), and reboot. You should now get the latest updates for Bazzite.
We apologize for the inconvenience if you had to rebase, but you will NOT lose userdata rebasing to the :latest branch of the current image that you are on.
If you tested the Fedora 39 builds of Bazzite early, then you need to rebase back to :latest to be updated to future Bazzite versions as well.
It has been nearly 3 months later since releasing Bazzite to the public, and since then the team and the community has added tons of new features, enhancements, and bug fixes to the images.
The functionality is already there for Bazzite and utilizing new desktop model can be successful, and now the focus is on having a better user experience.
The new Bazzite builds have now upgraded to Fedora Linux 39. The project is now at a point where it is completely functional as is on standard hardware (and the Steam Deck.)
Bazzite's original purpose was to be a version of SteamOS that allowed for flexible functionality for users who found SteamOS to be too limiting, or felt SteamOS couldn't be a proper desktop Linux operating system. The project has now expanded has now grown and expanded drastically to work on multiple hardware configurations outside of the Steam Deck, and being a desktop SteamOS clone.
We would like to thank our growing community for supporting and sending feedback which helps us improve the project.
Bazzite is an OCI image that serves as an alternative operating system for the Steam Deck, and a ready-to-game SteamOS-like for desktop computers and living room home theater PCs.
Bazzite is built from ublue-os/main and ublue-os/nvidia using Fedora technology, which means expanded hardware support, built in drivers, mutli-media codecs are included.
System76-Scheduler preinstalled, providing automatic process priority tweaks to your focused application and keeping CPU time for background processes to a minimum.
Customized System76-Scheduler config with additional rules.
Input Remapper preinstalled and enabled. (Available but default-disabled on the Deck variant)
Bazzite Portal provides an easy way to install numerous applications and tweaks, including installing CoreCtrl and GreenWithEnvy.
Nix package manager with Fleek optionally available for install via Bazzite Portal.
Brew package manager optionally available for install via Bazzite Portal.
Waydroid preinstalled for running Android apps. Future releases will offer to set this up for you through Bazzite Portal. (Not available on Nvidia builds)
OpenRGB i2c-piix4 and i2c-nct6775 drivers for controlling RGB on certain motherboards.
OpenRazer drivers built in, Select OpenRazer in Bazzite Portal or run just install-openrazer in a terminal to begin using it.
OpenTabletDriver udev rules built in, with the full software suite installable via Bazzite Portal or by running just install-opentabletdriver in a terminal.
GCAdapter_OC driver for overclocking Nintendo's Gamecube Controller Adapter to 1000hz polling.
Custom update system allows for the OS, Flatpaks, Nix packages (Via Fleek), and Distrobox images to be updated directly from the Gamemode UI.
Built in support for Windows dual-boot thanks to Fedora's installation of GRUB being left intact.
Update break something? Easily roll back to the previous version of Bazzite thanks to rpm-ostree's rollback functionality. You can even select previous images at boot.
Steam and Lutris preinstalled on the image as layered packages.
Uses ZRAM(4GB) with the ZSTD compression algorithm by default with the option to switch back to a 1GB swap file and set a custom size for it if desired.
Kyber I/O scheduler to prevent I/O starvation when installing games or during background duperemove and rmlint processes.
Applies SteamOS's kernel parameters.
Color calibrated display profiles for matte and reflective Steam Deck screens included.
Default-disabled power-user features, including:
Service for low-risk undervolting of the Steam Deck via RyzenAdj and Ryzen SMU, see ryzenadj.service and /etc/default/ryzenadj.
Service for limiting the max charge level of the battery, see batterylimit.service and /etc/default/batterylimit. (Works even when the device is off)
Built in support for display overclocking. For example, add GAMESCOPE_OVERRIDE_REFRESH_RATE=40,70 to /etc/environment.
Ability to enable Wayland on the desktop if desired by editing /etc/default/desktop-wayland.
32GB RAM mod your Steam Deck? Enjoy double the maximum VRAM amount, automatically applied. (Can you share your soldering skills?)
Steam Deck hardware-specific services can be disabled by running just disable-deck-services in the terminal, useful for trying this image on other handhelds or for use on HTPCs.
Bazzite is in a much better state than it was at the 1.0 release. The first couple of months have been working towards having a stable experience and adding new features that sets this image apart from other desktop Linux distributions.
Installer issues from upstream still plague the user experience unfortunately. However, things are looking up, so perhaps in the near future this will not be an issue anymore. Post-installation, you should be able to use Bazzite on your device smoothly, but please let us know if you experience any issues.
Bazzite is a community effort and wouldn't exist without everyone's support. Below are some of the people who've helped us along the way:
rei0260 - For creating our logo and overall branding.
evlaV - For making Valve's code available and for being this person.
ChimeraOS - For gamescope-session and for valuable support along the way.
Jovian-NixOS - For supporting us with technical issues and for creating a similar project. Seriously, go check it out. It's our Nix-based cousin.
Steam Deck Homebrew - For choosing to support distributions other than SteamOS despite the extra work, and a special thanks to PartyWumpus for getting Decky Loader working with SELinux for us.
cyrv6737 - For the initial inspiration and the base that became bazzite-arch.
It has been a while since our last newsletter, and this was intended to be published with the release of Fedora 39. Fedora 39 builds were intended to release originally on October 24th. Fedora 39 was delayed until October 31st, and now it lands on November 7th after another delay unless the blockers get resolved before. However, you can test and preview the Fedora 39 builds of Bazzite right now. Instructions on that later on. This post has to cover a ton of new features that came out since the last newsletter, so let's get started!
Bazzite is a custom image of Fedora 38 (and eventually 39) utilizing Universal Blue's custom image framework designed to bring users the best in Linux gaming for their PCs, including the Steam Deck. This newsletter highlights all of the work we have been doing to bring gamers the best features ready to go for their PCs, home theater setups, and handheld gaming devices.
If you are new to the project then here's how it works. They follow the continuous delivery methodology of development which means we're constantly adding new features and squashing bugs to the image through updates. These updates also include any updates directly from upstream from Fedora or upgrades from packages we include.
This newsletter's highlight is all about the rebranding that Bazzite has undergone a couple of weeks ago. This new branding has affected not only the documentation, but also appears throughout all of the images.
Bazzite has rebranded thanks to the design work of rei. This new branding will also appear in Bazzite now by default. Previously, the project only displayed the Fedora and SteamOS branding, but now the project has a standalone identity. There are also new user avatars based on Valve games for both KDE and GNOME images of Bazzite. You can change to any of these in the settings.
New Valve themed avatars for KDE & GNOME user avatars.
Nvidia images have now been reworked to Steam, Lutris vkBasalt, MangoHUD, Vulkan-Tools, and LatencyFlex as part of the image as opposed to using the bazzite-arch Distrobox container like the AMD/Intel images. This was due to issues with Nvidia 32-bit libraries in the container, and it was just simpler to have these packages as part of the host. We would prefer not to have these packages on the host like this, but dealing with Nvidia's proprietary driver erratic behavior has made this the best solution for now.
A stress test of Crysis recorded with OBS-VKCapture with hardware encoding (VA-API H.264) on a Steam Deck in Game Mode.
OBS-VKCapture is now added to easily record videos using hardware acceleration. This also works in Game Mode meaning you can record your games without the use of a capture card. If you are interested in trying this out in Game Mode, then open the game properties for the game you want to record and enter OBS_VKCAPTURE=1 %command% in the launch options.
Example of a GNOME desktop nested inside of a GNOME desktop.
Other new features like the ability for your Steam Deck, handheld PC, or HTPC to have nested desktops. Now you can run Desktop Mode inside of Game Mode without the inconvenience of switching between the two. Unfortunately, GNOME images cannot run applications in this nested desktop currently, but KDE images work fine right now. Also, these Game Mode centric images can turn off the screen when the device shuts off through libCEC with compatible devices and HDMI cables. Windows files will now display metadata information for the appropriate files. For example, Windows executables that have an icon will now display that icon in the file manager.
Bazzite and Universal Blue have been showcased by a ton of different Youtube content creators and news publications. Most of these videos and articles are in English, but here is a showcase of Bazzite by a popular Brazilian Linux content creator:
Translations to Bazzite's documentation in different languages would be appreciated! The Linux desktop is used internationally, and it would be great for the Bazzite documentation to reflect that. If anyone would like to make translations for the project, then please feel free to contribute. Bazzite already has multiple language support due to Fedora already providing that for us, but our documentation is only avaliable in English currently.
While we're on the topic of media coverage, special thanks to everyone who has made a video or written an article about Bazzite. We are humbled by all of the support from our community and are grateful for those promoting the project.
We are nearing the 2.0 release of Bazzite. It has been both a bumpy yet exciting ride few months releasing Bazzite out into the wild. Our goal is to have Bazzite remain a very stable and consistent experience across different hardware and configurations when the Fedora 39 builds are out. We had fixed edge-case scenarios and issues that had gone overlooked for the last three months. However, one of the major issues that has plagued Bazzite since we released ISOs is Fedora's installer not cooperating with our OCI image method.
Fedora 39 can be tested right now by rebasing to the 39 builds. These Bazzite builds are considered "Release Candidate (RC)" right now, but there will be missing packages since many repositories do not build for unstable versions of Fedora. If you want to test it now, open a host terminal and enter the command based on the image you're using. Here are some examples:
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite:39 for the AMD/Intel Desktop image
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-deck:39 for the Steam Deck / HTPC image.
Refer to the Universal Blue full image list and replace :latest with :39 for the image you're currently on to upgrade to the Fedora 39 builds right now. Please note: Once you rebase to the 39 testing builds, you will have to rebase back to :latest once Fedora 39 is out. When Fedora 39 has a stable release, then it will be upgraded for everyone in an update.
For those waiting on ASUS ROG Ally support, a lot of work has been done these past weeks to get it working properly. The current state of Bazzite on the Ally is that it's slowly working. We are hoping to resolve this in the coming months, but for those curious, the bazzite-ally does boot with major controller issues right now. If you would like to help debug Bazzite on the ASUS ROG Ally, or other unique handheld hardware, then get in touch with us. There are already trackers for other handheld hardware right now. We would like to thank everyone who has been helping us with proper support for all of the other handheld devices on the market.
We would like to thank our community for helping the project grow into what it is today. Universal Blue has announced a new image coming to beta soon known as Bluefin. It is a Fedora Linux image which is a curated GNOME experience that has the reliability of ChromeOS, but with the power of the modern Linux desktop. Bazzite is the more gaming focused between the two, but Bluefin offers the bazzite-arch Distrobox container which is utilized in the Bazzite desktop images. Bluefin also allows developers to have access to many of the standard tools and container-focused work environments with a single command. Give it a try sometime, and this is a reminder that anyone can make their own custom image for Fedora.
Lastly, we have a survey out now that we encourage you to fill out for feedback on the project. We also want to gather statistics on what hardware that Bazzite is being installed on. Thank you in advance if you participate in it. This should only take about 5 minutes to complete.
After nearly two(!) years of prototyping and testing, Bluefin is on its way to Beta! We're hoping to do the final release of the beta on November 1st, so we'd like to spend a some time testing the ISO.
Bluefin is an interpretation of the Ubuntu spirit built with Fedora technology. It's a familiar(ish) Ubuntu desktop for Fedora Silverblue. It strives to cover these three use cases:
For users it provides a system as reliable as a Chromebook with near-zero maintenance, with the power of Ubuntu and Fedora fused together.
For developers we endeavour to provide the best cloud-native developer experience by enabling easy consumption of the industry's leading tools. These are included in dedicated bluefin-dx and bluefin-dx-nvidia images.
For gamers we strive to deliver a world-class gaming experience via Flathub or bazzite-arch
Installation progress will appear to have stalled but is progressing in the background
Applications like Firefox and other core apps will be installed on login, this might take a while depending on your internet connection speed. The system will notify you when it is completed:
Universal Core is a Universal Blue custom image of Fedora CoreOS.
While Universal Blue has been receiving much attention on the desktop; Universal Core (ucore) has been quietly growing its own set of features for the server side of things.
Today we get to announce a long awaited feature: ucore finally has images available with NVIDIA drivers built in!
As one of our oldest feature requests, which also happend to be created on April 1st, some probably wondered if it was an April Fools Day joke. But no, 6 months later, the feature has landed.
transcoding video, especially useful for users lacking newer Intel GPUs with QuickSync
FrigateNVR is a great example of a self-hostable open source project which can use both video transcode capabilities and compute capabilities to power a smart home camera solution.
This upstream was chosen over rpmfusion due to its granular packaging concept which allows the installation of only minimal nvidia-driver-cuda packages and does NOT require xorg/wayland/etc as dependencies.
NVIDIA's toolkit docs give examples of running with SELinux disabled on the container: podman run --security-opt label=disable --device=nvidia.com/gpu=all ubuntu nvidia-smi but some users may want more security.
This policy can preserve other SELinux protections while still providing access to the GPU: podman run --security-opt label=type:nvidia_container_t --device=nvidia.com/gpu=all ubuntu nvidia-smi
If you need an older (or different) driver, there are other ways to install a driver. Our approach is meant to be the easiest for the widest group of users.
Universal Core has plenty to offer even if you don't run NVIDIA GPUs in your server, want to host virtual machines, or even run it in a virtual machine!
ucore-hci builds upon ucore to provide "hyper-converged infrastructure". These images add more hardware/driver support, more storage tools, and virtualization(hypervisor) support:
If you installed a Bazzite image on any device before September 22, 2023 or used the older offline ISO then open a host terminal and enter rpm-ostree update, and wait for it to upgrade to the latest build. Reboot your device after it has finished. More information on this here.
Welcome to Bazzite Buzz #5!
Bazzite is a custom image of Fedora 38 designed to being the best in Linux gaming to your PCs, including the Steam Deck. This newsletter highlights all the work we have been doing to bring gamers the best goodies for their PCs and handheld gaming devices.
If you are new to a Universal Blue project then here's how they work then here's how they work. They follow the continuous delivery methodology of development. That means we're constantly adding new things, so let's get started!
We have been preparing for the stable release of Fedora 39 and will plan to switch builds over there within the next two weeks. Nvidia images for ASUS and Microsoft Surface hardware is now available. We also added dependencies needed for the DaVinci Resolve video editor in case you wanted that. The unrar library is included in the image which should resolve issues users may experience with certain compressed file formats.
Steam Deck images now include a ton of performance optimizations taken from this Medium article. These tweaks in theory should give a slight performance increase versus stock SteamOS, but we never attempted benchmarks yet to actually confirm this. Maybe for a later time unless someone out there wants to volunteer and benchmark both operating systems.
Waydroid support has also been both streamlined and improved tremendously. Controllers should work well with it now. Steam Deck images should have a working quick access menu with it and plus the addition of the framerate limiter working with Android applications to our surprise.
Waydroid on the Steam Deck running in Game Mode
Open a host terminal and enter just init-waydroid and it should setup Waydroid for you. Keep in mind you may need to set SELinux to permissive, but there has been conflicting reports on this. If you are experiencing issues then enter sudoedit /etc/selinux/config and changing SELINUX=enforcing to SELINUX=permissive. If you want extra goodies to Waydroid like ARM translation then enter just configure-waydroid.
We are now focusing on having an extremely stable and consistent experience across different hardware. We are also planning on proper support for the ASUS ROG Ally and other handheld PCs, and have already accomplished some of the ground work necessary. We still consider both the ROG Ally and other handheld PCs as an alpha at this moment, and users will encounter major issues until they are resolved.
As always, we'd like to thank all of our contributors and those who are helping us troubleshoot any issues in our newer builds. The next Bazzite Buzz will focus on the transition from Fedora 38 to Fedora 39, so stay tuned for that.
Added option to download Wootility to Bazzite Portal.
Added option to force Discover Overlay to launch on GNOME Wayland.
Added a just command to enable virtualization and vfio for desktop images.
Upgraded Discover Overlay to version 0.6.9
Upgraded Greenlight to 2.0.0-beta14 in Bazzite Portal. Keep in mind Gear Lever constantly allows this and other AppImages to get updated post-installation.
Advanced users can change Flatpak files if desired now since they moved from /usr/etc to /etc/.
Updated Mesa to version 23.2.1.
Updated boot menu for new images and simplified it.
Waydroid now has the required properties for Steam Deck images. No need to add ro.sf.lcd_density=215 manually.
Steam Deck images have a longer progress bar length.
A few preliminary ASUS ROG Ally additions.
Steam Deck images now use steam-patch which is especially useful for the ASUS ROG Ally and other handheld PCs.
Enabled TDP control on non-deck hardware covered by steam-patch too.
Steam Deck images are now using some of the peformance tweaks from this Medium article.
Kyber I/O scheduling from BFQ
Disable watchdog
Raise memlock limit
Fedora already includes the 1000hz tick for the kernel & MGLRU.
Once Valve solves their issue with CPPC in the Steam deck's firmware the Bazzite can also utilize amd-pstate to save on battery.
Today we crossed two million image pulls. Specifically we have 2,005,118! We crossed one million on July 19th.
Some minor updates for this new million. Kinoite continues to be the most popular image. However, silverblue-nvidia has snuck in and claimed second place from kinoite-main, rounding out our top three. base-nvidia comes in fourth, which is basically an "empty" image with Fedora and no desktop -- so that means plenty of you are using that as a base image and building something with it, great job!
Though pulls aren't an indicator of users, this means that we've had a two million daily upgrades, which isn't a bad start!
We'll be on the Fedora Podcast next week with Timothée Ravier from the CoreOS team. Without his work this project wouldn't be possible so we're looking forward to talking about what's coming down the pipe!
Also a quick reminder that we are publishing images for F39. They don't get published to the image list but they do exist for most of the images. Take a peek in the packages section for the image you care about and give it a shot! We're feeling pretty good about F39 being a smooth transition for users.
And we hope you'll be around to help us hit 3 million!
Over the past few weeks contributors have reworked parts of our build system to support more hardware. Reusing cloud patterns allows Universal Blue to offer pretty awesome Nvidia support that's baked right into the image. This has always been a special case, something we only did for Nvidia support. We've now successfully productized the pattern into something that we can repeat quickly.
Devices like certain Asus laptops sometimes need special tools, and these laptops are supported by projects like asus-linux. They not only provide tools, they also hook you up with the right kernels that you need. Similarly, the linux-surface project provides special kernels for Microsoft Surface devices. They provide the tools and repositories needed to get Fedora working great on those devices. But you have to set that up by hand. Ewww.
One of the strengths of the cloud-native pattern is our ability to use existing Fedora base images, and then automate the post-installation steps as new composable layers, and then mix and match what we need. Both Asus and Surface devices can also come with Nvidia cards, which means we can use the existing Nvidia images to help us compose Nvidia-enabled images on top of the good stuff we need from asus-linux and linux-surface! These are now ready to test!
ublue-os/nvidia are the same as the main images but include slip-streamed Nvidia drivers
ublue-os/asus - Asus images with asus-linux.org tools and kernels
The Framework 13 laptop was a unique prototype in this. It was only available as a custom spin of Bluefin to gauge interest. We've reworked that repo to line up with the rest, so instead of being Bluefin-specific you can now enjoy a wider variety of images for your Framework.
If you're wondering if we plan on supporting the Framework 16 and new AMD Framework 13 then you're in luck, it's just another set of parameters we can add. We're hoping to get feedback from folks who get this hardware so we can enable it!
Both asus-linux and linux-surface have existed for a long time, what's the benefit of doing it this way? We list these benefits in Why would I use these?, but these images are a real world example of how the pattern works.
Both of these projects have done the hard work and provided the community with the right bits. All we do is automate that and run it every night and on every merge. If it works, it ends up on your machine, if it doesn't work, your machine still works. It's broken in our GitHub repository and it doesn't get to you. Instead we use one of the strongest advantages that we get with open source: It's easier to fix things when you do it together. When the nerds figure it out, the builds pass, and THEN you get the image on your machine. GitOps for the win!
The one gotcha is that we still need to do some post-installation steps manually. You might have had to do this as part of installation, where we ask you to do a just framework-13 or just nvidia-set-kargs in order to get the right kernel parameters in place. We expect this limitation to go away someday and hope to declare kernel arguments directly in the Containerfile.
Bazzite is a custom image of Fedora 38 designed to bring the best in Linux gaming to your PCs, including the Steam Deck. This newsletter highlights all the work we are doing to bring gamers the best goodies for their PCs and handheld gaming devices.
If you are new to a Universal Blue project then here's some back filler. These images follow the continuous delivery methodology of development. That means we're constantly adding new things, so let's get started!
Today we have released a new batch of online ISOs. Our offline ISOs that we had released earlier had some issues with the Steam Deck's resolution, but eventually this will all be sorted out. When that happens we will release a new batch of offline ISOs in the future. In the meantime, grab the latest online ISO and make sure to connect to the internet in the installer.
We also now support Framework, Lenovo Legion, and ASUS devices with their own special images. Generic controller support for handheld PCs with our addition of hanygccs. In addition, Tailscale now has support out of the box and the GNOME images include the Tailscale status extension too. Fleek is temporary removed until the non-interactive installer is finished. KDE images can now share their screen properly on Wayland with the inclusion of xwaylandbridge. We also added android-udev-rules to the base image and a just command to add scrcpy. This can also give you access to guiscrcpy to mirror your Android phone.
Here is guiscrcpy mirroring an Android phone.
Adwaita Steam skin using Decky's CSS Loader plugin on a desktop Bazzite image.
(Yes it works on KDE Plasma too.)
We'd like to thank all of our contributors and those who are helping us troubleshoot any issues in our newer builds.
After some hard work by our team members we were able to generate F39 builds of our images. Of course they are not stable yet, but if you feel the need you can already try them out. While working on this, we also introduced the gts tag which will enable you to cruise along on a steady stable pace. It will have your image follow along the latest-1 release. So you will have a rock solid machine. We currently pushing our free builders to the max with 57 images being generated. We hope you enjoy it as much as we do.
Type "just" in a host terminal to see a list of custom convenience commands.
Welcome to Bazzite Buzz #3! Bazzite is a custom image of Fedora 38 designed to bring the best in Linux gaming to your PC and handheld devices. This newsletter highlights all the work we are working on over the past few weeks. If you are new to a Universal Blue project here's some back filler: These images follow the continuous delivery methodology of development. That means we're constantly adding new things, so let's get started!
IMPORTANT: Nvidia GPU users should recreate the bazzite-arch Distrobox container. Open a host terminal and enter: just install-bazzite-arch to do this. The issue stemmed from missing 32-bit libraries that require the user to remake the container. As a result of this, it unfortunately means this fix requires manual intervention.
New hardware support and a ton of general fixes have been the main focus over the last couple of weeks for Bazzite. Some notable features added were the inclusion of a new system resource monitor application and adding proper support for Microsoft Surface devices. We also were committed to fixing as many issues reported as we possibly can, and tidying up the project as usual.
A modern task manager.
As time goes on, we plan to release an image dedicated to the Asus ROG Ally. This device needs a specific kernel and some other tweaks to have Bazzite function correctly on it. Discussion on this can be found here, and for progress on general handheld controls take a look here.
Hippie Hacker has created this guide to get iimatey working on a Steam Deck installation of Bazzite for a command line approach to installing it. This may solve issues with the current GUI installer or for those who prefer this command line interface method for installation.
Finally, most of the new features from the SteamOS 3.5 preview are already available in the Bazzite Steam Deck images right now. This includes gamescope's new scaling and color options. We also are already using newer base packages than SteamOS 3.5.
New Gamescope improvements on the Steam Deck images.
Older AMD GPUs will now be detected properly. (Thanks Action Retro!)
Hybrid GPUs using Nvidia + AMD/Intel should be working better now.
Hardware setup should only retrieve GPU hardware information once.
Fixed the GNOME Steam Deck image power profile to have sensible defaults.
Deck services should now be disabled on generic devices on the Steam Deck images.
Added workaround from ChimeraOS for Gamescope crashing if Steam hasn't been launched prior to switching to Game Mode.
Oversteer should now work properly once installed from Bazzite Portal or through Just.
Fixed Boilr installer not working in some scenarios.
Flatpak lists are now in /usr so changes won't be removed.
The desktop auto-login service has been removed from desktop images, and enhanced on Steam Deck images to check that Steam has been updated prior to starting gamescope session.
The Team Fortress 2 tcmalloc fix now works when Team Fortress 2 is installed on a microSD.
Hide GRUB Menu option from Bazzite Portal has been removed from the desktop images since the focus has shifted to the Steam Deck images for home theater PC setups.
pulseaudio-utils has been added since some third-party applications depend on this.
Fixed missing icon for Lutris.
Fixed the xdg-desktop-portals bug that affected the file picker.
Bazzite has hit over 1,000 commits in a little over 200 days since the project's inception! We now own the domains bazzite.gg and metrics.bazzite.gg for this project. Offline ISOs are mostly ready to go, check it out below!
All hail the cube.
Before we move on to the changes we've got a new installation video from Justin Garrison
This post was edited on 2023-09-09 to change some inaccurate details. The PR has now been merged.
Startingpoint, the 'template' repository for creating custom images that includes a simplified configuration format recipe.yml, has been going through a rewrite for almost a month now. The rewrite is going to be merged as soon as it and the documentation is ready and tested, and this post will guide you through the changes.
The rewrite brings startingpoint from a single build.sh where incrementally added features were piled up, to a collection of modules run by a very simple build script in the order specified in the recipe.yml configuration. This fundamental change makes startingpoint more extensible and customizable, allowing you to add and remove features as you please. It also allows for sharing of certain configuration, such as packages lists, between multiple images built in the same repository.
Unfortunately, breaking changes have been made to the configuration (recipe) and the script system.
For maintainers of custom images, there are a couple of ways to deal with this.
Create a new repository and port your changes
This approach will be easiest if you are not that familiar with git and your changes are small.
This approach has the advantage that you can keep using your old repository while porting all of your changes to the new one.
If your old repository is a fork of startingpoint, you might want to detach it from startingpoint. This would allow you to fork startingpoint again to create your new repository (GitHub allows only one fork per-repo per-account).
Do a manual merge of the rewrite into your repository
You'll need to be familiar with using some software that allows you to do manual git merges. You want to accept all incoming files that are not configuration files, and manually figure out the configuration files.
This approach has the advantage of keeping your git history, and allowing you to easily move all your custom scripts into the new build at once.
Do nothing
Perhaps you've got a great custom build system going, you've done a lot of changes to build.sh, you've added new features you need. Or you just can't be bothered? Cool! You don't need to keep up-to-date with the startingpoint template if you don't want to. You'll still get OS updates, your current setup won't break. You just won't be able to take advantage of new features that might get added to startingpoint.
## image will be published to ghcr.io/<user>/<name>
name: startingpoint
## description will be included in the image's metadata
description: A starting point for further customization of uBlue images. Make your own! https://ublue.it/making-your-own/
## the base image to build on top of (FROM) and the version tag to use
base-image: ghcr.io/ublue-os/silverblue-main
image-version: 38 # latest is also supported if you want new updates ASAP
## list of modules, executed in order
## you can include multiple instances of the same module
modules:
- type: files
files:
- usr: /usr # copy static configurations
# configuration you wish to end up in /etc/ on the booted system should be
# added into /usr/etc/ as that is the proper "distro" config directory on ostree
# read more in the files module's README
- type: rpm-ostree
repos:
# - https://copr.fedorainfracloud.org/coprs/atim/starship/repo/fedora-%OS_VERSION%/atim-starship-fedora-%OS_VERSION%.repo
install:
# - micro
# - starship
remove:
- firefox # default firefox removed in favor of flatpak
- firefox-langpacks # langpacks needs to also be removed to prevent dependency problems
- type: bling # configure what to pull in from ublue-os/bling
install:
- fonts # selection of common good free fonts
- justfiles # add "!include /usr/share/ublue-os/just/bling.just"
# in your custom.just (added by default) or local justfile
- nix-installer # shell shortcuts for determinate system's nix installers
- ublue-os-wallpapers
# - ublue-update # https://github.com/ublue-os/ublue-update
# - dconf-update-service # a service unit that updates the dconf db on boot
# - devpod # https://devpod.sh/ as an rpm
- type: yafti # if included, yafti and it's dependencies (pip & libadwaita)
# will be installed and set up
custom-flatpaks: # this section is optional
# - Celluloid: io.github.celluloid_player.Celluloid
# - Krita: org.kde.krita
- type: script
scripts:
# this sets up the proper policy & signing files for signed images to work
- signing.sh
You'll see that instead of top-level configuration keys like rpm: or firstboot:, there's one top-level array modules: that includes most of the previous configuration as modules. Modules are scripts, executed in the specified order, that take in yaml configuration from the recipe. Anyone can create a module by just putting a script in a subdirectory the modules/ directory. You can remove modules by just removing the entry in the modules: array, you can include multiple of the same type of module, and you can even share modules between recipes (images) using the - from-file: example.yml syntax.
This modular system changes the role of scripts a little. Scripts are no longer intended to read recipe.yml, instead they do a single (or a collection of) commands that are not intended to be configurable in the recipe. If you want to create a script that takes in configuration, create a module. Furthermore, scripts in the pre/ and post/ directories will no longer be executed by default, as there is no set "pre" and "post" phase with the modular system.
As a minor change, all user configuration has been moved into the config/ directory in the root of the repository. This might make manual merging from the old version a bit more convoluted, but should ease merges in the future.
When it is fully ready, tested, and documentation changes have been PRd onto the documentation website. A while after the merge there'll be a more newcomer-friendly announcement post. The new version will be considered a '1.0', and the amount of breaking changes will be kept as zero for as long as possible.
To quicken or effect the process, feel free to give comments, read through, and help in testing the PR.
For post-release I have plans for a PR that would allow the configuration of multiple modules be included using the from-file: syntax, a PR that would allow an entire directory full of build scripts to be run at once, without having to specify each one individually, and a blog post that would showcase high-level technical details of the repository without needing to get in the weeds by reading source code.
Technically, it would also be possible to "reverse" the flow by "compiling" the recipe.yml into a Containerfile, which is something I'm interested in exploring.
Bazite 1.0 released last week, but the hum of progress continues! Welcome to the Bazzite Buzz, our newsletter for all the good things we hope to bring gamers over the next few months. If you are new to a Universal Blue project here's some back filler: These images follow the continuous delivery methodology of development.
We build on top of the Fedora base and then build our customizations on top every day and on every change. That means when we fix something or add a new feature everyone gets it. So if we fix one of your issues it can be in your device in less than 15 minutes, and usually faster. Neat. The more people help out, the greater the pace of features and goodies.
In order to help with that we'll start publishing these Bazzite notes regularly so you can keep pace with what's happening. Here's a great tour video from Hi-Tech Lo-Life showing off some Bazzite features.
Every issue we will go over some of the most exciting changes, and we'll always link to the Bazzite commits so you can inspect them for yourself. Ok let's get rolling:
After 192 days of development we'd like to introduce Bazzite 1.0! Bazzite is a custom image of Fedora 38 designed to being the best in Linux gaming to your PCs, including the Steam Deck:
KDE's Vapor Theme
Bazzite is built from ublue-os/main and ublue-os/nvidia using Fedora technology, which means expanded hardware support and built in drivers are included.
Steam Game Mode
Additionally, Bazzite adds the following features:
Distrobox preinstalled with automatic updates for created containers.
Automated duperemove services for reducing the disk space used by wine prefix contents.
System76-Scheduler preinstalled, providing automatic process priority tweaks to your focused application and keeping CPU time for background processes to a minimum.
Customized System76-Scheduler config with additional rules and CFS parameters from Linux-TKG.
Custom update system allows for the OS, Flatpaks, and Distrobox images to be updated directly from the Gamemode UI.
Built in support for Windows dual-boot thanks to Fedora's installation of GRUB being left intact.
Update break something? Easily roll back to the previous version of Bazzite thanks to rpm-ostree's rollback functionality. You can even select previous images at boot.
Steam and Lutris preinstalled on the image as layered packages.
Exclusively uses ZRAM by default with the option to switch back to a swap file and set a custom size if desired. (1GB by default)
BFQ I/O scheduler to prevent I/O starvation when installing games or during background duperemove processes.
TLS/SSL secured DNS and NTP by default. (This is a handheld PC you're likely to use on random public networks after all)
Applies SteamOS's kernel parameters and enables amd-pstate by default.
Default-disabled power-user features, including:
Service for low-risk undervolting of the Steam Deck via RyzenAdj, see ryzenadj.service and /etc/default/ryzenadj.
Service for limiting the max charge level of the battery, see batterylimit.service and /etc/default/batterylimit. (Works even when the device is off)
Built in support for display overclocking. For example, add GAMESCOPE_OVERRIDE_REFRESH_RATE=40,70 to /etc/environment.
Ability to switch back to X11 on the desktop if desired by editing /etc/default/desktop-wayland.
32GB RAM mod your Steam Deck? Enjoy double the maximum VRAM amount, automatically applied. (Can you share your soldering skills?)
The installation process is still considered incomplete, we're hoping to eventually migrate to the new webui-based Anaconda installer which will be much nicer for our use case.
Like all Universal Blue images, Bazzite is using features that are on their way to Fedora, and are currently not considered stable. However with over 1.5 million image pulls over the last 9 months, we feel the model and method are proving to be reliable!
Download sizes are also currently less efficient than they should be. We're hoping that gamer interest in Fedora will bring in new ideas and contributors to help solve these issues.
Bazzite is a community effort and wouldn't exist without everyone's support. Below are some of the people who've helped us along the way:
evlaV - For making Valve's code available and for being this person.
ChimeraOS - For gamescope-session and for valuable support along the way.
Jovian-NixOS - For supporting us with technical issues and for creating a similar project. Seriously, go check it out. It's our Nix-based cousin.
Steam Deck Homebrew - For choosing to support distributions other than SteamOS despite the extra work, and a special thanks to PartyWumpus for getting Decky Loader working with SELinux for us.
cyrv6737 - For the initial inspiration and the base that became bazzite-arch.
Universal Blue images have traditionally been signed by cosign so that you as a user can verify that the image you're booted into is the same one we make in GitHub.
When you rebase to a Universal Blue image, you might have noticed something:
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/kinoite-nvidia:38
The ostree-unverified-registry section is something that we've had to use because we didn't have a way to run a signed image. You had to manually check the signature that we provide with cosign (as listed above).
Thanks to the upstream efforts in rpm-ostree, we can now run fully signed images directly. In order to do this you need to rebase to a signed image:
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/kinoite-nvidia:38
And then reboot.
Check the images page for updated rebase commands for your system. You'll now be on a signed image and be good to go, rpm-ostree and skopeo will handle the rest.
The policies in stock Fedora don't support migrating to a signed Universal Blue image directly. For now we're recommending to rebase to an unsigned image first to get the right policies and keys in place, and then rebasing using the ostree-image-signed:docker:// snippet. If you have any ideas on how to make this smoother feel free to open a PR or file an issue!
We've updated the documentation to refer to this new command. You can of course continue to run on an unsigned image, but we recommend getting that sigstore goodness all the way to your device.
If you're sad about the URL becoming more complex, don't worry, soon it'll look like this: bootc switch ghcr.io/ublue-os/kinoite-nvidia:38. We'll let you know when that day arrives.
A huge shoutout to the sigstore and Fedora communities for their guidance and support. This is an important milestone for Universal Blue, one more requirement for moving out of beta is out of the way!
Today we crossed one million image pulls. Though Kinoite continues to dominate the leaderboard, our steady march forward continues.
If you've been kicking the tyres on this next generation of linux desktop, we thank you! This means that we've had a million upgrades, which isn't a bad start!
Generally speaking things are pretty stable, the next major work item will be enabling F39 builds, which we'll do whenever RPMFusion starts to make builds.
Our images are now signed, we recommend moving to signed images as soon as you can!
No major obstacles to report, while we still consider these images beta they are proving to be quite robust!
You might want to check the current open issues to see how people are getting on.
And a quick call for help -- we're still in dire need of a more reliable ISO installation experience. If you are familiar with Anaconda we could use a hand, especially if you want to help bring the fancy new installer to our custom images.
Though this project may seem new, the first commit on this journey is a little bit over two years old! At the time "ublue" was just an imperative script.
Later that year, in November 2021, the first edition of what became the OSTree Native Containers spec was committed to the Fedora wiki. This flipped the project on it's head and the rest is history! Continuously delivered OCI goodness is here!
We've picked July 21st as our birthday since it's coming up (and we also forgot). So today we're celebrating two years of cloud-native goodness, thanks for hanging out with us!
Since early in the Universal Blue project, our Nvidia repository has been building kernel modules(akmods), though only Nvidia drivers. While this approach worked great at first, it became apparent that the akmods would need to be split off into it's own layer:
This kicked off a nice community discussion where the team figured out an approach.
First we needed to migrate to a new signing key and then begin splitting the akmods into its own repository. Conveniently, this also allows us to include things like v4l2loopback so that Universal Blue users will have that working out of the box. Soon we hope to add more hardware enablement akmods like XBox Wireless controllers, OpenRazer, and some older Broadcom wireless drivers.
This work was patiently prototyped by @dhoell over the course of many months while juggling a busy school schedule. Thanks for your contribution David!
As part of our move to beta we've found a scaling issue that needs to be sorted; skip below if you just want the instructions.
Initially the Nvidia images were signed by a key scoped only to the ublue-os/nvidia repository. At the time, we didn't expect to grow much past that, but now we want to add more akmods (like OBS loopback camera, XBox Wireless Controllers, etc.) which we are building in a seperate ublue-os/akmods repository as a "new layer" if you will.
As part of our secrets management process, we are regenerating the keys used for Secure Boot signing our kernel modules. This means existing users must install a new key for all of Universal Blue akmods in addition to the key specific to Nvidia.
On June 17th, we will switch Secure Boot signing to use the new key; from that time on only the new new key will be required.
As of this morning the new key is on the images, so subsequent new installations will be fine.
Fedora's image-based variants are moving to OCI-based container images, which neatly solves third-party repository problems.
Over the past few weeks there have been multiple version and syncing issues between Fedora and RPMFusion, a recommended repository for multimedia codecs.
Welcome to Universal Blue, custom images based on Fedora.
We'll be posting news and updates in this blog section in the hopes of furthering discussion around cool new things this new sandbox provides. Here's our mission statement and values if you want to check them out.