[syslinux] [PATCH] isohybrid: Avoid re-using the UUID on multiple filesystems
Matthew Garrett
mjg at redhat.com
Tue Mar 27 07:58:15 PDT 2012
The code currently uses the same GPT UUID for both filesystem partitions.
This confuses OS X rather badly. Add a new UUID for the HFS+ partition.
---
utils/isohybrid.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/utils/isohybrid.c b/utils/isohybrid.c
index ac04bfd..dec5f0b 100644
--- a/utils/isohybrid.c
+++ b/utils/isohybrid.c
@@ -45,7 +45,7 @@ extern int opterr, optind;
struct stat isostat;
unsigned int padding = 0;
-uuid_t disk_uuid, part_uuid, iso_uuid;
+uuid_t disk_uuid, part_uuid, mac_uuid, iso_uuid;
uint8_t mode = 0;
enum { VERBOSE = 1 , EFI = 2 , MAC = 4};
@@ -784,8 +784,10 @@ initialise_gpt(uint8_t *gpt, uint32_t current, uint32_t alternate, int primary)
if (primary) {
uuid_generate(part_uuid);
uuid_generate(iso_uuid);
+ uuid_generate(mac_uuid);
reverse_uuid(part_uuid);
reverse_uuid(iso_uuid);
+ reverse_uuid(mac_uuid);
}
memcpy(part->partGUID, iso_uuid, sizeof(uuid_t));
@@ -810,7 +812,7 @@ initialise_gpt(uint8_t *gpt, uint32_t current, uint32_t alternate, int primary)
part++;
- memcpy(part->partGUID, part_uuid, sizeof(uuid_t));
+ memcpy(part->partGUID, mac_uuid, sizeof(uuid_t));
memcpy(part->partTypeGUID, hfs_partition, sizeof(uuid_t));
part->firstLBA = lendian_64(mac_lba * 4);
part->lastLBA = lendian_64(part->firstLBA + mac_count - 1);
--
1.7.7.6
More information about the Syslinux
mailing list