]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
support eweOS ISO (#3068)
authorlongpanda <admin@ventoy.net>
Wed, 22 Jan 2025 10:24:09 +0000 (18:24 +0800)
committerlongpanda <admin@ventoy.net>
Wed, 22 Jan 2025 10:24:09 +0000 (18:24 +0800)
IMG/cpio/ventoy/hook/ewe/ventoy-disk.sh [new file with mode: 0644]
IMG/cpio/ventoy/hook/ewe/ventoy-hook.sh [new file with mode: 0644]
IMG/cpio/ventoy/ventoy_chain.sh
INSTALL/grub/grub.cfg

diff --git a/IMG/cpio/ventoy/hook/ewe/ventoy-disk.sh b/IMG/cpio/ventoy/hook/ewe/ventoy-disk.sh
new file mode 100644 (file)
index 0000000..30b3f3a
--- /dev/null
@@ -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 (file)
index 0000000..590415f
--- /dev/null
@@ -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
+
index b97e4afbcc0a9ef6f129e134382c6906ff9e9a93..c0dbf114d46029dbb124717cc5ad0417f7c8759e 100644 (file)
@@ -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"
 }
index daeede5c2e8a7a2e4221f733a8052a59d337d826..62dc445e6e86c6a9d44411601873da789692c3b0 100644 (file)
@@ -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