diff options
author | Lennart Poettering <lennart@poettering.net> | 2016-12-15 17:17:43 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2016-12-21 19:09:30 +0100 |
commit | be30ad41ffd796ba40a5026b4963c17f04cc334d (patch) | |
tree | 56f7744a8d8fc0d3cf6bfdcc1223199f5cbfc94a /src | |
parent | gpt-auto-generator: support LUKS encrypted root partitions (diff) | |
download | systemd-be30ad41ffd796ba40a5026b4963c17f04cc334d.tar.xz systemd-be30ad41ffd796ba40a5026b4963c17f04cc334d.zip |
dissect: return the GPT partition UUID, too
This is useful as we can match up the EFI UUID with the one the firmware
supposedly used.
Diffstat (limited to 'src')
-rw-r--r-- | src/dissect/dissect.c | 3 | ||||
-rw-r--r-- | src/shared/dissect-image.c | 4 | ||||
-rw-r--r-- | src/shared/dissect-image.h | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/src/dissect/dissect.c b/src/dissect/dissect.c index aa06894037..78ec88fa35 100644 --- a/src/dissect/dissect.c +++ b/src/dissect/dissect.c @@ -221,6 +221,9 @@ int main(int argc, char *argv[]) { p->rw ? "writable" : "read-only", partition_designator_to_string(i)); + if (!sd_id128_is_null(p->uuid)) + printf(" (UUID " SD_ID128_FORMAT_STR ")", SD_ID128_FORMAT_VAL(p->uuid)); + if (p->fstype) printf(" of type %s", p->fstype); diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index 10d53eab45..5b6e78dd3d 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -95,6 +95,7 @@ int dissect_image(int fd, const void *root_hash, size_t root_hash_size, DissectI _cleanup_blkid_free_probe_ blkid_probe b = NULL; _cleanup_udev_unref_ struct udev *udev = NULL; _cleanup_free_ char *generic_node = NULL; + sd_id128_t generic_uuid = SD_ID128_NULL; const char *pttype = NULL; struct udev_list_entry *first, *item; blkid_partlist pl; @@ -427,6 +428,7 @@ int dissect_image(int fd, const void *root_hash, size_t root_hash_size, DissectI else { generic_nr = nr; generic_rw = !(pflags & GPT_FLAG_READ_ONLY); + generic_uuid = id; generic_node = strdup(node); if (!generic_node) return -ENOMEM; @@ -457,6 +459,7 @@ int dissect_image(int fd, const void *root_hash, size_t root_hash_size, DissectI .architecture = architecture, .node = n, .fstype = t, + .uuid = id, }; n = t = NULL; @@ -507,6 +510,7 @@ int dissect_image(int fd, const void *root_hash, size_t root_hash_size, DissectI .partno = generic_nr, .architecture = _ARCHITECTURE_INVALID, .node = generic_node, + .uuid = generic_uuid, }; generic_node = NULL; diff --git a/src/shared/dissect-image.h b/src/shared/dissect-image.h index b424dac665..76104e5780 100644 --- a/src/shared/dissect-image.h +++ b/src/shared/dissect-image.h @@ -32,6 +32,7 @@ struct DissectedPartition { bool rw:1; int partno; /* -1 if there was no partition and the images contains a file system directly */ int architecture; /* Intended architecture: either native, secondary or unset (-1). */ + sd_id128_t uuid; /* Partition entry UUID as reported by the GPT */ char *fstype; char *node; char *decrypted_node; |