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
+
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
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
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
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
+}
return rc;\r
}\r
\r
-static int VentoyRunImdisk(const char *IsoPath, const char *imdiskexe, const char *ExOpt)\r
+static int VentoyRunImdisk(const char *IsoPath, const char *imdiskexe, const char *opt)\r
{\r
CHAR Letter;\r
CHAR Cmdline[512];\r
WCHAR CmdlineW[512];\r
PROCESS_INFORMATION Pi;\r
\r
- Log("VentoyRunImdisk <%s> <%s>", IsoPath, imdiskexe);\r
+ Log("VentoyRunImdisk <%s> <%s> <%s>", IsoPath, imdiskexe, opt);\r
\r
Letter = GetIMDiskMountLogicalDrive();\r
\r
- if (ExOpt)\r
+ if (opt)\r
{\r
- sprintf_s(Cmdline, sizeof(Cmdline), "%s -a -o ro,%s -f \"%s\" -m %C:", imdiskexe, ExOpt, IsoPath, Letter);\r
+ sprintf_s(Cmdline, sizeof(Cmdline), "%s -a -o %s -f \"%s\" -m %C:", imdiskexe, opt, IsoPath, Letter);\r
}\r
else\r
{\r
- sprintf_s(Cmdline, sizeof(Cmdline), "%s -a -o ro -f \"%s\" -m %C:", imdiskexe, IsoPath, Letter);\r
+ sprintf_s(Cmdline, sizeof(Cmdline), "%s -a -f \"%s\" -m %C:", imdiskexe, IsoPath, Letter);\r
}\r
\r
Log("mount iso to %C: use imdisk cmd <%s>", Letter, Cmdline);\r
\r
if (0 == VentoyCopyImdisk(PhyDrive, ImPath))\r
{\r
- VentoyRunImdisk(IsoPath, ImPath, NULL);\r
+ VentoyRunImdisk(IsoPath, ImPath, "ro");\r
rc = 0;\r
}\r
\r