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 <kzak@redhat.com>
This commit is contained in:
Karel Zak 2017-07-14 12:48:18 +02:00
parent c0eabc5382
commit 8ffa3b651d
1 changed files with 5 additions and 4 deletions

View File

@ -508,11 +508,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);
@ -1937,8 +1938,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);