On 5/8/23 11:48, Andrei Borzenkov wrote:
Is there a reason the TW grub patches could not just be submitted
upstream?
No idea. I hope nobody is going to do it and if someone does upstream will reject them. It is absolutely wrong way to implement this functionality.
That surprises me because having it resolve the paths to the default subvolume seems like a natural and easily understandable method to me. Otherwise, it would "appear" to me that the only time the default subvolume would matter is when you do a mount without using the -o subvol= or subvolid= option.
Since it is a configurable option, it should not break anything and other distros "could" just leave it disabled.
Yes. And it means we have two different grub binaries which behave differently and use incompatible config file. Which is the last thing we want.
I don't follow. Seems that there could still be one grub binary which would generate the config files based on whether the config was set or not. That's what TW does so I am confused as why you said that. Do you expect TW to get rid of its grub patch ? If they did then snapper rollback would have the same issues in TW as it does on other distros. MicroOS also sets the default snapshot to the new snapshot after transactional-updates completes successfully.
grub-mkconfig tries everything possible to generate configuration file that is compatible with current and past grub versions. The only way we can achieve it with these patches is to generate two set of paths depending on whether this option is enabled. Which makes absolutely no sense.
I do not doubt your reasoning ( clearly you are very familiar with all of this - one of the few I've encountered ) and I am trying to understand your reasoning, but I keep coming back to this works GREAT in TW (with the patch ) and because all the other distros don't have that patch they struggle with manual methods to do a rollback ( which are not that hard, but certainly not as simple as snapper rollback ).
I already told you how to implement this functionality with zero changes to upstream grub. Even command to get default subvolume is not needed, because the currently active root could be simply stored in grub "jump config".
Yes, and I appreciate that but at the end of that you said "The main problem of this is the fact that /boot as a grub location is really imprinted deep in the subconscious. Ironically, in the past grub-install*did* support --grub-directory which was then deprecated in favour of always using /boot." Which I took to mean that that since --grub-directory was deprecated that it also meant that the solution was not a long term answer to the issue.'
make grub to query for current default subvolume and load its configuration from there
If you are talking about modifying the grub source and recompiling, I'm not up to the task of modifying grub source code as I haven't touched C code in 25+ years. I also did not completely follow your how to implement method. In rereading it though, I realized that you might think that all these questions are for a multi-boot environment where I have different linux distros all installed on the same machine. That is not the case. Each linux distro is standalone and generally all are in VMs. The other distros provide methods for booting to snapshots ( with other packages installed, but their methods are different than TW uses ) but the other distros cannot handle snapper rollback because they don't recognize what the default subvolume is set to like TW does. Other distros, generally mount the active/live system as snapshot /@ whereas TW starts with /@/.snapshot/1/snapshot as the default subvolume . On TW, when you do a snapper rollback the end result is that the default snapshot was changed ( it first makes a r/o snapshot of the currently booted snapshot, then it makes a r/w snapshot of the one that you want to rollback too and then it sets that r/w snapshot as the default snapshot ) so that on the next boot you are booting from the new desired snapshot. On other distros, all the configs have the active/live system as snapshot /@ and if you want to rollback they rename/move that snapshot to a new name ( like timeshift does ) and then rename/copy the snapshot you want to rollback to as /@. All the configs are coded to use /@ snapshot they just switch out which snapshot that really refers too. IMHO, all the other distros jump through a lot of hoops simply because they are missing the grub patch which TW has. The solution you provided seems like it is geared towards the multi boot setup which is not the setup I am talking about and wouldn't have an impact on the way grub works in the other distro vms. Sorry if I've misunderstood or misinterpreted what you are saying. Regards, Joe