985 Commits

Author SHA1 Message Date
Alfonso Sánchez-Beato
56187a6665 Merge branch 'master' into mount-gadget-in-run-folder 2022-07-13 09:13:21 +01:00
Michael Vogt
769f27fcff boot,device: extract SealedKey helpers from boot to device
* boot,gadget: add new `device.TpmLockoutAuthUnder()` and use it

Create a helper in `gadget/device/encrypt.go:TpmLockoutAuthUnder()`
that is used to retrieve the path of the TPM lockout auth data.

This is then used in the boot package and will also be used when
reseting the DA lockout counter.

This is split out of PR#11935.

* boot,device: extract SealedKey helpers from boot to device

The DA lockout reset code will need to be able to read the
`SealedKeysMethod` so this commit moves the code to read/write
the sealing methods from `boot` to `gadget/device` (just like
we did for e.g. `{Has,Read}EncryptionMarkers`).

This is split out of PR #11935 and build on top of PR #11946

* boot: revert use of device.TpmLockoutAuthUnder() in tests

* gadget/device: rename tests as suggested by Alberto (thanks!)
2022-07-12 12:57:29 +02:00
Michael Vogt
53e0fb46a3 boot,gadget: add new device.TpmLockoutAuthUnder() and use it
* boot,gadget: add new `device.TpmLockoutAuthUnder()` and use it

Create a helper in `gadget/device/encrypt.go:TpmLockoutAuthUnder()`
that is used to retrieve the path of the TPM lockout auth data.

This is then used in the boot package and will also be used when
reseting the DA lockout counter.

This is split out of PR#11935.

* boot: revert test changes to `boot` (thanks to Samuele)
2022-07-12 11:45:36 +02:00
alfonsosanchezbeato
91622c094b many: introduce IsUndo flag in LinkContext
* many: introduce IsUndo flag in LinkContext

Some times LinkSnap is called in an undo task when we want to revert
to a previous snap revision. Introduce a flag to make LinkSnap and
boot code aware of when this happen, as some of the logic for snap
installations should not be applied when doing a revert. Specifically,
avoid the "try" logic that applies to kernels and bases: we are
reverting to a known snap that is expected to work, and making the
current snap the fallback provokes failures as we are removing it (and
also probably we are removing it because it has failed).

* tests: check that kernel with failing post-refresh is reverted

Check that a kernel with failing post-refresh hook is reverted
properly. In this case a second reboot to go back to the previous
kernel is needed.

* tests: check that base with failing post-refresh is reverted

Check that a base with failing post-refresh hook is reverted
properly. In this case a second reboot to go back to the previous
base is needed.

* boot,overlord: replace isUndo flags with NextBootContext

Replace isUndo flags with the NextBootContext struct, so we have
further information in the type and we can add flags in the future.

* boot: some style changes as suggested by review

* overlord: SetNextBoot call in maybeUndoRemodelBootChanges as undo type

* boot: add tests for the IsUndoingInstall true case

* overlord: fix remodel test for undos

* boot,overlord: implement the undo install for core16/18

* tests: added method to repack kernel snap also for core16/18

* tests: run revert after boot tests for UC16/18 too

* tests/nested/core/base-revert-after-boot: fix var usage

* tests: consider right channel/snap for uc16 in revert tests

* boot: minor stylistic changes

* boot: add tests for the undoing install case for core16/18

* boot,overlord: rename IsUndoingInstall to BootWithoutTry

* boot: use constant instead of literal for status
2022-07-11 17:49:06 +02:00
Alfonso Sánchez-Beato
ed675d95d9 boot: rename arguments to resealExpectedByModeenvChange 2022-07-07 13:12:13 +01:00
Alfonso Sánchez-Beato
77e386a782 boot: remove now unneeded flag and refactor update reseal logic 2022-07-06 09:58:27 +01:00
Alfonso Sánchez-Beato
a6a2b85ca1 boot: clarify come comments 2022-07-06 09:58:04 +01:00
Alfonso Sánchez-Beato
512752981b boot/boot_test.go: do not expect reseal if only gadget changed 2022-07-05 09:05:37 +01:00
Alfonso Sánchez-Beato
70ec8c30a1 boot: do not expect reseal if only change in modeenv is gadget 2022-07-05 08:57:25 +01:00
Alfonso Sánchez-Beato
474e3289b0 boot: add flag bootStateUpdate20 to identify reseal cases
Previously we were resealing on commit in all cases, but this is not
needed if the change in modeenv is due to a gadget update. Add a flag
so we know when resealing is needed and make sure we don't do it for
gadgets.
2022-07-04 12:05:00 +01:00
Alfonso Sánchez-Beato
5767dfd2f4 boot: clarify comment 2022-07-04 12:04:14 +01:00
Alfonso Sánchez-Beato
c5531cfb1a boot: some additions to mount gadget tests 2022-07-01 15:27:56 +01:00
Alfonso Sánchez-Beato
68685f1d0d boot: fix comment 2022-07-01 15:27:08 +01:00
Maciej Borzecki
31d6722101 boot: use gadget/device
Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>
2022-06-23 12:21:39 +02:00
Alfonso Sánchez-Beato
cfc72eca33 boot: update modenv when the gadget is refreshed 2022-06-23 12:04:26 +02:00
Alfonso Sánchez-Beato
fa2ea0c1f6 many: add Gadget() method to device interface
Same as we do for kernel and base snaps, as now gadget snaps are boot
participants.
2022-06-23 12:04:26 +02:00
Alfonso Sánchez-Beato
d5bb550539 boot: copy gadget to data partition
So it can be mounted to /run.
2022-06-23 12:04:26 +02:00
Alfonso Sánchez-Beato
07bf5b02e7 boot: mount gadget from initramfs
Mount gadget in /run/mnt/gadget directory from initramfs.
2022-06-23 11:41:40 +02:00
Michael Vogt
a067cdc294 Merge remote-tracking branch 'upstream/master' into bboozzoo/factory-reset-devicstate-encrypted-start 2022-06-20 11:26:16 +02:00
Maciej Borzecki
095513cfbb boot: release the new PCR handles when sealing for factory reset
It is possible that a factory reset attempt is interrupted by a reboot after
sealing the keys, which means that the PCR handles may already have been used
and have TPM resources allocated to them. In such case, we should attempt to
release the handles before sealing for factory reset again.

Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>
2022-06-15 15:03:43 +02:00
Maciej Borzecki
a303865ee6 boot: tweak naming
Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>
2022-06-15 10:36:00 +02:00
Maciej Borzecki
35960ec255 boot: helper to obtain the name of the fallback ubuntu-data key
Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>
2022-06-15 09:09:25 +02:00
Maciej Borzecki
6baaae47a7 boot: tweak error message
Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>
2022-06-14 12:12:56 +02:00
Maciej Borzecki
5dce1f31a7 boot: post factory reset cleanup
Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>
2022-06-13 15:12:58 +02:00
Maciej Borzecki
5914caee27 boot: helpers to obtain the name of fallback ubuntu-save sealed keys
Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>
2022-06-13 15:12:23 +02:00