Commit cbbd57ee authored by longpanda's avatar longpanda
Browse files

1.0.36 release

parent 7b08954e
...@@ -18,9 +18,8 @@ Please refer https://www.ventoy.net/en/doc_start.html for details. ...@@ -18,9 +18,8 @@ Please refer https://www.ventoy.net/en/doc_start.html for details.
========== VentoyWeb.sh =============== ========== VentoyWeb.sh ===============
sudo sh VentoyWeb.sh 1. sudo sh VentoyWeb.sh
Normally, it will popup a web browser window. 2. open your browser and visit http://127.0.0.1:24680
If not you can open your browser and visit http://127.0.0.1:24680
......
No preview for this file type
...@@ -97,6 +97,11 @@ if [ -f ./tool/$TOOLDIR/V2DServer.xz ]; then ...@@ -97,6 +97,11 @@ if [ -f ./tool/$TOOLDIR/V2DServer.xz ]; then
chmod +x ./tool/$TOOLDIR/V2DServer chmod +x ./tool/$TOOLDIR/V2DServer
fi fi
V2DServer "$HOST" "$PORT" &
wID=$!
sleep 1
vtVer=$(cat ventoy/version) vtVer=$(cat ventoy/version)
echo "" echo ""
echo "===============================================================" echo "==============================================================="
...@@ -112,7 +117,7 @@ echo "" ...@@ -112,7 +117,7 @@ echo ""
echo "################## Press Ctrl + C to exit #####################" echo "################## Press Ctrl + C to exit #####################"
echo "" echo ""
V2DServer "$HOST" "$PORT" wait $wID
if [ -n "$OLDDIR" ]; then if [ -n "$OLDDIR" ]; then
CURDIR=$(pwd) CURDIR=$(pwd)
......
...@@ -1546,7 +1546,7 @@ function img_unsupport_menuentry { ...@@ -1546,7 +1546,7 @@ function img_unsupport_menuentry {
############################################################# #############################################################
############################################################# #############################################################
set VENTOY_VERSION="1.0.35" set VENTOY_VERSION="1.0.36"
#ACPI not compatible with Window7/8, so disable by default #ACPI not compatible with Window7/8, so disable by default
set VTOY_PARAM_NO_ACPI=1 set VTOY_PARAM_NO_ACPI=1
......
...@@ -125,11 +125,7 @@ if [ "$MODE" = "list" ]; then ...@@ -125,11 +125,7 @@ if [ "$MODE" = "list" ]; then
fi fi
#check mountpoint #check mountpoint
grep "^$DISK" /proc/mounts | while read mtline; do check_umount_disk "$DISK"
mtpnt=$(echo $mtline | awk '{print $2}')
vtdebug "Trying to umount $mtpnt ..."
umount $mtpnt >/dev/null 2>&1
done
if grep "$DISK" /proc/mounts; then if grep "$DISK" /proc/mounts; then
vterr "$DISK is already mounted, please umount it first!" vterr "$DISK is already mounted, please umount it first!"
...@@ -299,6 +295,9 @@ if [ "$MODE" = "install" ]; then ...@@ -299,6 +295,9 @@ if [ "$MODE" = "install" ]; then
xzcat ./boot/core.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=2047 seek=1 xzcat ./boot/core.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=2047 seek=1
fi fi
# check and umount
check_umount_disk "$DISK"
xzcat ./ventoy/ventoy.disk.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=$VENTOY_SECTOR_NUM seek=$part2_start_sector xzcat ./ventoy/ventoy.disk.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=$VENTOY_SECTOR_NUM seek=$part2_start_sector
#test UUID #test UUID
...@@ -317,10 +316,7 @@ if [ "$MODE" = "install" ]; then ...@@ -317,10 +316,7 @@ if [ "$MODE" = "install" ]; then
vtinfo "esp partition processing ..." vtinfo "esp partition processing ..."
sleep 1 sleep 1
mtpnt=$(grep "^${PART2}" /proc/mounts | awk '{print $2}') check_umount_disk "$DISK"
if [ -n "$mtpnt" ]; then
umount $mtpnt >/dev/null 2>&1
fi
if [ "$SECUREBOOT" != "YES" ]; then if [ "$SECUREBOOT" != "YES" ]; then
mkdir ./tmp_mnt mkdir ./tmp_mnt
...@@ -332,10 +328,7 @@ if [ "$MODE" = "install" ]; then ...@@ -332,10 +328,7 @@ if [ "$MODE" = "install" ]; then
break break
fi fi
mtpnt=$(grep "^${PART2}" /proc/mounts | awk '{print $2}') check_umount_disk "$DISK"
if [ -n "$mtpnt" ]; then
umount $mtpnt >/dev/null 2>&1
fi
sleep 2 sleep 2
done done
...@@ -349,6 +342,8 @@ if [ "$MODE" = "install" ]; then ...@@ -349,6 +342,8 @@ if [ "$MODE" = "install" ]; then
mv ./tmp_mnt/EFI/BOOT/grubx64_real.efi ./tmp_mnt/EFI/BOOT/BOOTX64.EFI mv ./tmp_mnt/EFI/BOOT/grubx64_real.efi ./tmp_mnt/EFI/BOOT/BOOTX64.EFI
mv ./tmp_mnt/EFI/BOOT/grubia32_real.efi ./tmp_mnt/EFI/BOOT/BOOTIA32.EFI mv ./tmp_mnt/EFI/BOOT/grubia32_real.efi ./tmp_mnt/EFI/BOOT/BOOTIA32.EFI
sync
for tt in 1 2 3; do for tt in 1 2 3; do
if umount ./tmp_mnt; then if umount ./tmp_mnt; then
vtdebug "umount part2 success" vtdebug "umount part2 success"
...@@ -439,15 +434,19 @@ else ...@@ -439,15 +434,19 @@ else
dd status=none conv=fsync if=./rsvdata.bin seek=2040 bs=512 count=8 of=${DISK} dd status=none conv=fsync if=./rsvdata.bin seek=2040 bs=512 count=8 of=${DISK}
rm -f ./rsvdata.bin rm -f ./rsvdata.bin
check_umount_disk "$DISK"
xzcat ./ventoy/ventoy.disk.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=$VENTOY_SECTOR_NUM seek=$part2_start xzcat ./ventoy/ventoy.disk.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=$VENTOY_SECTOR_NUM seek=$part2_start
sync sync
if [ "$SECUREBOOT" != "YES" ]; then if [ "$SECUREBOOT" != "YES" ]; then
mkdir ./tmp_mnt mkdir ./tmp_mnt
vtdebug "mounting part2 ...." vtdebug "mounting part2 ...."
for tt in 1 2 3 4 5; do for tt in 1 2 3 4 5; do
check_umount_disk "$DISK"
if mount ${PART2} ./tmp_mnt > /dev/null 2>&1; then if mount ${PART2} ./tmp_mnt > /dev/null 2>&1; then
vtdebug "mounting part2 success" vtdebug "mounting part2 success"
break break
...@@ -467,6 +466,7 @@ else ...@@ -467,6 +466,7 @@ else
mv ./tmp_mnt/EFI/BOOT/grubx64_real.efi ./tmp_mnt/EFI/BOOT/BOOTX64.EFI mv ./tmp_mnt/EFI/BOOT/grubx64_real.efi ./tmp_mnt/EFI/BOOT/BOOTX64.EFI
mv ./tmp_mnt/EFI/BOOT/grubia32_real.efi ./tmp_mnt/EFI/BOOT/BOOTIA32.EFI mv ./tmp_mnt/EFI/BOOT/grubia32_real.efi ./tmp_mnt/EFI/BOOT/BOOTIA32.EFI
sync
for tt in 1 2 3; do for tt in 1 2 3; do
if umount ./tmp_mnt > /dev/null 2>&1; then if umount ./tmp_mnt > /dev/null 2>&1; then
......
...@@ -97,6 +97,14 @@ get_disk_part_name() { ...@@ -97,6 +97,14 @@ get_disk_part_name() {
fi fi
} }
check_umount_disk() {
DiskOrPart="$1"
grep "^${DiskOrPart}" /proc/mounts | while read mtline; do
mtpnt=$(echo $mtline | awk '{print $2}')
vtdebug "Trying to umount $mtpnt ..."
umount $mtpnt >/dev/null 2>&1
done
}
get_ventoy_version_from_cfg() { get_ventoy_version_from_cfg() {
if grep -q 'set.*VENTOY_VERSION=' $1; then if grep -q 'set.*VENTOY_VERSION=' $1; then
...@@ -218,6 +226,14 @@ format_ventoy_disk_mbr() { ...@@ -218,6 +226,14 @@ format_ventoy_disk_mbr() {
fi fi
part2_start_sector=$(expr $part1_end_sector + 1) part2_start_sector=$(expr $part1_end_sector + 1)
modsector=$(expr $part2_start_sector % 8)
if [ $modsector -gt 0 ]; then
vtdebug "modsector:$modsector need to be aligned with 4KB"
part1_end_sector=$(expr $part1_end_sector - $modsector)
part2_start_sector=$(expr $part1_end_sector + 1)
fi
part2_end_sector=$(expr $part2_start_sector + $VENTOY_SECTOR_NUM - 1) part2_end_sector=$(expr $part2_start_sector + $VENTOY_SECTOR_NUM - 1)
export part2_start_sector export part2_start_sector
...@@ -302,6 +318,8 @@ EOF ...@@ -302,6 +318,8 @@ EOF
echo "create efi fat fs $PART2 ..." echo "create efi fat fs $PART2 ..."
for i in 0 1 2 3 4 5 6 7 8 9; do for i in 0 1 2 3 4 5 6 7 8 9; do
check_umount_disk "$PART2"
if mkfs.vfat -F 16 -n VTOYEFI $PART2; then if mkfs.vfat -F 16 -n VTOYEFI $PART2; then
echo 'success' echo 'success'
break break
...@@ -333,6 +351,14 @@ format_ventoy_disk_gpt() { ...@@ -333,6 +351,14 @@ format_ventoy_disk_gpt() {
fi fi
part2_start_sector=$(expr $part1_end_sector + 1) part2_start_sector=$(expr $part1_end_sector + 1)
modsector=$(expr $part2_start_sector % 8)
if [ $modsector -gt 0 ]; then
vtdebug "modsector:$modsector need to be aligned with 4KB"
part1_end_sector=$(expr $part1_end_sector - $modsector)
part2_start_sector=$(expr $part1_end_sector + 1)
fi
part2_end_sector=$(expr $part2_start_sector + $VENTOY_SECTOR_NUM - 1) part2_end_sector=$(expr $part2_start_sector + $VENTOY_SECTOR_NUM - 1)
export part2_start_sector export part2_start_sector
...@@ -397,7 +423,10 @@ format_ventoy_disk_gpt() { ...@@ -397,7 +423,10 @@ format_ventoy_disk_gpt() {
fi fi
echo "create efi fat fs $PART2 ..." echo "create efi fat fs $PART2 ..."
for i in 0 1 2 3 4 5 6 7 8 9; do for i in 0 1 2 3 4 5 6 7 8 9; do
check_umount_disk "$PART2"
if mkfs.vfat -F 16 -n VTOYEFI $PART2; then if mkfs.vfat -F 16 -n VTOYEFI $PART2; then
echo 'success' echo 'success'
break break
......
...@@ -330,6 +330,7 @@ static int fatlib_is_secure_boot_enable(void) ...@@ -330,6 +330,7 @@ static int fatlib_is_secure_boot_enable(void)
flfile = fl_fopen("/EFI/BOOT/grubx64_real.efi", "rb"); flfile = fl_fopen("/EFI/BOOT/grubx64_real.efi", "rb");
if (flfile) if (flfile)
{ {
vlog("/EFI/BOOT/grubx64_real.efi find, secure boot in enabled\n");
fl_fclose(flfile); fl_fclose(flfile);
return 1; return 1;
} }
...@@ -504,7 +505,10 @@ int ventoy_get_vtoy_data(ventoy_disk *info, int *ppartstyle) ...@@ -504,7 +505,10 @@ int ventoy_get_vtoy_data(ventoy_disk *info, int *ppartstyle)
goto end; goto end;
} }
vdebug("now check secure boot ...\n"); vdebug("ventoy partition layout check OK: [%llu %llu] [%llu %llu]\n",
part1_start_sector, part1_sector_count, part2_start_sector, part2_sector_count);
vdebug("now check secure boot for %s ...\n", info->disk_path);
g_fatlib_media_fd = fd; g_fatlib_media_fd = fd;
g_fatlib_media_offset = part2_start_sector; g_fatlib_media_offset = part2_start_sector;
...@@ -546,7 +550,7 @@ int ventoy_get_vtoy_data(ventoy_disk *info, int *ppartstyle) ...@@ -546,7 +550,7 @@ int ventoy_get_vtoy_data(ventoy_disk *info, int *ppartstyle)
rc = 0; rc = 0;
end: end:
close(fd); vtoy_safe_close_fd(fd);
return rc; return rc;
} }
......
...@@ -80,6 +80,34 @@ void ventoy_syslog_newline(int level, const char *Fmt, ...) ...@@ -80,6 +80,34 @@ void ventoy_syslog_newline(int level, const char *Fmt, ...)
pthread_mutex_unlock(&g_log_mutex); pthread_mutex_unlock(&g_log_mutex);
} }
void ventoy_syslog_printf(const char *Fmt, ...)
{
char log[512];
va_list arg;
time_t stamp;
struct tm ttm;
FILE *fp;
time(&stamp);
localtime_r(&stamp, &ttm);
va_start(arg, Fmt);
vsnprintf(log, 512, Fmt, arg);
va_end(arg);
pthread_mutex_lock(&g_log_mutex);
fp = fopen(VTOY_LOG_FILE, "a+");
if (fp)
{
fprintf(fp, "[%04u/%02u/%02u %02u:%02u:%02u] %s",
ttm.tm_year, ttm.tm_mon, ttm.tm_mday,
ttm.tm_hour, ttm.tm_min, ttm.tm_sec,
log);
fclose(fp);
}
pthread_mutex_unlock(&g_log_mutex);
}
void ventoy_syslog(int level, const char *Fmt, ...) void ventoy_syslog(int level, const char *Fmt, ...)
{ {
char log[512]; char log[512];
......
...@@ -347,6 +347,7 @@ static int ventoy_fill_gpt_partname(uint16_t Name[36], const char *asciiName) ...@@ -347,6 +347,7 @@ static int ventoy_fill_gpt_partname(uint16_t Name[36], const char *asciiName)
int ventoy_fill_gpt(uint64_t size, uint64_t reserve, int align4k, VTOY_GPT_INFO *gpt) int ventoy_fill_gpt(uint64_t size, uint64_t reserve, int align4k, VTOY_GPT_INFO *gpt)
{ {
uint64_t ReservedSector = 33; uint64_t ReservedSector = 33;
uint64_t ModSectorCount = 0;
uint64_t Part1SectorCount = 0; uint64_t Part1SectorCount = 0;
uint64_t DiskSectorCount = size / 512; uint64_t DiskSectorCount = size / 512;
VTOY_GPT_HDR *Head = &gpt->Head; VTOY_GPT_HDR *Head = &gpt->Head;
...@@ -362,18 +363,28 @@ int ventoy_fill_gpt(uint64_t size, uint64_t reserve, int align4k, VTOY_GPT_INFO ...@@ -362,18 +363,28 @@ int ventoy_fill_gpt(uint64_t size, uint64_t reserve, int align4k, VTOY_GPT_INFO
ReservedSector += reserve / 512; ReservedSector += reserve / 512;
} }
Part1SectorCount = DiskSectorCount - ReservedSector - (VTOYEFI_PART_BYTES / 512) - 2048;
ModSectorCount = (Part1SectorCount % 8);
if (ModSectorCount)
{
vlog("Part1SectorCount:%llu is not aligned by 4KB (%llu)\n", (_ull)Part1SectorCount, (_ull)ModSectorCount);
}
// check aligned with 4KB // check aligned with 4KB
if (align4k) if (align4k)
{ {
if (DiskSectorCount % 8) if (ModSectorCount)
{ {
vdebug("Disk need to align with 4KB %u\n", (uint32_t)(DiskSectorCount % 8)); vdebug("Disk need to align with 4KB %u\n", (uint32_t)ModSectorCount);
ReservedSector += (DiskSectorCount % 8); Part1SectorCount -= ModSectorCount;
}
else
{
vdebug("no need to align with 4KB\n");
} }
} }
Part1SectorCount = DiskSectorCount - ReservedSector - (VTOYEFI_PART_BYTES / 512) - 2048;
memcpy(Head->Signature, "EFI PART", 8); memcpy(Head->Signature, "EFI PART", 8);
Head->Version[2] = 0x01; Head->Version[2] = 0x01;
Head->Length = 92; Head->Length = 92;
...@@ -461,7 +472,7 @@ int VentoyFillMBRLocation(uint64_t DiskSizeInBytes, uint32_t StartSectorId, uint ...@@ -461,7 +472,7 @@ int VentoyFillMBRLocation(uint64_t DiskSizeInBytes, uint32_t StartSectorId, uint
return 0; return 0;
} }
int ventoy_fill_mbr(uint64_t size, uint64_t reserve, int align4k, int PartStyle, MBR_HEAD *pMBR) int ventoy_fill_mbr(uint64_t size, uint64_t reserve, int align4k, MBR_HEAD *pMBR)
{ {
ventoy_guid Guid; ventoy_guid Guid;
uint32_t DiskSignature; uint32_t DiskSignature;
...@@ -498,11 +509,6 @@ int ventoy_fill_mbr(uint64_t size, uint64_t reserve, int align4k, int PartStyle, ...@@ -498,11 +509,6 @@ int ventoy_fill_mbr(uint64_t size, uint64_t reserve, int align4k, int PartStyle,
ReservedSector = (uint32_t)(reserve / 512); ReservedSector = (uint32_t)(reserve / 512);
} }
if (PartStyle)
{
ReservedSector += 33; // backup GPT part table
}
// check aligned with 4KB // check aligned with 4KB
if (align4k) if (align4k)
{ {
...@@ -512,11 +518,14 @@ int ventoy_fill_mbr(uint64_t size, uint64_t reserve, int align4k, int PartStyle, ...@@ -512,11 +518,14 @@ int ventoy_fill_mbr(uint64_t size, uint64_t reserve, int align4k, int PartStyle,
vlog("Disk need to align with 4KB %u\n", (uint32_t)(sectors % 8)); vlog("Disk need to align with 4KB %u\n", (uint32_t)(sectors % 8));
ReservedSector += (uint32_t)(sectors % 8); ReservedSector += (uint32_t)(sectors % 8);
} }
else
{
vdebug("no need to align with 4KB\n");
}
} }
vlog("ReservedSector: %u\n", ReservedSector); vlog("ReservedSector: %u\n", ReservedSector);
//Part1 //Part1
PartStartSector = VTOYIMG_PART_START_SECTOR; PartStartSector = VTOYIMG_PART_START_SECTOR;
PartSectorCount = DiskSectorCount - ReservedSector - VTOYEFI_PART_BYTES / 512 - PartStartSector; PartSectorCount = DiskSectorCount - ReservedSector - VTOYEFI_PART_BYTES / 512 - PartStartSector;
......
...@@ -46,7 +46,7 @@ int unxz(unsigned char *in, int in_size, ...@@ -46,7 +46,7 @@ int unxz(unsigned char *in, int in_size,
int ventoy_read_file_to_buf(const char *FileName, int ExtLen, void **Bufer, int *BufLen); int ventoy_read_file_to_buf(const char *FileName, int ExtLen, void **Bufer, int *BufLen);
const char * ventoy_get_local_version(void); const char * ventoy_get_local_version(void);
int ventoy_fill_gpt(uint64_t size, uint64_t reserve, int align4k, VTOY_GPT_INFO *gpt); int ventoy_fill_gpt(uint64_t size, uint64_t reserve, int align4k, VTOY_GPT_INFO *gpt);
int ventoy_fill_mbr(uint64_t size, uint64_t reserve, int align4k, int PartStyle, MBR_HEAD *pMBR); int ventoy_fill_mbr(uint64_t size, uint64_t reserve, int align4k, MBR_HEAD *pMBR);
#endif /* __VENTOY_UTIL_H__ */ #endif /* __VENTOY_UTIL_H__ */
#!/bin/sh
rm -rf include
rm -rf lib
cd release
gcc -O2 -D_FILE_OFFSET_BITS=64 fat*.c -c
ar -rc libfat_io_64.a *.o
rm -f *.o
gcc -m32 -O2 -D_FILE_OFFSET_BITS=64 fat*.c -c
ar -rc libfat_io_32.a *.o
rm -f *.o
aarch64-linux-gnu-gcc -O2 -D_FILE_OFFSET_BITS=64 fat*.c -c
ar -rc libfat_io_aa64.a *.o
rm -f *.o
cd -
mkdir lib
mkdir include
mv release/*.a lib/
cp -a release/*.h include/
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment