check_umount_disk "$DISK"
vtoycli partresize -s $DISK $part2_start
fi
+
- vtinfo "update esp partition attribute"
- vtoycli gpt -f $DISK
- sync
+ if [ "$PART1_TYPE" = "EE" ]; then
+ vtinfo "update esp partition attribute"
+ vtoycli gpt -f $DISK
+ sync
+ fi
+
echo ""
vtinfo "Update Ventoy on $DISK successfully finished."
pstGPT->PartTbl[1].Attr, 0x8000000000000000ULL);
pstGPT->PartTbl[1].Attr = 0x8000000000000000ULL;
+
+ pstGPT->Head.PartTblCrc = ventoy_crc32(pstGPT->PartTbl, sizeof(pstGPT->PartTbl));
pstGPT->Head.Crc = 0;
pstGPT->Head.Crc = ventoy_crc32(&(pstGPT->Head), pstGPT->Head.Length);
ventoy_write_gpt_part_table(fd, disk->size_in_byte, pstGPT);
Name = pMainGptInfo->PartTbl[1].Name;
if (Name[0] == 'V' && Name[1] == 'T' && Name[2] == 'O' && Name[3] == 'Y')
{
- pMainGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
- pMainGptInfo->Head.PartTblCrc = VtoyCrc32(pMainGptInfo->PartTbl, sizeof(pMainGptInfo->PartTbl));
- pMainGptInfo->Head.Crc = 0;
- pMainGptInfo->Head.Crc = VtoyCrc32(&pMainGptInfo->Head, pMainGptInfo->Head.Length);
-
- pBackGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
- pBackGptInfo->Head.PartTblCrc = VtoyCrc32(pBackGptInfo->PartTbl, sizeof(pBackGptInfo->PartTbl));
- pBackGptInfo->Head.Crc = 0;
- pBackGptInfo->Head.Crc = VtoyCrc32(&pBackGptInfo->Head, pBackGptInfo->Head.Length);
-
- lseek(fd, 512, SEEK_SET);
- write(fd, (UINT8 *)pMainGptInfo + 512, sizeof(VTOY_GPT_INFO) - 512);
-
- lseek(fd, DiskSize - 33 * 512, SEEK_SET);
- write(fd, pBackGptInfo, sizeof(VTOY_BK_GPT_INFO));
-
- fsync(fd);
+ if (pMainGptInfo->PartTbl[1].Attr != VENTOY_EFI_PART_ATTR)
+ {
+ pMainGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
+ pMainGptInfo->Head.PartTblCrc = VtoyCrc32(pMainGptInfo->PartTbl, sizeof(pMainGptInfo->PartTbl));
+ pMainGptInfo->Head.Crc = 0;
+ pMainGptInfo->Head.Crc = VtoyCrc32(&pMainGptInfo->Head, pMainGptInfo->Head.Length);
+
+ pBackGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
+ pBackGptInfo->Head.PartTblCrc = VtoyCrc32(pBackGptInfo->PartTbl, sizeof(pBackGptInfo->PartTbl));
+ pBackGptInfo->Head.Crc = 0;
+ pBackGptInfo->Head.Crc = VtoyCrc32(&pBackGptInfo->Head, pBackGptInfo->Head.Length);
+
+ lseek(fd, 512, SEEK_SET);
+ write(fd, (UINT8 *)pMainGptInfo + 512, sizeof(VTOY_GPT_INFO) - 512);
+
+ lseek(fd, DiskSize - 33 * 512, SEEK_SET);
+ write(fd, pBackGptInfo, sizeof(VTOY_BK_GPT_INFO));
+
+ fsync(fd);
+ }
}
}
Name = pMainGptInfo->PartTbl[1].Name;
if (Name[0] == 'V' && Name[1] == 'T' && Name[2] == 'O' && Name[3] == 'Y')
{
- pMainGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
- pMainGptInfo->Head.PartTblCrc = VtoyCrc32(pMainGptInfo->PartTbl, sizeof(pMainGptInfo->PartTbl));
- pMainGptInfo->Head.Crc = 0;
- pMainGptInfo->Head.Crc = VtoyCrc32(&pMainGptInfo->Head, pMainGptInfo->Head.Length);
-
- pBackGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
- pBackGptInfo->Head.PartTblCrc = VtoyCrc32(pBackGptInfo->PartTbl, sizeof(pBackGptInfo->PartTbl));
- pBackGptInfo->Head.Crc = 0;
- pBackGptInfo->Head.Crc = VtoyCrc32(&pBackGptInfo->Head, pBackGptInfo->Head.Length);
-
- lseek(fd, 512, SEEK_SET);
- write(fd, (UINT8 *)pMainGptInfo + 512, sizeof(VTOY_GPT_INFO) - 512);
-
- lseek(fd, DiskSize - 33 * 512, SEEK_SET);
- write(fd, pBackGptInfo, sizeof(VTOY_BK_GPT_INFO));
-
- fsync(fd);
+ if (pMainGptInfo->PartTbl[1].Attr != VENTOY_EFI_PART_ATTR)
+ {
+ pMainGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
+ pMainGptInfo->Head.PartTblCrc = VtoyCrc32(pMainGptInfo->PartTbl, sizeof(pMainGptInfo->PartTbl));
+ pMainGptInfo->Head.Crc = 0;
+ pMainGptInfo->Head.Crc = VtoyCrc32(&pMainGptInfo->Head, pMainGptInfo->Head.Length);
+
+ pBackGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
+ pBackGptInfo->Head.PartTblCrc = VtoyCrc32(pBackGptInfo->PartTbl, sizeof(pBackGptInfo->PartTbl));
+ pBackGptInfo->Head.Crc = 0;
+ pBackGptInfo->Head.Crc = VtoyCrc32(&pBackGptInfo->Head, pBackGptInfo->Head.Length);
+
+ lseek(fd, 512, SEEK_SET);
+ write(fd, (UINT8 *)pMainGptInfo + 512, sizeof(VTOY_GPT_INFO) - 512);
+
+ lseek(fd, DiskSize - 33 * 512, SEEK_SET);
+ write(fd, pBackGptInfo, sizeof(VTOY_BK_GPT_INFO));
+
+ fsync(fd);
+ }
}
}