diff options
-rw-r--r-- | classes/dm-verity-img.bbclass | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/classes/dm-verity-img.bbclass b/classes/dm-verity-img.bbclass index 8351ab2..045c860 100644 --- a/classes/dm-verity-img.bbclass +++ b/classes/dm-verity-img.bbclass | |||
@@ -18,6 +18,13 @@ | |||
18 | # DM_VERITY_IMAGE_TYPE = "ext4" # or ext2, ext3 & btrfs | 18 | # DM_VERITY_IMAGE_TYPE = "ext4" # or ext2, ext3 & btrfs |
19 | # DM_VERITY_SEPARATE_HASH = "1" # optional; store hash on separate dev | 19 | # DM_VERITY_SEPARATE_HASH = "1" # optional; store hash on separate dev |
20 | # IMAGE_CLASSES += "dm-verity-img" | 20 | # IMAGE_CLASSES += "dm-verity-img" |
21 | # | ||
22 | # Using the GPT UUIDs specified in the standard can also be useful in that | ||
23 | # they are displayed and translated in cfdisk output. | ||
24 | # | ||
25 | # DM_VERITY_ROOT_GUID = <UUID for your architecture and root-fs> | ||
26 | # DM_VERITY_RHASH_GUID = <UUID for your architecture and verity-hash> | ||
27 | # https://uapi-group.org/specifications/specs/discoverable_partitions_specification/ | ||
21 | 28 | ||
22 | # The resulting image can then be used to implement the device mapper block | 29 | # The resulting image can then be used to implement the device mapper block |
23 | # integrity checking on the target device. | 30 | # integrity checking on the target device. |
@@ -35,12 +42,20 @@ DM_VERITY_IMAGE_HASH_BLOCK_SIZE ?= "4096" | |||
35 | # Should we store the hash data on a separate device/partition? | 42 | # Should we store the hash data on a separate device/partition? |
36 | DM_VERITY_SEPARATE_HASH ?= "0" | 43 | DM_VERITY_SEPARATE_HASH ?= "0" |
37 | 44 | ||
45 | # These are arch specific. We could probably intelligently auto-assign these? | ||
46 | # Take x86-64 values as defaults. No impact on functionality currently. | ||
47 | # See SD_GPT_ROOT_X86_64 and SD_GPT_ROOT_X86_64_VERITY in the spec. | ||
48 | # Note - these are passed directly to sgdisk so hyphens needed. | ||
49 | DM_VERITY_ROOT_GUID ?= "4f68bce3-e8cd-4db1-96e7-fbcaf984b709" | ||
50 | DM_VERITY_RHASH_GUID ?= "2c7357ed-ebd2-46d9-aec1-23d437ec2bf5" | ||
51 | |||
38 | # Process the output from veritysetup and generate the corresponding .env | 52 | # Process the output from veritysetup and generate the corresponding .env |
39 | # file. The output from veritysetup is not very machine-friendly so we need to | 53 | # file. The output from veritysetup is not very machine-friendly so we need to |
40 | # convert it to some better format. Let's drop the first line (doesn't contain | 54 | # convert it to some better format. Let's drop the first line (doesn't contain |
41 | # any useful info) and feed the rest to a script. | 55 | # any useful info) and feed the rest to a script. |
42 | process_verity() { | 56 | process_verity() { |
43 | local ENV="${STAGING_VERITY_DIR}/${IMAGE_BASENAME}.$TYPE.verity.env" | 57 | local ENV="${STAGING_VERITY_DIR}/${IMAGE_BASENAME}.$TYPE.verity.env" |
58 | local WKS_INC="${STAGING_VERITY_DIR}/${IMAGE_BASENAME}.$TYPE.wks.in" | ||
44 | rm -f $ENV | 59 | rm -f $ENV |
45 | 60 | ||
46 | # Each line contains a key and a value string delimited by ':'. Read the | 61 | # Each line contains a key and a value string delimited by ':'. Read the |
@@ -86,6 +101,14 @@ process_verity() { | |||
86 | # Emit the values needed for a veritysetup run in the initramfs | 101 | # Emit the values needed for a veritysetup run in the initramfs |
87 | echo "ROOT_UUID=$ROOT_UUID" >> $ENV | 102 | echo "ROOT_UUID=$ROOT_UUID" >> $ENV |
88 | echo "RHASH_UUID=$RHASH_UUID" >> $ENV | 103 | echo "RHASH_UUID=$RHASH_UUID" >> $ENV |
104 | |||
105 | # Create wks.in fragment with build specific UUIDs for partitions. | ||
106 | # Unfortunately the wks.in does not support line continuations... | ||
107 | # First, the unappended filesystem data partition. | ||
108 | echo 'part / --source rawcopy --ondisk sda --sourceparams="file=${IMGDEPLOYDIR}/${DM_VERITY_IMAGE}-${MACHINE}.${DM_VERITY_IMAGE_TYPE}.verity" --part-name verityroot --part-type="${DM_VERITY_ROOT_GUID}"'" --uuid=\"$ROOT_UUID\"" > $WKS_INC | ||
109 | |||
110 | # note: no default mount point for hash data partition | ||
111 | echo 'part --source rawcopy --ondisk sda --sourceparams="file=${IMGDEPLOYDIR}/${DM_VERITY_IMAGE}-${MACHINE}.${DM_VERITY_IMAGE_TYPE}.vhash" --part-name verityhash --part-type="${DM_VERITY_RHASH_GUID}"'" --uuid=\"$RHASH_UUID\"" >> $WKS_INC | ||
89 | } | 112 | } |
90 | 113 | ||
91 | verity_setup() { | 114 | verity_setup() { |