Index: uspace/lib/label/src/gpt.c
===================================================================
--- uspace/lib/label/src/gpt.c	(revision bf7ddde7202032c4d6e8e1cce492754096b46905)
+++ uspace/lib/label/src/gpt.c	(revision 70815a24cf429286a07e08f8ad1f2a835d6be638)
@@ -40,4 +40,5 @@
 #include <mem.h>
 #include <stdlib.h>
+#include <uuid.h>
 
 #include "std/gpt.h"
@@ -335,4 +336,5 @@
 	uint64_t resv_blocks;
 	uint32_t pt_crc;
+	uuid_t disk_uuid;
 	int i, j;
 	int rc;
@@ -399,4 +401,6 @@
 			goto error;
 		}
+
+		uuid_generate(&disk_uuid);
 
 		for (j = 0; j < 8; ++j)
@@ -409,5 +413,5 @@
 		gpt_hdr->first_usable_lba = host2uint64_t_le(ba_min);
 		gpt_hdr->last_usable_lba = host2uint64_t_le(ba_max);
-		//gpt_hdr->disk_guid XXX
+		uuid_encode(&disk_uuid, gpt_hdr->disk_guid);
 		gpt_hdr->entry_lba = host2uint64_t_le(ptba[i]);
 		gpt_hdr->num_entries = host2uint32_t_le(num_entries);
@@ -594,4 +598,5 @@
 	part->nblocks = pspec->nblocks;
 	part->ptype = pspec->ptype;
+	uuid_generate(&part->part_uuid);
 
 	/* Prepare partition table entry */
@@ -651,5 +656,5 @@
 	memset(pte, 0, sizeof(gpt_entry_t));
 	pte->part_type[0] = 0x12;
-	pte->part_id[0] = 0x34;
+	uuid_encode(&part->part_uuid, pte->part_id);
 	pte->start_lba = host2uint64_t_le(part->block0);
 	pte->end_lba = host2uint64_t_le(eblock);
@@ -686,4 +691,5 @@
 	part->block0 = b0;
 	part->nblocks = b1 - b0 + 1;
+	uuid_decode(pte->part_id, &part->part_uuid);
 
 	part->label = label;
