Fix a bug for Linux GUI program when update from old release. (#1590)

pull/1597/head
longpanda 2 years ago
parent 480afee1a7
commit 9e2e4ec0a9

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -685,6 +685,7 @@ static int ventoy_write_gpt_part_table(int fd, uint64_t disksize, VTOY_GPT_INFO
static void * ventoy_update_thread(void *data)
{
int fd;
int updateMBR;
ssize_t len;
off_t offset;
MBR_HEAD MBR;
@ -742,17 +743,32 @@ static void * ventoy_update_thread(void *data)
len = write(fd, disk->vtoydata.rsvdata, sizeof(disk->vtoydata.rsvdata));
vlog("Writing reserve data offset:%llu len:%llu ...\n", (_ull)offset, (_ull)len);
updateMBR = 0;
memcpy(&MBR, &(disk->vtoydata.gptinfo.MBR), 512);
if (disk->vtoydata.partition_style == 0 && MBR.PartTbl[0].Active == 0)
{
MBR.PartTbl[0].Active = 0x80;
MBR.PartTbl[1].Active = 0;
MBR.PartTbl[2].Active = 0;
MBR.PartTbl[3].Active = 0;
updateMBR = 1;
vlog("set MBR partition 1 active flag enabled\n");
}
if (MBR.BootCode[0x190] != 0x56 || MBR.BootCode[0x191] != 0x54)
{
vlog("set VT data %02x %02x\n", MBR.BootCode[0x190], MBR.BootCode[0x191]);
MBR.BootCode[0x190] = 0x56;
MBR.BootCode[0x191] = 0x54;
updateMBR = 1;
}
if (updateMBR)
{
offset = lseek(fd, 0, SEEK_SET);
len = write(fd, &MBR, 512);
vlog("set MBR partition 1 active flag enabled offset:%llu len:%llu\n", (_ull)offset, (_ull)len);
vlog("update MBR offset:%llu len:%llu\n", (_ull)offset, (_ull)len);
}
g_current_progress = PT_SYNC_DATA1;

Loading…
Cancel
Save