From f62bd1be144200fcc4bb2416ef12220e4f8ab178 Mon Sep 17 00:00:00 2001
From: longpanda <admin@ventoy.net>
Date: Wed, 22 Jan 2025 18:24:09 +0800
Subject: [PATCH] support eweOS ISO (#3068)

---
 IMG/cpio/ventoy/hook/ewe/ventoy-disk.sh | 75 +++++++++++++++++++++++++
 IMG/cpio/ventoy/hook/ewe/ventoy-hook.sh | 25 +++++++++
 IMG/cpio/ventoy/ventoy_chain.sh         |  6 ++
 INSTALL/grub/grub.cfg                   |  4 +-
 4 files changed, 109 insertions(+), 1 deletion(-)
 create mode 100644 IMG/cpio/ventoy/hook/ewe/ventoy-disk.sh
 create mode 100644 IMG/cpio/ventoy/hook/ewe/ventoy-hook.sh

diff --git a/IMG/cpio/ventoy/hook/ewe/ventoy-disk.sh b/IMG/cpio/ventoy/hook/ewe/ventoy-disk.sh
new file mode 100644
index 00000000..30b3f3af
--- /dev/null
+++ b/IMG/cpio/ventoy/hook/ewe/ventoy-disk.sh
@@ -0,0 +1,75 @@
+#!/ventoy/busybox/sh
+#************************************************************************************
+# Copyright (c) 2020, longpanda <admin@ventoy.net>
+# 
+# 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 <http://www.gnu.org/licenses/>.
+# 
+#************************************************************************************
+
+. /ventoy/hook/ventoy-hook-lib.sh
+
+vtlog "######### $0 $* ############"
+
+if is_ventoy_hook_finished; then
+    exit 0
+fi
+
+wait_for_usb_disk_ready
+
+vtdiskname=$(get_ventoy_disk_name)
+if [ "$vtdiskname" = "unknown" ]; then
+    vtlog "ventoy disk not found"
+    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/')
+vtDM=$(ventoy_find_dm_id ${blkdev_num})
+vtlog "blkdev_num=$blkdev_num vtDM=$vtDM ..."
+
+while [ -n "Y" ]; do
+    if [ -b /dev/$vtDM ]; then
+        break
+    else
+        sleep 0.3
+    fi
+done
+
+if [ -n "$1" ]; then
+    vtlog "ln -s /dev/$vtDM $1"
+    
+    if [ -e "$1" ]; then
+        vtlog "$1 already exist"
+    else
+        ln -s /dev/$vtDM "$1"
+    fi
+else
+    vtLABEL=$($BUSYBOX_PATH/blkid /dev/$vtDM | $SED 's/.*LABEL="\([^"]*\)".*/\1/')
+    vtlog "vtLABEL is $vtLABEL"
+    
+    if [ -z "$vtLABEL" ]; then
+        vtLABEL=$($SED "s/.*label=\([^ ]*\)/\1/" /proc/cmdline)
+        vtlog "vtLABEL is $vtLABEL from cmdline"
+    fi
+    
+    if [ -e "/dev/disk/by-label/$vtLABEL" ]; then
+        vtlog "$1 already exist"
+    else
+        ln -s /dev/$vtDM "/dev/disk/by-label/$vtLABEL"
+    fi
+fi 
+
+# OK finish
+set_ventoy_hook_finish
diff --git a/IMG/cpio/ventoy/hook/ewe/ventoy-hook.sh b/IMG/cpio/ventoy/hook/ewe/ventoy-hook.sh
new file mode 100644
index 00000000..590415f7
--- /dev/null
+++ b/IMG/cpio/ventoy/hook/ewe/ventoy-hook.sh
@@ -0,0 +1,25 @@
+#!/ventoy/busybox/sh
+#************************************************************************************
+# Copyright (c) 2020, longpanda <admin@ventoy.net>
+# 
+# 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 <http://www.gnu.org/licenses/>.
+# 
+#************************************************************************************
+
+. $VTOY_PATH/hook/ventoy-os-lib.sh
+
+echo "hook live.init"  >> $VTLOG
+
+$SED "1i $BUSYBOX_PATH/sh $VTOY_PATH/hook/ewe/ventoy-disk.sh" -i /lib/tinyramfs/hook.d/live/live.init
+
diff --git a/IMG/cpio/ventoy/ventoy_chain.sh b/IMG/cpio/ventoy/ventoy_chain.sh
index b97e4afb..c0dbf114 100644
--- a/IMG/cpio/ventoy/ventoy_chain.sh
+++ b/IMG/cpio/ventoy/ventoy_chain.sh
@@ -384,6 +384,12 @@ ventoy_get_os_type() {
         fi
     fi
     
+    if [ -f /etc/tinyramfs/config ]; then
+        if $GREP -q 'EWE_ISO' /etc/tinyramfs/config; then
+            echo "ewe"; return
+        fi
+    fi
+    
     
     echo "default"
 }
diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg
index daeede5c..62dc445e 100644
--- a/INSTALL/grub/grub.cfg
+++ b/INSTALL/grub/grub.cfg
@@ -403,10 +403,12 @@ function distro_specify_initrd_file_phase2 {
         vt_linux_specify_initrd_file /images/pxeboot/initrd.img
     elif [ -f (loop)/live/initrd ]; then
         vt_linux_specify_initrd_file /live/initrd
-
+    elif [ -f (loop)/initramfs-linux.img ]; then
+        vt_linux_specify_initrd_file /initramfs-linux.img
     fi
 }
 
+
 function ventoy_get_ghostbsd_ver {
     # fallback to parse version from elf /boot/kernel/kernel
     set vt_freebsd_ver=xx