Julio Biason
3 years ago
1 changed files with 115 additions and 0 deletions
@ -0,0 +1,115 @@ |
|||||||
|
+++ |
||||||
|
title = "Three Weeks With Silverblue" |
||||||
|
date = 2021-07-23 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["fedora", "silverblue", "immutable", "docker"] |
||||||
|
+++ |
||||||
|
|
||||||
|
A few weeks ago (four weeks ago, to be exact, based on this post date), my |
||||||
|
Fedora Workstation crashed hard, in some freak accident that, I believe, killed |
||||||
|
my `/boot` partition. At first I reinstalled Workstation, but then decided to |
||||||
|
give a change to [Silverblue](https://silverblue.fedoraproject.org/). |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
## What's a Silverblue? |
||||||
|
|
||||||
|
Silverblue is a distribution that is pretty close to what containers do: The |
||||||
|
base system sits on a immutable file system, giving the impression that the |
||||||
|
system is just a kernel and Docker (it uses Podman actually, but it is |
||||||
|
basically the same thing, when we look at the functionality) and a volume with |
||||||
|
all the applications. |
||||||
|
|
||||||
|
## How Does It Feel? |
||||||
|
|
||||||
|
Honestly, it doesn't have any difference from the Workstation, in a day-to-day |
||||||
|
perspective. I still use the same editors, the same browser, the same terminal |
||||||
|
and, with a few caveats, everything feels exactly the same. |
||||||
|
|
||||||
|
## What's Different, though? |
||||||
|
|
||||||
|
### Install |
||||||
|
|
||||||
|
To install packages, you need to use `rpm-ostree` instead of `dnf`. The weird |
||||||
|
part is that by installing a package, it doesn't make things available |
||||||
|
immediately -- because it generates a new layer on the top of the current |
||||||
|
volume and you're still using the current (not yet updated) volume. If you were |
||||||
|
using a container system, you would shutdown your container and restart it, so |
||||||
|
the new layer would assume. Since the whole system is (basically) a container, |
||||||
|
you need to restart the whole thing... Which isn't something that weird if |
||||||
|
you use Workstation, 'cause that's the way Workstation works, most of the time |
||||||
|
(which you can completely ignore on Workstation but not here). |
||||||
|
|
||||||
|
Once a package is installed with `rpm-ostree install <package>`, you can |
||||||
|
restart the whole thing with `systemctl reboot` (yes, no `sudo` required). But |
||||||
|
once it reboots, there is no need to run the scriptlets in the packages: Reboot |
||||||
|
loads the new volume and things appear. You can also run multiple installs to |
||||||
|
buy just a single layer on top of the original. |
||||||
|
|
||||||
|
(So far, I haven't seen anything like "this volume is getting too many layers |
||||||
|
and now it is taking forever; but, then again, three weeks only.) |
||||||
|
|
||||||
|
### Firefox |
||||||
|
|
||||||
|
Firefox bundled in the base file system (the immutable part) comes without any |
||||||
|
codecs, so basically no video on the internet works. You can install the |
||||||
|
Flatpak version -- which is also something you can use for most things -- but |
||||||
|
then you end with two Firefox installs. |
||||||
|
|
||||||
|
And before Firefox is part of the base, immutable file system, you can uninstall |
||||||
|
it. But you can override the install by putting a new layer which removes |
||||||
|
Firefox from the base install. For that, you use |
||||||
|
|
||||||
|
``` |
||||||
|
rpm-ostree override remove firefox |
||||||
|
``` |
||||||
|
|
||||||
|
... instead of the expected... |
||||||
|
|
||||||
|
``` |
||||||
|
rpm-ostree uninstall firefox |
||||||
|
``` |
||||||
|
|
||||||
|
### Extra Repositories |
||||||
|
|
||||||
|
Silverblue doesn't allow adding extra repositories the way you normally do with |
||||||
|
Workstation -- creating a simple file in `/etc/yum.repos.d/`. Now you need to |
||||||
|
use `ostree remote add <name> <url>` -- Yup, that's pretty close the way you |
||||||
|
add a Git remote or something. |
||||||
|
|
||||||
|
After that, installing packages takes the normal `rpm-ostree install`. |
||||||
|
|
||||||
|
### Speed |
||||||
|
|
||||||
|
No, sorry. I didn't notice any speed improvements, although it feels like it |
||||||
|
boots a bit faster than Workstation. |
||||||
|
|
||||||
|
Kinda related, since I'm running on a laptop, it seems the battery life |
||||||
|
improved under Silverblue, for some reason. I may take a leap here and say that |
||||||
|
maybe the base image is smaller -- since it is immutable and you can uninstall, |
||||||
|
I feel they put the bare minimum to boot a desktop system instead of everything |
||||||
|
that may be useful. |
||||||
|
|
||||||
|
### Podman |
||||||
|
|
||||||
|
Not that you can't use Docker on Silverblue, but Silverblue uses Podman by |
||||||
|
default for almost everything -- there is even a tool to create your own small |
||||||
|
containers for running things in isolation, called `toolbox`. It takes a bit of |
||||||
|
time to understand how it works, specially since, so far, I couldn't find a |
||||||
|
group I can add my user to it so I can run commands without `sudo`, but |
||||||
|
whatever. |
||||||
|
|
||||||
|
Besides the `sudo` thing, you may want to enable the `podman.socket` service, |
||||||
|
which makes Podman create a socket the same way Docker does, so you can use |
||||||
|
`docker-compose` like you were using Docker. |
||||||
|
|
||||||
|
Honestly, I feel I should take a bit more time to properly understand Podman |
||||||
|
instead of using it as Docker, but since I had a docker-compose file already and |
||||||
|
I needed to quickly jump back into work, I postponed this learning so far. |
||||||
|
|
||||||
|
## Conclusion |
||||||
|
|
||||||
|
So far, I'm pretty happy with Silverblue as a main drive. It works, it seems -- |
||||||
|
emphasis on "seems" -- to be more lightweight than Workstation and I still have |
||||||
|
everything I need. |
Loading…
Reference in new issue