Pages

Sunday 12 December 2021

Fedora SilverBlue

Container-based development

During one of my recent projects, I was sharing the dev machine along with other devs. And soon it messed up things because one dev will try to update some package and that will cause issues in other dev's code.

So we started to use a container-based workflow for development so that things are isolated and the host is intact. ie we were creating n number of containers, often starting them with a 'tail -f /dev/null' command, executing bash in it to get a shell, and then installing required libs, compilers, and dependencies for our development activities. 

While this container-based development approach is going smooth for us, I happened to see people using Fedora SilverBlue, which is an immutable OS, for the same purpose.

Fedora SilverBlue

  • It's an immutable OS
    • In short, the base OS file system cannot be changed directly by a normal user.
    • Hence host is intact always and thus reliable, robust, and thus stable.
  • Focus on container-based development workflow
  • Behaves like a regular desktop OS
  • OS updates are fast and just requires a reboot to start using the new version


Ostree, rpm-ostree & flatpak

Ostree  is the technology used to manage the FS and also to update the SilverBlue. For Silverblue installs, ostree is responsible for deploying and updating the OS image (including everything below '/' that is not symlinked into '/var').

Using Ostree we have rpm-ostree which makes it possible to install rpm packages in silverblue. To see the newly installed RPMs, the system needs to be rebooted with the new image.

Flatpak is a package management utility, offering a sandbox environment in which users can run application software in isolation from the rest of the system.

On Silverblue, the root filesystem is immutable. This means that '/', '/usr' and everything below it is read-only.

'/var' is where all of Silverblue’s runtime state is stored. Symlinks are used to make traditional state-carrying directories available in their expected locations. This includes:


  • /home → /var/home

  • /opt → /var/opt

  • /srv → /var/srv

  • /root → /var/roothome

  • /usr/local → /var/usrlocal

  • /mnt→ /var/mnt

  • /tmp → /sysroot/tmp

ToolBox

Silverblue also comes with the toolbox utility, which uses containers to provide an environment where development tools and libraries can be installed and used.

Toolbox makes it easy to use a containerized development environment for daily software development and debugging.
Inside the Toolbox container we'll find your existing user name & permissions, access to home dir and other locations, common utilities like dnf, rpm etc.

some refs:

https://docs.fedoraproject.org/en-US/fedora-silverblue/

https://fedoramagazine.org/what-is-silverblue/

https://www.maketecheasier.com/fedora-silverblue-future-of-linux/



No comments:

Post a Comment