VTOY_DM_PATH=/dev/mapper/ventoy
VTOY_DEBUG_LEVEL=$($BUSYBOX_PATH/hexdump -n 1 -s 450 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param)
VTOY_LINUX_REMOUNT=$($BUSYBOX_PATH/hexdump -n 1 -s 454 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param)
+VTOY_VLNK_BOOT=$($BUSYBOX_PATH/hexdump -n 1 -s 455 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param)
if [ "$VTOY_DEBUG_LEVEL" = "01" ]; then
if [ -e /dev/console ]; then
echo 'Y' > $VTOY_PATH/hook_finish
}
-get_ventoy_disk_name() {
- line=$($VTOY_PATH/tool/vtoydump -f /ventoy/ventoy_os_param)
- if [ $? -eq 0 ]; then
- echo ${line%%#*}
- else
- echo "unknown"
+get_ventoy_disk_name() {
+ if [ "$VTOY_VLNK_BOOT" = "01" ]; then
+ $VTOY_PATH/tool/vtoydump -t /ventoy/ventoy_os_param
+ else
+ line=$($VTOY_PATH/tool/vtoydump -f /ventoy/ventoy_os_param)
+ if [ $? -eq 0 ]; then
+ echo ${line%%#*}
+ else
+ echo "unknown"
+ fi
fi
}
[ -e "${vtpart2}" ]
}
-is_ventoy_disk() {
- if $VTOY_PATH/tool/vtoydump -f $VTOY_PATH/ventoy_os_param -c "$1"; then
- $BUSYBOX_PATH/true
- else
- $BUSYBOX_PATH/false
- fi
-}
-
not_ventoy_disk() {
if echo $1 | $EGREP -q "nvme.*p$|mmc.*p$|nbd.*p$"; then
vtDiskName=${1:0:-1}
vtDiskName=$1
fi
- if $VTOY_PATH/tool/vtoydump -f $VTOY_PATH/ventoy_os_param -c "$vtDiskName"; then
- $BUSYBOX_PATH/false
+ if [ "$VTOY_VLNK_BOOT" = "01" ]; then
+ vtVtoyDisk=$($VTOY_PATH/tool/vtoydump -t $VTOY_PATH/ventoy_os_param)
+ [ "$vtVtoyDisk" != "/dev/$vtDiskName" ]
else
- $BUSYBOX_PATH/true
+ if $VTOY_PATH/tool/vtoydump -f $VTOY_PATH/ventoy_os_param -c "$vtDiskName"; then
+ $BUSYBOX_PATH/false
+ else
+ $BUSYBOX_PATH/true
+ fi
fi
}
ventoy_need_dm_patch() {
if [ "$VTOY_LINUX_REMOUNT" != "01" ]; then
- $BUSYBOX_PATH/false; return
+ if $GREP -q 'VTOY_LINUX_REMOUNT=1' /proc/cmdline; then
+ :
+ else
+ $BUSYBOX_PATH/false; return
+ fi
fi
if $GREP -q 'device-mapper' /proc/devices; then
vtKv=$($BUSYBOX_PATH/uname -r)
- if [ -d /lib/modules/$vtKv/kernel/fs ]; then
+ if [ ! -d /lib/modules/$vtKv ]; then
+ vtlog "No modules directory found"
+ return
+ elif [ -d /lib/modules/$vtKv/kernel/fs ]; then
vtModPath=$($FIND /lib/modules/$vtKv/kernel/fs/ -name "*.ko*" | $HEAD -n1)
else
vtModPath=$($FIND /lib/modules/$vtKv/kernel/ -name "xfs.ko*" | $HEAD -n1)
vtlog "template module is $vtModPath $vtModName"
- if echo $vtModPath | $GREP -q "[.]ko$"; then
+ if [ -z "$vtModPath" ]; then
+ vtlog "No template module found"
+ return
+ elif echo $vtModPath | $GREP -q "[.]ko$"; then
$BUSYBOX_PATH/cp -a $vtModPath $VTOY_PATH/$vtModName
elif echo $vtModPath | $GREP -q "[.]ko[.]xz$"; then
$BUSYBOX_PATH/xzcat $vtModPath > $VTOY_PATH/$vtModName
fi
if [ -e /dev/$vtShortName ]; then
- $VTOY_PATH/tool/vtoydump -f $VTOY_PATH/ventoy_os_param -c $vtShortName
+ if [ "$VTOY_VLNK_BOOT" = "01" ]; then
+ vtOrgDiskName=$($VTOY_PATH/tool/vtoydump -t $VTOY_PATH/ventoy_os_param)
+ [ "$vtOrgDiskName" = "/dev/$vtShortName" ]
+ else
+ $VTOY_PATH/tool/vtoydump -f $VTOY_PATH/ventoy_os_param -c $vtShortName
+ fi
return
fi
fi