4 ms·
Can someone ELI5 what exactly is immutable in an OS? Are all applications run as sandboxed containers or something? If so, do they natively support switching
by yumraj 4y ago
Can someone ELI5 what exactly is immutable in an OS?
Are all applications run as sandboxed containers or something?
If so, do they natively support switching between multiple versions of, say python?
In-line Edit: if they do, awesome, how about drivers and say CUDA?
More importantly, does it break the usual install scripts of packages and require special handling OR do things just work?
- deleted 4y ago[deleted]
- behnamoh 4y agoMy understanding is that the core apps and functionalities are immutable, but you can install apps on top of that rock solid core. In theory, I don't think containerization is necessary to have an immutable OS.
- itsmartapuntocm 4y agoSilverblue prefers you would use flatpak and containers for apps on top, but it does support “layering” regular packages on top of the immutable core system.
- youainti 4y ago> Can someone ELI5 what exactly is immutable in an OS? I'll do my best. An immutable OS has a set of core features which are updated with a way to roll-back if the update fails. The idea is that the core doesn't generally get touched by users or even the administrators. All user or server software will be installed in some sort of container. > Are all applications run as sandboxed containers or something? Yes, for some definition of container. For example, Fedora Silverblue uses podman to install OCI containers for server work, toolbx (a wrapper around podman) to setup CLI tools with access to the home dir, and use flatpak for GUI applications. > If so, do they natively support switching between multiple versions of, say python? My understanding is that you can write your own bash aliases to do that. > In-line Edit: if they do, awesome, how about drivers and say CUDA? Typically your drivers are going to be managed by the "core" of the OS so you won't be swapping those out. > More importantly, does it break the usual install scripts of packages and require special handling OR do things just work? My understand is this depends on how you set things up. - If you add something to the immutable core, it will come from a package manager. - If you install a cli application in a container it will not update itself. - Flatpak will provide updates. - full on containers such as podman/docker do their own thing.
- flkiwi 4y agoWhat's interesting about your question is that (and I'm saying this as a Silverblue user) it's a great question, and I'm fascinated by the incredibly successful projects that don't even bother trying to answer it: macOS and chrome OS. Substantively, it's a difficult question to answer because there are multiple ways of accomplishing it, if I understand Vanilla correctly. In Silverblue and, I believe, macos, the operating system is a read-only image (probably ChromeOS too, but I don't know that): changing the operating system means dropping a new image on your drive, without messing with the bits that are mutable (/home and /var, in the case of Silverblue. You can layer applications directly on the OS layer in Silverblue, but it's not ideal -- though it's leading to some fascinating projects like ublue (https://ublue.it/ https://ublue.it/), in which you can branch an OS image at github, customize it to your liking, and use github features to continuously update your image so that you have a custom but immutable, auto-updating operating system.
- NetOpWibby 4y agoOkay, that’s cool af.
- scns 4y agoUniversal Blue offers images with Nvidia drivers based on Fedora: https://ublue.it/images/ https://ublue.it/images/ edit: did not see that sibling pointed them out allready