diff options
| -rw-r--r-- | recipes-core/initrdscripts/initramfs-framework-dm/dmverity | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/recipes-core/initrdscripts/initramfs-framework-dm/dmverity b/recipes-core/initrdscripts/initramfs-framework-dm/dmverity index 71afc91..1923490 100644 --- a/recipes-core/initrdscripts/initramfs-framework-dm/dmverity +++ b/recipes-core/initrdscripts/initramfs-framework-dm/dmverity | |||
| @@ -8,12 +8,41 @@ dmverity_run() { | |||
| 8 | DATA_SIZE="__not_set__" | 8 | DATA_SIZE="__not_set__" |
| 9 | DATA_BLOCK_SIZE="__not_set__" | 9 | DATA_BLOCK_SIZE="__not_set__" |
| 10 | ROOT_HASH="__not_set__" | 10 | ROOT_HASH="__not_set__" |
| 11 | SEPARATE_HASH="__not_set__" | ||
| 11 | 12 | ||
| 12 | . /usr/share/misc/dm-verity.env | 13 | . /usr/share/misc/dm-verity.env |
| 13 | 14 | ||
| 14 | C=0 | 15 | C=0 |
| 15 | delay=${bootparam_rootdelay:-1} | 16 | delay=${bootparam_rootdelay:-1} |
| 16 | timeout=${bootparam_roottimeout:-5} | 17 | timeout=${bootparam_roottimeout:-5} |
| 18 | |||
| 19 | # we know exactly what we are looking for; don't need the wide hunt below | ||
| 20 | if [ "${SEPARATE_HASH}" -eq "1" ]; then | ||
| 21 | while [ ! -b "/dev/disk/by-partuuid/${ROOT_UUID}" ]; do | ||
| 22 | if [ $(( $C * $delay )) -gt $timeout ]; then | ||
| 23 | fatal "Root device (data) resolution failed" | ||
| 24 | exit 1 | ||
| 25 | fi | ||
| 26 | debug "Sleeping for $delay second(s) to wait for root data to settle..." | ||
| 27 | sleep $delay | ||
| 28 | C=$(( $C + 1 )) | ||
| 29 | done | ||
| 30 | |||
| 31 | veritysetup \ | ||
| 32 | --data-block-size=${DATA_BLOCK_SIZE} \ | ||
| 33 | create rootfs \ | ||
| 34 | /dev/disk/by-partuuid/${ROOT_UUID} \ | ||
| 35 | /dev/disk/by-partuuid/${RHASH_UUID} \ | ||
| 36 | ${ROOT_HASH} | ||
| 37 | |||
| 38 | mount \ | ||
| 39 | -o ro \ | ||
| 40 | /dev/mapper/rootfs \ | ||
| 41 | ${ROOTFS_DIR} || exit 2 | ||
| 42 | |||
| 43 | return | ||
| 44 | fi | ||
| 45 | |||
| 17 | RDEV="$(realpath /dev/disk/by-partuuid/${bootparam_root#PARTUUID=} 2>/dev/null)" | 46 | RDEV="$(realpath /dev/disk/by-partuuid/${bootparam_root#PARTUUID=} 2>/dev/null)" |
| 18 | while [ ! -b "${RDEV}" ]; do | 47 | while [ ! -b "${RDEV}" ]; do |
| 19 | if [ $(( $C * $delay )) -gt $timeout ]; then | 48 | if [ $(( $C * $delay )) -gt $timeout ]; then |
