mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 00:14:32 +09:00
dissect-image: turn verity device sharing into opt-in
Sharing verity volumes is problematic for a veriety of reasons, for example because it might pin the wrong backing device at the wrong time. Let's hence turn this around: unless verity sharing is enabled, leave it off, and turn $SYSTEMD_VERITY_SHARING into a true boolean that can be set both ways. The primary usecase for verity sharing is RootImage=, where it probably makes sense to leave on, hence set the flag there. This is crucial when putting together installers which install an OS on a second disk: if verity sharing is always on we might mount the wrong of the two disks at the wrong time.
This commit is contained in:
@@ -69,12 +69,12 @@ mv "$MINIMAL_IMAGE.fooverity" "$MINIMAL_IMAGE.verity"
|
||||
mv "$MINIMAL_IMAGE.foohash" "$MINIMAL_IMAGE.roothash"
|
||||
|
||||
mkdir -p "$IMAGE_DIR/mount" "$IMAGE_DIR/mount2"
|
||||
systemd-dissect --mount "$MINIMAL_IMAGE.raw" "$IMAGE_DIR/mount"
|
||||
SYSTEMD_VERITY_SHARING=1 systemd-dissect --mount "$MINIMAL_IMAGE.raw" "$IMAGE_DIR/mount"
|
||||
grep -q -F -f "$OS_RELEASE" "$IMAGE_DIR/mount/usr/lib/os-release"
|
||||
grep -q -F -f "$OS_RELEASE" "$IMAGE_DIR/mount/etc/os-release"
|
||||
grep -q -F "MARKER=1" "$IMAGE_DIR/mount/usr/lib/os-release"
|
||||
# Verity volume should be shared (opened only once)
|
||||
systemd-dissect --mount "$MINIMAL_IMAGE.raw" "$IMAGE_DIR/mount2"
|
||||
SYSTEMD_VERITY_SHARING=1 systemd-dissect --mount "$MINIMAL_IMAGE.raw" "$IMAGE_DIR/mount2"
|
||||
verity_count=$(find /dev/mapper/ -name "*verity*" | wc -l)
|
||||
# In theory we should check that count is exactly one. In practice, libdevmapper
|
||||
# randomly and unpredictably fails with an unhelpful EINVAL when a device is open
|
||||
|
||||
Reference in New Issue
Block a user