Well technically near every router and embedded device is "immutable", with usually only config partition being changed, and firmware update being just re-loading whole image.
Here is an overview of macOS 13's layout.
For my own files I have a partition which I use exclusively for data. When I want to make changes to the system I have a boot option to disable overlayfs which I use once every few months for updates.
In the NixOS community, the idea of "reset all system state on boot" is called "impermanence".
For websites the cookies tend to expire once every few months so I'll boot back to upgrade mode and refresh my log-ins everywhere at once every few months at the same time as I install my system updates.
You can also selectively copy some software's local data to your persistent read-write disk partition and create a symbolic link in the original directory, that way this particular piece of software will be white-listed in a sense and always writable. But I haven't needed to do that.
My only issue has been google which has a weird cookie implementation, it throws cookie-mismatch errors all the time so I have to delete them and relog-in every day. If it was a big issue I'd make my firefox profile always writable as described above but I don't use google much.
Do you mean you'd have a read-only base system, and a remote layer on top so the application data is only persisted remotely?
It killed our USB stick in just days, though
It presents an ISO (using the rocker on the side as a selector) from its HDD as a bootable CDROM target, and still exposes the HDD/SSD as a separate target.
So, it is possible to boot what is an RO OS image, and use the HDD/SSD target as an overlay, but because it is not flash memory, the wear issue is far less of a problem.
And, since it is presenting ISO images as boot targets, it is possible to (relatively) easily test upgrades while keeping the overlays separate.
Too many writes?
ESXi on SD-Card's with the physical write-lock is pretty popular ;)
Oh really Sherlock? Are you sure it's not a OS? ;)
They once were, before the internet made software updates "easy". There was a time when software was released (and often embedded without any option for upgrade/modification).
But immutable (mostly correct and reliable) software is more expensive and takes longer to develop, so it is out of fashion. Instead we now push out alpha quality MVPs and depend on updates to resolve known and unknown unaddressed issues as well as promised by not delivered features.
To be a little fair to developers, the user expectations these days are 10x or more greater than they were pre-internet-update days. After all, we now carry "supercomputer" devices in our pockets which also make phone calls, and we expect features and integrations which previously were not even imagined.
Even cars are now becoming update dependent for features and bug fixes. This is approaching a breaking point, I think. It will likely happen; there will be regulation and/or revolt; there will be a return to write-once approaches.
Many of the thousands of dependencies in a given distro could file a new vulnerability overnight. Your immutable distro will need updating pronto.
I certainly hope so. I dread the day it becomes impractical to drive older, pre-bullshit cars.
Verticals like Senior Care I think would go for this over the current MSP managed systems.
They have high turn over and low tech investment, I've met ones that still use workgroups and shared workstations (single username/pass).
There is a market there potentially for the management companies that run the facilities
The hard/fun part is just figuring out a way to install and use the software you want without doing that, since that kind of defeats the purpose of using silverblue in the first place. In most cases, you can use a flatpak, a toolbox, or a container.
However, if you can't figure it out, there's no real harm in giving up and layering whatever you want.
This is just vastly untrue.
A bespoke tool will always be more productive than a one-size-fits-most tool, and thankfully with development tools the work/time of fitting your tool is marginal to the hours you work with it, and the effort is heavily front-loaded. After a few years you have a solid setup that only requires tiny amounts of polishing every few hundred hours.
So the real correct answer to whether bespoke or pre-configured tools are more efficient is “it depends”.
Others have noted the FOMO/paradox of choice issue, so I’ll list another: multi-context environments. I work in a highly collaborative environment where I need to share tools and sometimes whole machines. I rarely get to use the same configuration for any particular task. So bespoke, to me and many of my colleagues, means more stuff to learn. Standard options and configurations mean much higher levels of productivity.
Then the next semester I am denied the ability to take a parallel computing class because it was for graduate students only and the prof. would not accept a waiver even though the class was being taught on the cluster me and a buddy built.
That I still had root on.
So I added a script that would renice the prof.'s jobs to be as slow as possible.
BOFH moment :)
How naughty of you!
Two words. Unpatched vulnerabilities.
It’s a bit like iOS and android, the system is the same on all devices of the same model, there are just different configurations and different apps.
All I want is a Live CD like OS for safe browsing that has an actually usable firefox - i.e. has ad block and vertical tab extensions installed.
In the security world, an immutable system is an unpatchable system. If a 0-day is found in the system image, you can't fix it, you have to get a new image going. This causes wasted personnel-hours, wasted money, and some times wasted hardware if the image happens to be on a ROM-type of data storage. I've seen immutable systems on WORM HDDs. The people running those types of systems quickly got tired of having to do hardware replacements for every patch.
The point is in not making changes on the fly on live systems. You are perfectly able (and encouraged) to deploy new nodes with updated software and roll over the old nodes.
Sadly, because they inherently make it so hard to keep up to date with the latest version of proprietary software like nVidia. Or they don't provide support over a wide range of (desktop and embedded) architectures.
Often the best choice you can make is the distro that has most users, so you are sure that it will get the attention and support from third parties.
Here is an overview:
- https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(... - https://github.com/koekeishiya/yabai/wiki/Disabling-System-I...
If part of your program's installation process is "reboot into recovery mode", I feel like you're working with an OS that isn't quite as malleable as we sometimes are led to believe it is. :D
(btw I use `yabai` and it is totally worth doing all these things...I wouldn't set it to auto-update, and I review every release carefully, but so far so good. It's a great WM for macOS!)
Funny because now, that's how both Android and iOS behave, with the difference that OS updates only come every other month and AB partitions making the installation process perceived as fast as only rebooting.
Back in the Knoppix days it was first a novelty, and then a blessing that you had to boot from a CD-ROM, because it led to one amazing outcome:
Less tinkering.
Or rather - it split use from tinkering.
Systems today are designed around the principles of deferral and volatility. You can add or change anything at any time. The user has absolute freedom to tinker, but also the vendor of always-connected products has endless possibilities to update. The result is a mess of dissatisfaction and half-bakery. Nothing is ever finished or fully right. It also, maybe paradoxically, leads to systems that feel less under your control.
Systems like TinyCore and Live CD distros take a different approach that the OS is finished. You have two choices, take it or leave it.
Unless you are prepared to cross a non-trivial barrier to remix and update the non-volatile image, you are forced to just use what you have. That leads to more productivity because you adapt to the tool rather than constantly adapting the tool to you.
I like TinyCore because it's looking to a middle ground of baking immutable systems at key stage points and keeping changes separate from the immutable core. I can change the core if I want to, but rarely.
I see that as a separate prospect than "appliance platforms" like Android and a PhoneOS onto which you can only load "apps".
What ideas and favourite solutions do other's have for using immutability, or not liking it?