-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Need to think about an update strategy #55
Comments
Was the
IIRC it's quite blunt. Something like, writing all affected files to a temporary path then a move into place – typically without considering the before/after state of things (because things are so neatly separated). |
The OS in a read-only image + user modifications in a read-write unionfs overlay would solve this very neatly... |
helloSystem/hello#37 (comment) recently I might have misunderstood what's to be expected within the constraints of 'live' media. If the OS will be read-only: that's fine, if:
Alternatively: some way to periodically download then 'slot in', to the medium, an updated OS? |
What I mean is that the OS should be conained in a read-only image file (in the worst case: ZFS dataset) but overlayed with read-writeable space so that any changes by the user get redirected into the read-writeable area. This way, the system appears entirely r/w to the user. When an OS update comes along, the read-only file is switched to another one, but the user-generated content "on top" still is there. NomadBSD kinda goes into this direction, but the underlying OS is not an image file but a partition, which makes updating it harder. Why do I want an image file rather than a partition for the system: So that it can be most easily exchanged with another one, and users can easily keep multiple ones around. The more I think about it, we should have a closer look at what NomadBSD is doing there. Using a file rather than a partition shouldn't be that hard to change... but then, as far as I remember, not even NomadBSD achieves that all parts of the system appear r/w to the user. |
This comment has been minimized.
This comment has been minimized.
Because you can end up with a half-outdated (hello components), untested (in this combination), messed up (regarding configuration files), and potentially no longer working (as you have shown) system. Note that it says "not yet". We still "need to think about an update strategy" and it will probably be more like Android/iOS. |
Are boot environments forgotten again? helloSystem/Utilities#33 (comment)
If you stop crippling |
Boot Environments just allow to go back once disaster has struck. I want to avoid the disaster in the first place. (As I am sure you find out you can use Note that |
Maybe not mentioned at https://hellosystem.github.io/docs/index.html but From helloSystem/hello#110 (comment):
From main page https://github.com/helloSystem/hello#what:
Crippling
That's a somewhat narrow vision. Less dramatically: boot environments allow you to progress¸ with the option of going back. If there's a fear of boot environments, then why is Boot Environments amongst the preferences for helloSystem? |
There is no fear of BEs, but
|
If you use SystemImageKit and have a pure FreeBSD image with an early init script to copy over hello-specific files from a second image with geom_rowr or something, then you can use rsync to update the two. Does this simplify things or complicate them? |
So your idea is to have one image that contains an unmodified FreeBSD, and another one that contains the helloSystem modifications? Would work but would require a working union filesystem, because geom_rowr doesn't allow you to use the second image without the original first image. |
Yeah, pretty much. Even if you mount /var from a persistent partition, and symlink /etc, /Applications, and /Users to subfolders of /var, like Silverblue does, would that work? |
up.bsd.lv Binary Upgrades Report From https://up.bsd.lv/:
|
More accurately:
|
https://github.com/ChimeraOS/frzr
Goes in the direction I mean. But I'd like to use filesystem image files rather than btrfs subvolumes. |
Yes, that might be just what we need. As for the btrfs thing, we might be able to fork it... |
No btrfs for me, so much is sure ;-) |
Yes, and that's why we could fork it. ZFS is welcome, right? And that naturally uses a similar but more flexible subvolume system. So, could we not fork it and add ZFS support? |
Or yeah, there's the option of having ufs2 images that can be downloaded, that may be better. |
Also I want my Firefox updates ;~) I tried bundling Firefox, but it's one of those apps that's damn near impossible to compile on a relatively slow computer, on FreeBSD. I might have a look at the port, see how they do it, I might be missing a compiler option. |
As for Firefox, it shouldn't be too hard to make Application Bundles for each version. It shouldn't even be neccessary to re-compile it, it should be doable by using the pkgs as ingredients. |
What's the issue? |
Oh, I posted it on a separate issue. Basically, updating Firefox updates Inkscape, python and Thunderbird, uninstalls krita and removes Qt, which explains why krita went but hey, now the system doesn't boot because my display manager crashes cause of no qt libraries. |
Link please. Thanks. |
Thanks, that's somewhat lost (with unanswered questions) in the midst of an issue that may be non-related. I suggest |
I feel it is an issue with pkg, not helloSystem. |
I doubt it.
Have you raised the issue elsewhere? Installation and Maintenance of Ports or Packages | The FreeBSD Forums |
helloSystem/Filer#3 (comment) (2020-08-31)
helloSystem/hello#37 (comment) (2020-11-18)
helloSystem/Utilities#33 (2021-01-17)
#141 (comment) (2021-02-20)
#135 (comment) (2021-03-21)
helloSystem/hello#161 (comment) (2021-09-23)
▼ https://github.com/helloSystem/ISO/blob/experimental/build.sh helloSystem/Utilities#33 (comment) (2021-10-18)
For FreeBSD-based systems, use of things such as pkg-install(8) should be thought of as inevitable in most cases. Addition of a package might require an upgrade to a previously-installed package, and so on. Rewind: #135 (comment) (2021-02-17)
Fast forward: freebsd/freebsd-src#543 (comment) there's
(Compare with, for example, yesterday's experimental non-patched |
During initial installation, the installer uses
On the running system, it will end up as
Currently there is no way for the installer to install a newer version of the operating system "over" an existing installation, because the installer always runs We would like to change this so that users can install a newer version of the operating system over an existing one. For this we would like to:
What are the exact commands needed to do this from the Live ISO? Actually, since we would be using a clone, we might not even need to boot into the Live ISO to install the new OS over the clone but could do it from the running system. At least that is how I understand it - that you can snapshot and clone the running system without bad side effects. Is creating a "recursive snapshot" what we need here? We now can do Now we can make a writable clone:
Then we get sudo ls There are no less than 11(!) zfs "mountpoints" listed. How do we get clones of all of them mounted in the correct nested/recursive way under |
Using Boot Environments would probably be the correct way to do this, but Boot Environments do not cover all zfs datasets, at least not by default. So none of these are covered by Boot Environments:
Can this be changed? |
Just using Possibly Its config file has
and it looks like our update strategy will need something along those lines. So the question is, can |
vermaden says:
|
Some more thoughts on "over-installing" (installing over an existing OS): How can we come up with a list of files in /etc that must not be touched by over-installing a new OS? Conceptually, i think what we'd want is a diff from the old to the new version, and apply that diff to And it is completely unclear to me how the package database would have to be treated. Because the update would clearly install newer versions of the packages, while user-installed packages would still be on the system. I think this is roughly what Probably sysadmins in large corporations have quite some tricks on their sleeves for this sort of thing... |
Assume we want to implement this: When running from the Live ISO, can we get the whole zpool with all of its datasets mounted under Apparently yes but not quite because we are missing, e.g.,
This is all way too complicated. And how can we make a Boot Environment/writable clone of all of the above? |
So, trying the folloing approach:
Maybe using a
Allan Jude talks about this exact problem in https://youtu.be/YcdFln0vO4U?t=582. (Side rant: This whole user accounts/home directories/passwords/pam/sudo/Xauthority/cookies thing is a bit... unwieldy. All of this appears to be scattered around in various files at different locations. One single database would be much neater. This whole thing seems to be very finicky.) With this, we can reboot into the Boot Environment and we can log in as a user on the console but
Why is it searching for that file in Relevant video: ZFS Powered Magic Upgrades Using boot environments for atomic in-place upgrades by Allan Jude |
According to https://youtu.be/YcdFln0vO4U?t=1000 this can be used to boot the new Boot Environment once:
(TODO: Understand and potentially make use of |
@jsm222 helloDesktop https://wiki.freebsd.org/helloDesktop seems like a very good idea, if it can be in ports for FreeBSD helloSystem/hello#161 and maintained. |
Would be a nice thing indeed. I looked a little into it again today, but got caught up with qterminal crashing, when the menu is running.. When all packages needed for helloSystem are in the ports tree freebsd-upgrade and pkg upgrade would indeed not break anything. |
If you allow pkg-upgrade(8) to complete its work (for your current case, you should probably run repeatedly), then |
Hello, not a big issue is a test machine i am playing with so i can re-install the whole shebang but i think i learned to not run the update of the system as i did. which one is the right way? should i wait for the next ISO? just out of curiosity thanks M |
Hello @m4lin. Currently we don't have an update system in place. So you need to do a clean reinstallation of helloSystem every time. We know that we need to think about an update stratefy, but so far we haven't found a good way of doing it. One way would be to package all helloSystem components as proper FreeBSD packages, but so far no one has succeeded in doing this. |
This comment was marked as duplicate.
This comment was marked as duplicate.
#55 (comment) |
Point in case: User updated all the packages using |
pkg upgrade
seems to overwrite our configuration.For example, our changed rc scripts are seemingly replaced with those from the pacakges, and our carefully configured
slim.conf
is moved toslim.conf.pkgsave
.How does e.g, the Mac work when "over-installing" a newer version of the OS?
The text was updated successfully, but these errors were encountered: