I have been using Ubuntu for many years to learn more Linux utilities, containers, Kubernetes and to keep up-to-date with the latest trends in the Linux world. Windows OS was easily accessible during my school and college days. macOS was rare to find in my hometown due to the expensive price tag; and I still remember Linux was distributed along with the magazines (something similar to below) in India. After using Ubuntu extensively in WSL 1 and 2 on my 7-year-old Dell laptop, I recently upgraded to Lenovo. I wanted to try something refreshing in the Linux world, so after trying various distros, I found Fedora Workstation and Fedora Silverblue fulfill my requirements.
Backstory and my Upgraded Gear
After saving money from past many months and carefully watching for the deals, finally I was able to afford to upgrade my laptop. I was using Dell Inspiron 13 5378 Intel i5 sixth generation which I got from Dell back in 2016. It had a good run, but the battery died after five years, I was running in always-ON power mode. Most of the time, I don’t carry my laptop due to pandemic; otherwise I used to go to the nearest Starbucks or the library on the weekends to learn.
A couple of months ago, I stumbled upon this excellent deal from Costco where you can grab a Lenovo Legion Slim 7 15″ Gaming laptop for $1515 including tax and shipping.
I am not a hardcore gamer, but I play it only on my Xbox. I was looking for more RAM instead of more cores. It is one of the best investments I made in recent years. AMD is really fast (first time I have tried AMD chip). The only issue I found was the keyboard lighting settings will be reset with every restart. I use an external keyboard, so I really don’t mind. But the laptop keyboard is excellent. Enough of my bragging :), let us get back to Fedora.
Lenovo LEGION Slim 7 15" Gaming Laptop AMD Ryzen 9 5900HX - 8 Cores - 16 Threads GeForce RTX 3060 Max-Q 165HZ 1080p Windows 11 Shadow Black 32GB RAM 1 TB SSD
As you are already aware, Fedora is the upstream to Red Hat Enterprise Linux. In the Fedora ecosystem, you get six different flavors of Linux:
- Workstation for personal computer
- Server for servers
- CoreOS for cloud computing
- Silverblue GNOME based immutable desktop specialized for developers who work on container-based workflows
- Kinoite KDE Plasma based immutable desktop
- IoT for IoT devices
CoreOS and Silverblue are emerging in the Fedora ecosystem. It may replace other flavors in the future.
The difference between CoreOS and Silverblue is: the former is minimal, automatic updating and best for containerized workflows with no GUI; the latter is GNOME-based, immutable desktop, and best for containerized workflows.
Immutable desktop helps in keeping the OS more stable and fewer bugs prone due to the atomic nature. What is atomic? During OS upgrades, possibly two things can happen. One is a successful upgrade with no errors. Second, the upgrade may fail. In case of failure, the OS will revert to the previous state.
How Fedora CoreOS or Silverblue achieves immutability. Enter
rpm-ostree is a hybrid package system. Think of it like a git for OS.
rpm-ostree is integrated with CoreOS, IOT and Silverblue.
rpm-ostree only when you want to create layered packages. To install the apps use Flatpak (see below).
To learn about
rpm-ostree let us spin up Fedora Silverblue in VMWare Workstation.
Download the ISO from here.
Upon launching the terminal in Silverblue, you will get the below message.
Basically, you do not get
yum installed in Fedora Silverblue, but we do have
rpm-ostree to install the apps.
The RPMs are coming from the
/etc/yum.repos.d folder as shown below.
Let us focus on installing, upgrading, rebasing and rollback on the host system. In the next blog, we can see about the
toolbox for the containerized workflow.
Below are the commands which help in administering the host system.
rpm-ostree status -v rpm-ostree upgrade rpm-ostree rollback rpm-ostree deploy <version> rpm-ostree install <pkg> rpm-ostree uninstall <pkg> rpm-ostree rebase -b $branchname
The inception command is
status command shows the deployments in the order. The circle prefix as shown below shows that the current booted deployment.
Now, let us upgrade the image to the latest using
rpm-ostree upgrade command and then reboot using the
systemctl reboot command.
After upgrading and rebooting, let us issue the
status command. You can see that there is a new current deployment.
Whenever you make changes, it will get versioned and layered. Let us install a couple of packages using
rpm-ostree and reboot again.
Issue the below command to install git, nginx and konsole.
rpm-ostree install git nginx konsole
After rebooting, launch terminal and verify the versions of git, nginx, and konsole as shown below.
Let us issue the
status command again.
Let us install
caddy and uninstall
nginx using the below commands.
rpm-ostree install caddy rpm-ostree uninstall nginx systemctl reboot
Here is the
Now, let us roll back with git, konsole, and nginx using the below command and reboot.
rpm-ostree rollback -r
nginx is back again.
Here is the verbose output of
rpm-ostree status -v.
When to use package layering?
As I mentioned earlier, you should avoid using
rpm-ostree to install the apps. Use
rpm-ostree to install drivers, libvirt, etc.
Installing Apps using Flatpak
Now let us install apps using Flatpak. Flatpak is the easy way to install apps to your Silverblue host using its GUI. Download and install Flathub repo file. Once the installation is done, navigate to Flathub to search and install your desired apps. Use Flathub to install the GUI based apps like LibreWolf, gedit, and more
Toolbox is the recommended way to install CLI apps, container apps, development tools and more. We will deep-dive into Toolbox in the next blog.
Immutable OS is the future; as it provides stability, reliability, and security. Dedicated ecosystem for container based workflows boosts developer productivity. The GNOME environment helps to easily get started for general users. Fedora Silverblue has a long way to go. But the immutable desktops will not be a fad.