From 9394a8bd0f1286c83c81f5a4b25da3ad67132d68 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 14 Jul 2017 12:48:18 +0200 Subject: [PATCH] libfdisk: make fdisk compliant to UEFI/GPT specification on PMBR The PMBR partition record should be StartingCHS=0x002000 (0/0/2) and EndingCHS=0xFFFFFF (1023/255/63) Addresses: https://github.com/karelzak/util-linux/issues/485 Signed-off-by: Karel Zak --- libfdisk/src/gpt.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c index 6b894aa232..9176a6d101 100644 --- a/libfdisk/src/gpt.c +++ b/libfdisk/src/gpt.c @@ -506,11 +506,12 @@ static int gpt_mknew_pmbr(struct fdisk_context *cxt) return rc; pmbr = (struct gpt_legacy_mbr *) cxt->firstsector; + memset(pmbr->partition_record, 0, sizeof(pmbr->partition_record)); pmbr->signature = cpu_to_le16(MSDOS_MBR_SIGNATURE); pmbr->partition_record[0].os_type = EFI_PMBR_OSTYPE; - pmbr->partition_record[0].start_sector = 1; - pmbr->partition_record[0].end_head = 0xFE; + pmbr->partition_record[0].start_sector = 2; + pmbr->partition_record[0].end_head = 0xFF; pmbr->partition_record[0].end_sector = 0xFF; pmbr->partition_record[0].end_track = 0xFF; pmbr->partition_record[0].starting_lba = cpu_to_le32(1); @@ -1925,8 +1926,8 @@ static int gpt_write_pmbr(struct fdisk_context *cxt) pmbr->signature = cpu_to_le16(MSDOS_MBR_SIGNATURE); pmbr->partition_record[0].os_type = EFI_PMBR_OSTYPE; - pmbr->partition_record[0].start_sector = 1; - pmbr->partition_record[0].end_head = 0xFE; + pmbr->partition_record[0].start_sector = 2; + pmbr->partition_record[0].end_head = 0xFF; pmbr->partition_record[0].end_sector = 0xFF; pmbr->partition_record[0].end_track = 0xFF; pmbr->partition_record[0].starting_lba = cpu_to_le32(1); -- 2.47.2