]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
add support for openEuler
authorlongpanda <admin@ventoy.net>
Sat, 13 Mar 2021 10:55:05 +0000 (18:55 +0800)
committerlongpanda <admin@ventoy.net>
Sat, 13 Mar 2021 10:55:05 +0000 (18:55 +0800)
IMG/cpio/ventoy/hook/openEuler/ventoy-hook.sh [new file with mode: 0644]
IMG/cpio/ventoy/hook/openEuler/ventoy-inotifyd-hook.sh [new file with mode: 0644]
IMG/cpio/ventoy/hook/openEuler/ventoy-inotifyd-start.sh [new file with mode: 0644]
IMG/cpio/ventoy/hook/openEuler/ventoy-make-link.sh [new file with mode: 0644]
IMG/cpio/ventoy/hook/openEuler/ventoy-timeout.sh [new file with mode: 0644]
IMG/cpio/ventoy/ventoy_chain.sh
IMG/cpio/ventoy/ventoy_loop.sh

diff --git a/IMG/cpio/ventoy/hook/openEuler/ventoy-hook.sh b/IMG/cpio/ventoy/hook/openEuler/ventoy-hook.sh
new file mode 100644 (file)
index 0000000..442b6f4
--- /dev/null
@@ -0,0 +1,79 @@
+#!/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
+
+#ventoy_systemd_udevd_work_around
+#ventoy_add_udev_rule "$VTOY_PATH/hook/default/udev_disk_hook.sh %k noreplace"
+
+if [ -f $VTOY_PATH/autoinstall ]; then
+    VTKS="inst.ks=file:$VTOY_PATH/autoinstall"
+else
+    for vtParam in $($CAT /proc/cmdline); do
+        if echo $vtParam | $GREP -q 'inst.ks=hd:LABEL='; then
+            vtRawKs=$(echo $vtParam | $AWK -F: '{print $NF}')
+            VTKS="inst.ks=hd:/dev/dm-0:$vtRawKs"
+            break
+        fi
+        
+        if echo $vtParam | $GREP -q '^ks=.*:/'; then
+            vtRawKs=$(echo $vtParam | $AWK -F: '{print $NF}')
+            VTKS="ks=hd:/dev/dm-0:$vtRawKs"
+            break
+        fi
+    done
+fi
+
+echo "VTKS=$VTKS" >> $VTLOG
+
+if ls $VTOY_PATH | $GREP -q 'ventoy_dud[0-9]'; then
+    for vtDud in $(ls $VTOY_PATH/ventoy_dud*); do
+        vtInstDD="$vtInstDD inst.dd=file:$vtDud"
+    done
+fi
+echo "vtInstDD=$vtInstDD" >> $VTLOG
+
+if $GREP -q 'root=live' /proc/cmdline; then
+    $SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE root=live:/dev/dm-0 $VTKS $vtInstDD#" -i /lib/dracut-lib.sh
+else
+    $SED "s#printf\(.*\)\$CMDLINE#printf\1\$CMDLINE inst.stage2=hd:/dev/dm-0 $VTKS $vtInstDD#" -i /lib/dracut-lib.sh
+fi
+
+ventoy_set_inotify_script  openEuler/ventoy-inotifyd-hook.sh
+
+#Fedora
+if $BUSYBOX_PATH/which dmsquash-live-root > /dev/null; then
+    vtPriority=99
+else
+    vtPriority=01
+fi
+
+$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/openEuler/ventoy-inotifyd-start.sh /lib/dracut/hooks/pre-udev/${vtPriority}-ventoy-inotifyd-start.sh
+$BUSYBOX_PATH/cp -a $VTOY_PATH/hook/openEuler/ventoy-timeout.sh /lib/dracut/hooks/initqueue/timeout/${vtPriority}-ventoy-timeout.sh
+
+if [ -e /sbin/dmsquash-live-root ]; then
+    echo "patch /sbin/dmsquash-live-root ..." >> $VTLOG
+    $SED "1 a $BUSYBOX_PATH/sh $VTOY_PATH/hook/openEuler/ventoy-make-link.sh" -i /sbin/dmsquash-live-root
+fi
+
+# suppress write protected mount warning
+if [ -e /usr/sbin/anaconda-diskroot ]; then
+    $SED  's/^mount $dev $repodir/mount -oro $dev $repodir/' -i /usr/sbin/anaconda-diskroot
+fi
+
diff --git a/IMG/cpio/ventoy/hook/openEuler/ventoy-inotifyd-hook.sh b/IMG/cpio/ventoy/hook/openEuler/ventoy-inotifyd-hook.sh
new file mode 100644 (file)
index 0000000..57012e7
--- /dev/null
@@ -0,0 +1,67 @@
+#!/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
+
+if is_ventoy_hook_finished; then
+    exit 0
+fi
+
+VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
+
+if is_inotify_ventoy_part $3; then
+
+    vtlog "##### INOTIFYD: $2/$3 is created (YES) ..."
+
+    vtGenRulFile='/etc/udev/rules.d/99-live-squash.rules'
+    if [ -e $vtGenRulFile ] && $GREP -q dmsquash $vtGenRulFile; then
+        vtScript=$($GREP -m1 'RUN.=' $vtGenRulFile | $AWK -F'RUN.=' '{print $2}' | $SED 's/"\(.*\)".*/\1/')
+        vtlog "vtScript=$vtScript"
+        $vtScript
+    else
+        vtlog "$vtGenRulFile not exist..."
+    fi
+
+    vtlog "find ventoy partition ..."
+    
+    vtReplaceOpt=noreplace
+    
+    $BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 $vtReplaceOpt
+    
+    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 [ "$vtDM" = "dm-0" ]; then
+        vtlog "This is dm-0, OK ..."
+    else
+        vtlog "####### This is $vtDM ####### this is abnormal ..."
+        ventoy_swap_device /dev/dm-0 /dev/$vtDM
+    fi
+    
+    if [ -e /sbin/anaconda-diskroot ]; then
+        vtlog "set anaconda-diskroot ..."
+        /sbin/anaconda-diskroot /dev/dm-0    
+    fi
+    
+    set_ventoy_hook_finish
+else
+    vtlog "##### INOTIFYD: $2/$3 is created (NO) ..."
+fi
+
+PATH=$VTPATH_OLD
diff --git a/IMG/cpio/ventoy/hook/openEuler/ventoy-inotifyd-start.sh b/IMG/cpio/ventoy/hook/openEuler/ventoy-inotifyd-start.sh
new file mode 100644 (file)
index 0000000..6be8155
--- /dev/null
@@ -0,0 +1,31 @@
+#!/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
+
+vtHook=$($CAT $VTOY_PATH/inotifyd-hook-script.txt)
+
+vtdisk=$(get_ventoy_disk_name)
+if [ "$vtdisk" = "unknown" ]; then
+    vtlog "... start inotifyd listen $vtHook ..."
+    $BUSYBOX_PATH/nohup $VTOY_PATH/tool/inotifyd $vtHook  /dev:n  2>&-  & 
+else
+    vtlog "... $vtdisk already exist ..."
+    $BUSYBOX_PATH/sh $vtHook n /dev "${vtdisk#/dev/}2"
+fi
diff --git a/IMG/cpio/ventoy/hook/openEuler/ventoy-make-link.sh b/IMG/cpio/ventoy/hook/openEuler/ventoy-make-link.sh
new file mode 100644 (file)
index 0000000..22a3dd4
--- /dev/null
@@ -0,0 +1,35 @@
+#!/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
+
+if ! [ -e /dev/mapper/ventoy ]; then
+    vtlog "link to /dev/mapper/ventoy"
+    ln -s /dev/dm-0 /dev/mapper/ventoy
+fi
+
+VTLABEL=$($BUSYBOX_PATH/blkid /dev/dm-0 | $SED 's/.*LABEL="\([^"]*\)".*/\1/')
+vtlog "VTLABEL=$VTLABEL"
+
+if [ -n "$VTLABEL" ]; then
+    if ! [ -e "/dev/disk/by-label/$VTLABEL" ]; then
+        vtlog "link to /dev/disk/by-label/$VTLABEL"
+        ln -s /dev/dm-0 "/dev/disk/by-label/$VTLABEL"
+    fi
+fi
diff --git a/IMG/cpio/ventoy/hook/openEuler/ventoy-timeout.sh b/IMG/cpio/ventoy/hook/openEuler/ventoy-timeout.sh
new file mode 100644 (file)
index 0000000..87ece3b
--- /dev/null
@@ -0,0 +1,34 @@
+#!/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 $* ..."
+
+VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
+
+blkdev_num=$(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 /sbin/anaconda-diskroot ]; then
+    vtlog "set anaconda-diskroot ..."
+    /sbin/anaconda-diskroot /dev/dm-0    
+fi
+
+PATH=$VTPATH_OLD
index 7390832671f48eb3feb73fa1405aadb9afd8d1f0..ccd7e3d0f6b4b9481670f71df3ae9bc8ac4754e9 100644 (file)
@@ -151,6 +151,8 @@ ventoy_get_os_type() {
             echo 'debian'; return
         elif $GREP -q 'Solus' /etc/os-release; then
             echo 'rhel7'; return
+        elif $GREP -q 'openEuler' /etc/os-release; then
+            echo 'openEuler'; return
         fi
     fi
     
@@ -320,6 +322,10 @@ ventoy_get_os_type() {
         fi
     fi
     
+    if [ -f /etc/openEuler-release ]; then
+        echo "openEuler"; return
+    fi
+    
     echo "default"
 }
 
index 2094a49c63dd1b910546445c693b363acd62450a..341ea84b10d09bc880994d37bf397258f7298db1 100644 (file)
@@ -196,6 +196,8 @@ ventoy_get_os_type() {
             echo 'debian'; return
         elif $GREP -q 'Solus' /etc/os-release; then
             echo 'rhel7'; return
+        elif $GREP -q 'openEuler' /etc/os-release; then
+            echo 'openEuler'; return
         fi
     fi
     
@@ -360,9 +362,15 @@ ventoy_get_os_type() {
     if [ -f /DISTRO_SPECS ]; then
         if $GREP -q '[Pp]uppy' /DISTRO_SPECS; then
             echo 'debian'; return
+        elif $GREP -q 'veket' /DISTRO_SPECS; then
+            echo 'debian'; return
         fi
     fi
     
+    if [ -f /etc/openEuler-release ]; then
+        echo "openEuler"; return
+    fi
+    
     echo "default"
 }