diff --git a/IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh b/IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh index 76016874..d1cbdac1 100644 --- a/IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh +++ b/IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh @@ -150,3 +150,19 @@ fi if [ -f $VTOY_PATH/autoinstall ]; then cp -a $VTOY_PATH/hook/rhel7/ventoy-autoexp.sh /lib/dracut/hooks/pre-mount/99-ventoy-autoexp.sh fi + + +#special distro magic +$BUSYBOX_PATH/mkdir -p $VTOY_PATH/distmagic +if $GREP -q SCRE /proc/cmdline; then + echo 1 > $VTOY_PATH/distmagic/SCRE +fi + +if $GREP -qw 'SA[.]1' /proc/cmdline; then +if $GREP -qw 'SA[.]2' /proc/cmdline; then +if $GREP -qw 'rw' /proc/cmdline; then + echo 1 > $VTOY_PATH/distmagic/DELL_PER +fi +fi +fi + diff --git a/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh index 609dc4ca..0ab59475 100644 --- a/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh +++ b/IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh @@ -50,18 +50,9 @@ if is_inotify_ventoy_part $3; then vtScript=$($GREP -m1 'RUN.=' $vtGenRulFile | $AWK -F'RUN.=' '{print $2}' | $SED 's/"\(.*\)".*/\1/') vtlog "vtScript=$vtScript" - DELL_PER='' - if [ -f /etc/services ]; then - if grep -qiw DTK /etc/services; then - if grep -qiw Dell /etc/services; then - DELL_PER='YES' - fi - fi - fi - - if $GREP -q SCRE /proc/cmdline; then + if [ -f $VTOY_PATH/distmagic/SCRE ]; then /sbin/dmsquash-live-root /dev/ventoy - elif [ "$DELL_PER" = "YES" ]; then + elif [ -f $VTOY_PATH/distmagic/DELL_PER ]; then sed 's/liverw=[^ ]*/liverw=ro/g' -i /sbin/dmsquash-live-root sed 's/writable_fsimg=[^ ]*/writable_fsimg=""/g' -i /sbin/dmsquash-live-root /sbin/dmsquash-live-root /dev/ventoy diff --git a/IMG/cpio/ventoy/hook/rhel7/ventoy-make-link.sh b/IMG/cpio/ventoy/hook/rhel7/ventoy-make-link.sh index a6923361..100815a8 100644 --- a/IMG/cpio/ventoy/hook/rhel7/ventoy-make-link.sh +++ b/IMG/cpio/ventoy/hook/rhel7/ventoy-make-link.sh @@ -26,7 +26,9 @@ fi blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/') vtDM=$(ventoy_find_dm_id ${blkdev_num}) -if ! [ -e /dev/mapper/ventoy ]; then +if [ -e /dev/mapper/ventoy ]; then + vtlog "/dev/mapper/ventoy already exist" +else vtlog "link /dev/$vtDM to /dev/mapper/ventoy" ln -s /dev/$vtDM /dev/mapper/ventoy fi @@ -35,7 +37,13 @@ VTLABEL=$($BUSYBOX_PATH/blkid /dev/$vtDM | $SED 's/.*LABEL="\([^"]*\)".*/\1/') vtlog "VTLABEL=$VTLABEL" if [ -n "$VTLABEL" ]; then - if ! [ -e "/dev/disk/by-label/$VTLABEL" ]; then + if ! [ -d /dev/disk/by-label ]; then + mkdir -p /dev/disk/by-label + fi + + if [ -e "/dev/disk/by-label/$VTLABEL" ]; then + vtlog "/dev/disk/by-label/$VTLABEL already exist" + else vtlog "link /dev/$vtDM to /dev/disk/by-label/$VTLABEL" ln -s /dev/$vtDM "/dev/disk/by-label/$VTLABEL" fi diff --git a/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh b/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh index f6d9cb0f..b367895b 100644 --- a/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh +++ b/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh @@ -892,3 +892,17 @@ ventoy_check_umount() { fi done } + +ventoy_wait_dir() { + vtdir=$1 + vtsec=0 + + while [ $vtsec -lt $2 ]; do + if [ -d "$vtdir" ]; then + break + else + $SLEEP 1 + vtsec=$(expr $vtsec + 1) + fi + done +} diff --git a/INSTALL/ventoy/vtoyjump32.exe b/INSTALL/ventoy/vtoyjump32.exe index d6af4ac7..15f3fc17 100644 Binary files a/INSTALL/ventoy/vtoyjump32.exe and b/INSTALL/ventoy/vtoyjump32.exe differ diff --git a/INSTALL/ventoy/vtoyjump64.exe b/INSTALL/ventoy/vtoyjump64.exe index 54421200..d1e63c6f 100644 Binary files a/INSTALL/ventoy/vtoyjump64.exe and b/INSTALL/ventoy/vtoyjump64.exe differ diff --git a/vtoyjump/vtoyjump/vtoyjump.c b/vtoyjump/vtoyjump/vtoyjump.c index e72754dc..178e4354 100644 --- a/vtoyjump/vtoyjump/vtoyjump.c +++ b/vtoyjump/vtoyjump/vtoyjump.c @@ -1073,24 +1073,24 @@ End: return rc; } -static int VentoyRunImdisk(const char *IsoPath, const char *imdiskexe, const char *ExOpt) +static int VentoyRunImdisk(const char *IsoPath, const char *imdiskexe, const char *opt) { CHAR Letter; CHAR Cmdline[512]; WCHAR CmdlineW[512]; PROCESS_INFORMATION Pi; - Log("VentoyRunImdisk <%s> <%s>", IsoPath, imdiskexe); + Log("VentoyRunImdisk <%s> <%s> <%s>", IsoPath, imdiskexe, opt); Letter = GetIMDiskMountLogicalDrive(); - if (ExOpt) + if (opt) { - sprintf_s(Cmdline, sizeof(Cmdline), "%s -a -o ro,%s -f \"%s\" -m %C:", imdiskexe, ExOpt, IsoPath, Letter); + sprintf_s(Cmdline, sizeof(Cmdline), "%s -a -o %s -f \"%s\" -m %C:", imdiskexe, opt, IsoPath, Letter); } else { - sprintf_s(Cmdline, sizeof(Cmdline), "%s -a -o ro -f \"%s\" -m %C:", imdiskexe, IsoPath, Letter); + sprintf_s(Cmdline, sizeof(Cmdline), "%s -a -f \"%s\" -m %C:", imdiskexe, IsoPath, Letter); } Log("mount iso to %C: use imdisk cmd <%s>", Letter, Cmdline); @@ -1135,7 +1135,7 @@ int VentoyMountISOByImdisk(const char *IsoPath, DWORD PhyDrive) if (0 == VentoyCopyImdisk(PhyDrive, ImPath)) { - VentoyRunImdisk(IsoPath, ImPath, NULL); + VentoyRunImdisk(IsoPath, ImPath, "ro"); rc = 0; }