I don’t really understand how ostree works from a use standpoint. What I am looking to do is create a custom immutable Linux where I make a filesystem image and then devices can pull the image if I make changes upstream I’m looking for a way to update a local image.

So basically I’m wanting to create some sort of OStree repo. I know rpm-ostree exists but I want something that is more distro agnostic. (I want to use Debian and maybe gentoo as the base)

  • Possibly linux@lemmy.zipOP
    link
    fedilink
    English
    arrow-up
    3
    ·
    1 month ago

    I like the idea of rsync as it is simple. I could combine rsync with btrfs to use snapshots are the working system and the current r/w system as the part that gets updated.

    However, I think it would be good to use OStree as it has features like the ability to manage boot including auto rollbacks and easy switching between states.

    • Max-P@lemmy.max-p.me
      link
      fedilink
      arrow-up
      3
      ·
      1 month ago

      auto rollbacks and easy switching between states.

      That’s the beauty of snapshots, you can boot them. So you just need GRUB to generate the correct menu and you can boot any arbitrary version of your system. On the ZFS side of things there’s zfsbootmenu, but I’m pretty sure I’ve seen it for btrfs too. You don’t even need rsync, you can use ssh $server btrfs send | btrfs recv and it should in theory be faster too (btrfs knows if you only modified one block of a big file).

      and the current r/w system as the part that gets updated.

      That kind of goes against the immutable thing. What I’d do is make a script that mounts a fork of the current snapshot readwrite into a temporary directory, chroot into it, install packages, exit chroot, unmount and then commit those changes as a snapshot. That’s the closest I can think of that’s easy to DIY that’s basically what rpm-ostree install does. It does it differently (daemon that manages hardlinks), but filesystem snapshots basically do the same thing without the extra work.

      However, I think it would be good to use OStree

      I found this, maybe it’ll help: https://ostreedev.github.io/ostree/adapting-existing/

      It looks like the fundamental is the same, temporary directory you run the package manager into and then you commit the changes. So you can probably make it work with Debian if you want to spend the time.