• 0 Posts
  • 8 Comments
Joined 2 months ago
cake
Cake day: July 7th, 2026

help-circle
  • VanillaOS and OpenSUSE immutable ones use BTRFS snapshots dont they?

    For openSUSE’s atomic offerings, you’re correct. Vanilla OS is a bit more nuanced, though. I don’t quite recall how they did it on their original images. But since Orchid, there is a reliance on OCI images for its updates. Note that bootc is also contingent upon OCI images, which is why I made the comparison earlier. They behave so similar to one another, that Vanilla OS’ Vib can be used (without too much trouble) to create Fedora Atomic images.

    As for the usage of Btrfs snapshots on Vanilla OS, I think it doesn’t quite need it because it relies on lvm thin provisioning instead for its ABRoot. However, an attempt to verify this by installing it within a VM failed spectacularly and I don’t think the blame is on me 😅…


  • Sorry, perhaps I should have been more clear.

    It was meant strictly in the sense of how much it burdens the system performance-wise. So, in other words, using nix is easier on your system’s resources than rpm-ostree (or bootc) is; at least, that has been my experience.

    In regards to breaking, I’m not sure whether one outdoes the other. Though, I suppose that nix -by design- would inch this out. But this is basically an ‘internal dispute’ between the crème de la crème; as rpm-ostree/bootc basically outdoes any other distro package manager that’s not named nix or guix.


  • While I absolutely adore everything rpm-ostree/bootc, I do think operations involving it are relatively heavy; at least compared to what else is out there.

    Depending on your (in)tolerance, you might therefore consider opting for something else, instead. Assuming that this list does a considerable job at presenting your options, I’ll try to provide input on some of the more mainstream ones:

    • openSUSE’s offerings. AFAIK, it is lighter. Heck, I’d reckon you might not even be able to distinguish it from its traditional counterpart; Tumbleweed. However, its ecosystem is still very much in its infancy. Hence, I don’t recall any of their offerings that don’t rely on GNOME/KDE-Plasma. There used to be Project Greybeard, but it’s far from lively… As for Aeon (i.e. GNOME version) and Kalpa (i.e. KDE Plasma version), they haven’t had a general availability release yet.
    • NixOS. I have heard good things regarding how well it does on low-end PCs. However, FWIW, my own testing portrays a different story: I once had an update that resulted in a lot of compilation and my machine was struggling quite a bit. The same machine that handles Fedora Atomic quite gracefully*. Perhaps that was a fluke, but I wanted to point it out. I’d argue nix does handle operations more gracefully than rpm-ostree/bootc on average, though.
    • Guix System. Perhaps I’m wrong, but I wouldn’t be surprised if this outdoes NixOS in terms of how gracefully it operates on a low-end system. This is mostly on vibes, though.
    • Endless OS. If you liked Bazzite, but want something lighter, then this might be just that. It relies on ostree only and thus doesn’t have the heavier operations from rpm-ostree/bootc. The goals of the foundation behind it align with enabling low-end hardware. This is reflected in their system reqs. Note that GNOME is still relatively heavy, but you should be served well even on just 4 GB of RAM.
    • ChromeOS Flex. For completeness’ sake, if you’re otherwise okay with this, then I suppose it’s another option worth considering. FWIW, there’s also FydeOS (and perhaps others).
    • VanillaOS. Does something similar to bootc ever since its Orchid release. So, it’s probably not that light. Furthermore, I got many questions regarding the health of its ecosystem. This used to be another serious contender, but I’m afraid it might have missed the boat…
    • GNOME OS and KDE Linux. While not production-ready yet, these will definitely be interesting in the long run.
    • aerynOS. Another project that’s not production-ready yet.
    • Nitrux. Definitely one of the more interesting ones. It has been around for quite a while now, but I’ve yet to come across someone that dailies it.

    Having said all of that, the gist is basically that atomic distros are still relatively new. As such, I can only recommend Endless OS, Guix System and NixOS. Note that the latter two are rabbit holes, though.


  • Thank you! This is actually very helpful! And we can definitely reverse some of their doing 😉. Below I will repeat the invoked commands and provide some context/explanation. So, without further ado.


    sudo rpm-ostree kargs --append-if-missing=zswap.enabled=1
    sudo rpm-ostree kargs --append-if-missing=zswap.max_pool_percent=25
    sudo rpm-ostree kargs --append-if-missing=zswap.compressor=lz4
    sudo rpm-ostree kargs --append-if-missing=systemd.zram=0
    

    The commands found above were used to change the kernel arguments through rpm-ostree. You can still find these back with rpm-ostree kargs --editor. You can even outright remove them, then and there. It’s also possible to literally revert those commands by invoking the following:

    sudo rpm-ostree kargs --delete-if-present=zswap.enabled=1
    sudo rpm-ostree kargs --delete-if-present=zswap.max_pool_percent=25
    sudo rpm-ostree kargs --delete-if-present=zswap.compressor=lz4
    sudo rpm-ostree kargs --delete-if-present=systemd.zram=0
    

    sudo rpm-ostree initramfs --enable --arg=--add-drivers --arg=lz4

    Unfortunately, I don’t have any experience with this.


    sudo swapoff -a
    sudo rm -rf /var/swap
    sudo semanage fcontext -a -t var_t "/var/swap(/.*)?"
    sudo restorecon -Rv /var/swap
    sudo btrfs filesystem mkswapfile --size 32G /var/swap/swapfile
    sudo semanage fcontext -a -t swapfile_t "/var/swap/swapfile"
    sudo restorecon -v /var/swap/swapfile
    sudo swapon -a
    

    Basically, the commands found literally above affect the contents of /var. As such, they’re outside of the ‘jurisdiction’ of rpm-ostree. Reverting these is the same as on any other Linux system.


    The following commands change the contents of /etc. As such, they’re being tracked and can be reverted to their original states. Though, I’m not sure if it’s possible to revert them back to their respective versions without those changes.

    sudo sed -i '\|/var/swap/swapfile|d' /etc/fstab

    I’ll be honest with ya. I don’t know what this one does 😅. I have used sed in the past but wasn’t able to decipher this one. FWIW, it tries to make some changes to /etc/fstab . And, if I’d have to make a guess, I think it deletes any lines that contain /var/swap/swapfile.

    echo "/var/swap/swapfile none swap defaults,nofail 0 0" | sudo tee -a /etc/fstab

    This added some text to /etc/fstab. To revert it, go to /etc/fstab, and remove /var/swap/swapfile none swap defaults,nofail 0 0

    echo "vm.swappiness=120" | sudo tee /etc/sysctl.d/99-swappiness.conf

    This created a file named 99-swappiness.conf and placed it to /etc/sysctl.d/. As such, a simple sudo rm -rf /etc/sysctl.d/99-swappiness.conf suffices.


    sudo rpm-ostree install policycoreutils-python-utils

    This was an optional command. If you did have to invoke it, then you should find policycoreutils-python-utils when invoking rpm-ostree status. It should be mentioned as a layered package.

    To undo it, simply invoke rpm-ostree uninstall policycoreutils-python-utils.


  • Bazzite’s messaging has merit, but we’d be making a mistake by regarding it as absolute. It makes more sense to take them as carefully written guide lines for a specific audience.

    Furthermore. with all due respect, but OP’s writing doesn’t imply installing/managing software with rpm-ostree. Which, is actually the subject of the documentation entry you quoted. As such, I think you might have misunderstood them.

    Youre breaking a core tenant of immutable distros by installing system level packages.

    Finally, FWIW, I absolutely disagree with the above. The page you quoted from seems to agree with me on this: “Layering packages are mostly intended for system-level applications, libraries, and other dependencies.”


  • I made some changes using rpm-ostree related to zram and swap

    Could you be more transparent and/or elaborate in this regard? Like, what did you actually do?

    FWIW, I’ve been on Fedora Atomic since before Bazzite’s existence, but I’ve never once considered using rpm-ostree to make changes to zram and swap. So, I’m a bit confused. To be clear, it’s perfectly possible that what you did is 100% legit, but that it just happened to expose a gap in my knowledge.

    I had assumed that, because I used rpm-ostree, the changes would become part of the “tree” and I could rollback to the original settings. But when I went to look at Bazzite’s rollback tools, it seemed solely focused on rolling back to previous official releases, and I couldn’t find any reference to the specific changes I made.

    Basically, while rpm-ostree does offer git-like control on your base system; hence, why it’s so powerful to begin with. It does not keep more than two deployments around; at least, by default.

    If you would like to keep around a specific deployment (for whatever reason), you can do so with the ostree admin pin <insert number> command. The git-like control also enables you to keep track of:

    • the changes applied to /etc; invoke ostree admin config-diff to see what files have been added or modified since installation
    • layered packages; simply invoke rpm-ostree status

    Keeping track is cool and all, but its usefulness is in full display with powerful applications such as:

    • rpm-ostree reset; this basically removes all permutations. That is, two people on the same image, will have the identical base system after this. (Note that this still isn’t as powerful as a factory reset. For that, refer to this issue tracker on bootc[1].)

    Finally, the git-like structure ensures actual reversibility. On most other systems, installing A -> installing B -> uninstalling A will yield a different state than just installing B. With rpm-ostree, the base system between the two will be identical.


    For completeness’ sake, I’ve used “base system” above to just mean the contents of /usr and /etc (and maybe some other subdirectories of /). Crucially, the contents of /var are not part of the “base system”.


    1. On that note, bootc’s model is arguably better suited if you’re just interested in finding back references to changes you made in the past. Granted, bootc offers a hefty amount of freedom in how you’d approach this and might be overwhelming for now. FWIW, both Bazzite and this are products of this. ↩︎