diff --git a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/VentoyProtocol.c b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/VentoyProtocol.c index 8afbd9a1..ed595b9f 100644 --- a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/VentoyProtocol.c +++ b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/VentoyProtocol.c @@ -167,7 +167,7 @@ STATIC EFI_STATUS EFIAPI ventoy_read_iso_sector MapLba, secRead * 2048, pCurBuf); if (EFI_ERROR(Status)) { - debug("Raw disk read block failed %r", Status); + debug("Raw disk read block failed %r LBA:%lu Count:%u", Status, MapLba, secRead); return Status; } diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h index 169c56e9..27eb7fd7 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h @@ -225,6 +225,7 @@ void ventoy_debug(const char *fmt, ...); #define FLAG_HEADER_COMPRESS_RESERVED 0x00010000 #define FLAG_HEADER_COMPRESS_XPRESS 0x00020000 #define FLAG_HEADER_COMPRESS_LZX 0x00040000 +#define FLAG_HEADER_COMPRESS_LZMS 0x00080000 #define RESHDR_FLAG_FREE 0x01 #define RESHDR_FLAG_METADATA 0x02 diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c index 1100fd38..d756afcb 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c @@ -811,9 +811,9 @@ static int ventoy_wimdows_locate_wim(const char *disk, wim_patch *patch) return 1; } - if (head->flags & FLAG_HEADER_COMPRESS_XPRESS) + if ((head->flags & FLAG_HEADER_COMPRESS_XPRESS) || (head->flags & FLAG_HEADER_COMPRESS_LZMS)) { - debug("Xpress compress is not supported 0x%x\n", head->flags); + debug("Xpress or LZMS compress is not supported 0x%x\n", head->flags); grub_file_close(file); return 1; } diff --git a/IMG/cpio/ventoy/hook/debian/default-hook.sh b/IMG/cpio/ventoy/hook/debian/default-hook.sh index bd2dd1ea..234c6766 100644 --- a/IMG/cpio/ventoy/hook/debian/default-hook.sh +++ b/IMG/cpio/ventoy/hook/debian/default-hook.sh @@ -17,6 +17,8 @@ # #************************************************************************************ +CD_DETECT="/var/lib/dpkg/info/cdrom-detect.postinst" + if [ -e /init ] && $GREP -q '^mountroot$' /init; then echo "Here before mountroot ..." >> $VTLOG @@ -29,7 +31,15 @@ if [ -e /init ] && $GREP -q '^mountroot$' /init; then $SED "s#^ *LIVEMEDIA=.*#LIVEMEDIA=/dev/mapper/ventoy#" -i /scripts/casper fi fi - +elif [ -e "$CD_DETECT" ]; then + echo "$CD_DETECT exist, now add hook in it..." >> $VTLOG + + $SED "1 a $BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/disk_mount_hook.sh" -i "$CD_DETECT" + TITLE_LINE=$($GREP -m1 '^hw-detect.*detect_progress_title' "$CD_DETECT") + if [ $? -eq 0 ]; then + echo "add $TITLE_LINE for hook" >> $VTLOG + $SED "1 a$TITLE_LINE" -i "$CD_DETECT" + fi elif [ -e /init ] && $GREP -q '/start-udev$' /init; then echo "Here use notify ..." >> $VTLOG diff --git a/IMG/cpio/ventoy/hook/debian/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/debian/ventoy-inotifyd-hook.sh index 53916c6a..e1547225 100644 --- a/IMG/cpio/ventoy/hook/debian/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/debian/ventoy-inotifyd-hook.sh @@ -23,13 +23,15 @@ if is_ventoy_hook_finished; then exit 0 fi -vtlog "##### INOTIFYD: $2/$3 is created ..." VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH if is_inotify_ventoy_part $3; then + vtlog "##### INOTIFYD: $2/$3 is created (YES) ..." vtlog "find ventoy partition $3 ..." $BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/udev_disk_hook.sh "$3" +else + vtlog "##### INOTIFYD: $2/$3 is created (NO)..." fi PATH=$VTPATH_OLD diff --git a/IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-hook.sh index ff52bbb0..76009e86 100644 --- a/IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-hook.sh @@ -23,11 +23,11 @@ if is_ventoy_hook_finished; then exit 0 fi -vtlog "##### INOTIFYD: $2/$3 is created ..." - VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH if is_inotify_ventoy_part $3; then + vtlog "##### INOTIFYD: $2/$3 is created (YES)..." + vtlog "find ventoy partition $3 ..." $BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 noreplace @@ -42,6 +42,8 @@ if is_inotify_ventoy_part $3; then # fi set_ventoy_hook_finish +else + vtlog "##### INOTIFYD: $2/$3 is created (NO)..." fi PATH=$VTPATH_OLD diff --git a/IMG/cpio/ventoy/hook/mageia/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/mageia/ventoy-inotifyd-hook.sh index bc604ffd..226cbcad 100644 --- a/IMG/cpio/ventoy/hook/mageia/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/mageia/ventoy-inotifyd-hook.sh @@ -23,12 +23,11 @@ if is_ventoy_hook_finished; then exit 0 fi -vtlog "##### INOTIFYD: $2/$3 is created ..." - VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH if is_inotify_ventoy_part $3; then - + vtlog "##### INOTIFYD: $2/$3 is created (YES) ..." + vtlog "find ventoy partition ..." $BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 noreplace @@ -64,6 +63,8 @@ if is_inotify_ventoy_part $3; then fi set_ventoy_hook_finish +else + vtlog "##### INOTIFYD: $2/$3 is created (NO) ..." fi PATH=$VTPATH_OLD diff --git a/IMG/cpio/ventoy/hook/manjaro/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/manjaro/ventoy-inotifyd-hook.sh index 60cff43a..5f2d45cb 100644 --- a/IMG/cpio/ventoy/hook/manjaro/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/manjaro/ventoy-inotifyd-hook.sh @@ -23,11 +23,10 @@ if is_ventoy_hook_finished; then exit 0 fi -vtlog "##### INOTIFYD: $2/$3 is created ..." - VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH if is_inotify_ventoy_part $3; then + vtlog "##### INOTIFYD: $2/$3 is created (YES) ..." vtlog "find ventoy partition $3 ..." $BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh "$3" @@ -41,6 +40,8 @@ if is_inotify_ventoy_part $3; then mkdir -p /dev/disk/by-label fi $BUSYBOX_PATH/cp -a /dev/$vtDM /dev/disk/by-label/$vtLABEL +else + vtlog "##### INOTIFYD: $2/$3 is created (NO) ..." fi PATH=$VTPATH_OLD diff --git a/IMG/cpio/ventoy/hook/pmagic/disk-hook.sh b/IMG/cpio/ventoy/hook/pmagic/disk-hook.sh new file mode 100644 index 00000000..3e46fbfd --- /dev/null +++ b/IMG/cpio/ventoy/hook/pmagic/disk-hook.sh @@ -0,0 +1,47 @@ +#!/ventoy/busybox/sh +#************************************************************************************ +# Copyright (c) 2020, longpanda +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +#************************************************************************************ + +. /ventoy/hook/ventoy-hook-lib.sh + +if is_ventoy_hook_finished; then + exit 0 +fi + +vtlog "####### $0 $* ########" + +VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH + +wait_for_usb_disk_ready + +vtdiskname=$(get_ventoy_disk_name) +if [ "$vtdiskname" = "unknown" ]; then + vtlog "ventoy disk not found" + PATH=$VTPATH_OLD + exit 0 +fi + +ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace" + +blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1 \2/') +mknod -m 0666 /dev/ventoy b $blkdev_num + + +PATH=$VTPATH_OLD + +set_ventoy_hook_finish diff --git a/IMG/cpio/ventoy/hook/pmagic/udev_disk_hook.sh b/IMG/cpio/ventoy/hook/pmagic/udev_disk_hook.sh new file mode 100644 index 00000000..93e0548e --- /dev/null +++ b/IMG/cpio/ventoy/hook/pmagic/udev_disk_hook.sh @@ -0,0 +1,32 @@ +#!/ventoy/busybox/sh +#************************************************************************************ +# Copyright (c) 2020, longpanda +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +#************************************************************************************ + +. /ventoy/hook/ventoy-hook-lib.sh + +if is_ventoy_hook_finished || not_ventoy_disk "${1:0:-1}"; then + exit 0 +fi + +ventoy_udev_disk_common_hook $* "noreplace" +blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1 \2/') +mknod -m 0666 /dev/ventoy b $blkdev_num + +# OK finish +set_ventoy_hook_finish + diff --git a/IMG/cpio/ventoy/hook/pmagic/ventoy-hook.sh b/IMG/cpio/ventoy/hook/pmagic/ventoy-hook.sh new file mode 100644 index 00000000..d4768875 --- /dev/null +++ b/IMG/cpio/ventoy/hook/pmagic/ventoy-hook.sh @@ -0,0 +1,31 @@ +#!/ventoy/busybox/sh +#************************************************************************************ +# Copyright (c) 2020, longpanda +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +#************************************************************************************ + +. $VTOY_PATH/hook/ventoy-os-lib.sh + +if $GREP -q 'Searching *for *PMAGIC' /init; then + echo "Find Searching PMAGIC" >> $VTLOG + $SED "/Searching *for *PMAGIC/a\ root=/dev/ventoy" -i /init + $SED "/Searching *for *PMAGIC/a\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/pmagic/disk-hook.sh" -i /init +else + echo "Use default..." >> $VTLOG + $SED "s#^root=.*cmdline.*#root=/dev/ventoy#g'" -i /init + ventoy_systemd_udevd_work_around + ventoy_add_udev_rule "$VTOY_PATH/hook/pmagic/udev_disk_hook.sh %k" +fi diff --git a/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh index a565098b..a1431d07 100644 --- a/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh @@ -23,12 +23,12 @@ if is_ventoy_hook_finished; then exit 0 fi -vtlog "##### INOTIFYD: $2/$3 is created ..." - VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH if is_inotify_ventoy_part $3; then + vtlog "##### INOTIFYD: $2/$3 is created (YES) ..." + vtGenRulFile='/etc/udev/rules.d/99-live-squash.rules' if [ -e $vtGenRulFile ] && $GREP -q dmsquash $vtGenRulFile; then vtScript=$($GREP -m1 'RUN.=' $vtGenRulFile | $AWK -F'RUN.=' '{print $2}' | $SED 's/"\(.*\)".*/\1/') @@ -57,6 +57,8 @@ if is_inotify_ventoy_part $3; then fi set_ventoy_hook_finish +else + vtlog "##### INOTIFYD: $2/$3 is created (NO) ..." fi PATH=$VTPATH_OLD diff --git a/IMG/cpio/ventoy/ventoy.sh b/IMG/cpio/ventoy/ventoy.sh index 640b08a9..af1f2dfe 100644 --- a/IMG/cpio/ventoy/ventoy.sh +++ b/IMG/cpio/ventoy/ventoy.sh @@ -196,6 +196,10 @@ ventoy_get_os_type() { echo 'adelie'; return fi + if $GREP -q 'pmagic' /proc/version; then + echo 'pmagic'; return + fi + echo "default" } diff --git a/INSTALL/tool/VentoyWorker.sh b/INSTALL/tool/VentoyWorker.sh index 2fe07e6a..1f79df3f 100644 --- a/INSTALL/tool/VentoyWorker.sh +++ b/INSTALL/tool/VentoyWorker.sh @@ -6,15 +6,14 @@ print_usage() { echo 'Usage: Ventoy2Disk.sh CMD [ OPTION ] /dev/sdX' echo ' CMD:' echo ' -i install ventoy to sdX (fail if disk already installed with ventoy)' - echo ' -u update ventoy in sdX' echo ' -I force install ventoy to sdX (no matter installed or not)' + echo ' -u update ventoy in sdX' echo '' echo ' OPTION: (optional)' echo ' -r SIZE_MB preserve some space at the bottom of the disk (only for install)' echo ' -s enable secure boot support (default is disabled)' echo ' -g use GPT partition style, default is MBR (only for install)' echo '' - } RESERVE_SIZE_MB=0 diff --git a/Ventoy2Disk/Ventoy2Disk/Res/refresh.ico b/Ventoy2Disk/Ventoy2Disk/Res/refresh.ico new file mode 100644 index 00000000..c2bc3388 Binary files /dev/null and b/Ventoy2Disk/Ventoy2Disk/Res/refresh.ico differ