Say I have an Ubuntu Core device with a model assertion specifying base: core20
, and gadget/software snaps also using base: core20
. I then manually create and install a new gadget with base: core24
, and install a new snap also based on core24
.
This leaves the device with both core20
and core24
bases installed. Is it correct that the system itself still uses core20
as its run-time, as defined by the model assertion, even though my new snaps (including the gadget) use core24
?
If so, I’m unclear why one would need to perform a remodel as described in Upgrade Ubuntu Core. What are the practical benefits of remodeling over what I’ve done? Or am I doing something unsupported? Does having a differing run-time between device and snaps have unintended consequences?
Additionally, the remodelling documentation states:
The remodelling process is triggered by either updating the model assertion, running the snap remodel
command, or from the snapd REST API.
Does this mean that if I publish a new model assertion with a different base and sign it, devices using the old model will automatically upgrade? If so, how can this be controlled or disabled?
Thanks in advance for any clarification.
Followed up in the SF 00410188 case
I then manually create and install a new gadget with base: core24
, and install a new snap also based on core24
.
If I remember correctly snapd will stop you from installing a 2nd gadget on the device
Either way, as you mention yourself below both your boot base and gadget are still the one mentioned in the model. So that’s what is different in the remodel operation, it can change what is the boot base, the gadget, kernel etc.
Does this mean that if I publish a new model assertion with a different base and sign it, devices using the old model will automatically upgrade? If so, how can this be controlled or disabled?
not currently. The snapd REST API mentioned here, is the on-device one
Thanks @pedronis (and @gairepravesh on the ticket!)
I was a bit unclear. I didn’t install a second gadget, I just updated the already existing gadget with a new revision.
What confuses me, is that I am able to install core24
on a device whose model has base core20
and then update the gadget referenced in the model from one with base: core20
to one with base: core24
. However, when using ubuntu-image
I cannot create a similar system, as it does not allow mismatch in base snap between model and gadget, giving error
Error: Error preparing image: cannot use gadget snap because its base "core24" is different from model base "core20"
I guess the correct thing to do is just to remodel, such that all snaps on the device have core24
base. Then there won’t be any extra overhead from running two bases.