X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/be50ea69aaf2a18b9801c04efea19825d7f34c44..b9892660b5b5467d17fe6a690b16ea1194fd9f27:/IMG/cpio/ventoy/ventoy_chain.sh diff --git a/IMG/cpio/ventoy/ventoy_chain.sh b/IMG/cpio/ventoy/ventoy_chain.sh index 2c52e60..d63a132 100644 --- a/IMG/cpio/ventoy/ventoy_chain.sh +++ b/IMG/cpio/ventoy/ventoy_chain.sh @@ -37,7 +37,6 @@ for i in $vtcmdline; do fi done - #################################################################### # # # Step 2 : Do OS specific hook # @@ -47,12 +46,45 @@ ventoy_get_os_type() { echo "kernel version" >> $VTLOG $CAT /proc/version >> $VTLOG + if [ -d /twres ]; then + if $GREP -q 'Phoenix' /init; then + echo 'phoenixos'; return + fi + fi + + # Parted Magic + if [ -d /pmagic ]; then + echo 'pmagic'; return + fi + + # PrimeOS : + if $GREP -q 'PrimeOS' /proc/version; then + echo 'primeos'; return + + # Debian : + elif $GREP -q '[Dd]ebian' /proc/version; then + echo 'debian'; return + + # Ubuntu : do the same process with debian + elif $GREP -q '[Uu]buntu' /proc/version; then + echo 'debian'; return + + # Deepin : + elif $GREP -q '[Dd]eepin' /proc/version; then + echo 'deepin'; return + # rhel5/CentOS5 and all other distributions based on them - if $GREP -q 'el5' /proc/version; then + elif $GREP -q 'el5' /proc/version; then echo 'rhel5'; return # rhel6/CentOS6 and all other distributions based on them elif $GREP -q 'el6' /proc/version; then + if [ -f /sbin/detectcd ]; then + if $GREP -q -i 'LENOVO-EasyStartup' /sbin/detectcd; then + echo 'easystartup'; return + fi + fi + echo 'rhel6'; return # rhel7/CentOS7/rhel8/CentOS8 and all other distributions based on them @@ -66,19 +98,10 @@ ventoy_get_os_type() { # Fedora : do the same process with rhel7 elif $GREP -q '\.fc[0-9][0-9]\.' /proc/version; then echo 'rhel7'; return - - # Debian : - elif $GREP -q '[Dd]ebian' /proc/version; then - echo 'debian'; return - - # Ubuntu : do the same process with debian - elif $GREP -q '[Uu]buntu' /proc/version; then - echo 'debian'; return - - # Deepin : do the same process with debian - elif $GREP -q '[Dd]eepin' /proc/version; then - echo 'debian'; return - + + elif $GREP -q 'euleros' /proc/version; then + echo 'rhel7'; return + # SUSE elif $GREP -q 'SUSE' /proc/version; then echo 'suse'; return @@ -93,6 +116,10 @@ ventoy_get_os_type() { # gentoo elif $EGREP -q '[Gg]entoo' /proc/version; then + if $GREP -q 'daphile' /proc/version; then + echo 'daphile'; return + fi + echo 'gentoo'; return # TinyCore @@ -119,10 +146,14 @@ ventoy_get_os_type() { elif $GREP -q 'Alpine' /proc/version; then echo 'alpine'; return + elif $GREP -i -q 'PhoenixOS' /proc/version; then + echo 'phoenixos'; return + # NixOS elif $GREP -i -q 'NixOS' /proc/version; then echo 'nixos'; return + fi if [ -e /lib/debian-installer ]; then @@ -138,6 +169,14 @@ 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 + elif $GREP -q 'fuyu' /etc/os-release; then + echo 'openEuler'; return + elif $GREP -q 'deepin' /etc/os-release; then + echo 'deepin'; return + elif $GREP -q 'chinauos' /etc/os-release; then + echo 'deepin'; return fi fi @@ -195,12 +234,12 @@ ventoy_get_os_type() { echo 'android'; return fi - if $GREP -q 'adelielinux' /proc/version; then - echo 'adelie'; return + if $GREP -q 'android.google' /proc/version; then + echo 'android'; return fi - if $GREP -q 'pmagic' /proc/version; then - echo 'pmagic'; return + if $GREP -q 'adelielinux' /proc/version; then + echo 'adelie'; return fi if $GREP -q 'CDlinux' /proc/cmdline; then @@ -227,6 +266,132 @@ ventoy_get_os_type() { echo 'vine'; return fi + if $GREP -q 'hyperbola' /proc/cmdline; then + echo 'hyperbola'; return + fi + + if $GREP -q 'CRUX' /proc/version; then + echo 'crux'; return + fi + + if [ -f /init ]; then + if $GREP -q 'AryaLinux' /init; then + echo 'aryalinux'; return + elif $GREP -q 'Dragora' /init; then + echo 'dragora'; return + + fi + fi + + if $GREP -q 'slackware' /proc/version; then + echo 'slackware'; return + fi + + if $BUSYBOX_PATH/hostname | $GREP -q 'smoothwall'; then + echo 'smoothwall'; return + fi + + if $GREP -q 'photon' /proc/version; then + echo 'photon'; return + fi + + if $GREP -q 'ploplinux' /proc/version; then + echo 'ploplinux'; return + fi + + if $GREP -q 'lunar' /proc/version; then + echo 'lunar'; return + fi + + if $GREP -q 'SMGL-' /proc/version; then + echo 'smgl'; return + fi + + if $GREP -q 'rancher' /proc/version; then + echo 'rancher'; return + fi + + + if [ -e /init ]; then + if $GREP -q -m1 'T2 SDE' /init; then + echo 't2'; return + fi + fi + + if $GREP -q 'wifislax' /proc/version; then + echo 'wifislax'; return + fi + + if $GREP -q 'pisilinux' /proc/version; then + echo 'pisilinux'; return + fi + + if $GREP -q 'blackPanther' /proc/version; then + echo 'blackPanther'; return + fi + + if $GREP -q 'primeos' /proc/version; then + echo 'primeos'; return + fi + + if $GREP -q 'austrumi' /proc/version; then + echo 'austrumi'; return + fi + + 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 + + + #special arch based iso file check + if [ -f /init ]; then + if $GREP -q 'mount_handler' /init; then + if [ -d /hooks ]; then + if $BUSYBOX_PATH/ls -1 /hooks/ | $GREP -q '.*iso$'; then + echo "arch"; return + fi + elif [ -d /hook ]; then + if $BUSYBOX_PATH/ls -1 /hook/ | $GREP -q '.*iso$'; then + echo "arch"; return + fi + fi + fi + fi + + + #Kylin V10 Server + if [ -f /usr/sbin/dhclient ]; then + if $BUSYBOX_PATH/strings /usr/sbin/dhclient | $GREP -i -q -m1 openeuler; then + echo 'openEuler'; return + fi + fi + + if $GREP -q 'chimera' /proc/version; then + echo 'chimera'; return + fi + + + if $GREP -q '4.19.' /proc/version; then + if [ -d /lib/dracut/hooks ]; then + echo 'openEuler'; return + fi + fi + + if [ -f /etc/tinyramfs/config ]; then + if $GREP -q 'EWE_ISO' /etc/tinyramfs/config; then + echo "ewe"; return + fi + fi + + echo "default" } @@ -237,9 +402,36 @@ if [ -e "$VTOY_PATH/hook/$VTOS/ventoy-hook.sh" ]; then fi + +if $GREP -q -i Untangle /proc/version; then + for vtPara in $($CAT /proc/cmdline); do + vtItemkey=$(echo $vtPara | $AWK -F= '{print $1}') + vtItemVal=$(echo $vtPara | $AWK -F= '{print $2}') + if $GREP -q -m1 "^$vtItemkey\$" $VTOY_PATH/hook/default/export.list; then + vtEnvExport="$vtEnvExport $vtItemkey=$vtItemVal" + fi + done + + echo "================ env export ================" >> $VTLOG + echo $vtEnvExport >> $VTLOG + echo "============================================" >> $VTLOG +fi + + + +#################################################################### +# # +# Step 3 : Run LiveInjection Hook # +# # +#################################################################### +if [ -f "/live_injection_7ed136ec_7a61_4b54_adc3_ae494d5106ea/hook.sh" ]; then + $BUSYBOX_PATH/sh "/live_injection_7ed136ec_7a61_4b54_adc3_ae494d5106ea/hook.sh" $VTOS +fi + + #################################################################### # # -# Step 3 : Check for debug break # +# Step 4 : Check for debug break # # # #################################################################### if [ "$VTOY_BREAK_LEVEL" = "03" ] || [ "$VTOY_BREAK_LEVEL" = "13" ]; then @@ -256,7 +448,7 @@ fi #################################################################### # # -# Step 4 : Hand over to real init # +# Step 5 : Hand over to real init # # # #################################################################### $BUSYBOX_PATH/umount /proc @@ -271,7 +463,7 @@ fi cd / -unset VTLOG FIND GREP EGREP CAT AWK SED SLEEP HEAD +unset VTLOG FIND GREP EGREP CAT AWK SED SLEEP HEAD vtcmdline for vtinit in $user_rdinit /init /sbin/init /linuxrc; do if [ -d /ventoy_rdroot ]; then @@ -285,7 +477,12 @@ for vtinit in $user_rdinit /init /sbin/init /linuxrc; do if [ -f "$VTOY_PATH/hook/$VTOS/ventoy-before-init.sh" ]; then $BUSYBOX_PATH/sh "$VTOY_PATH/hook/$VTOS/ventoy-before-init.sh" fi - exec "$vtinit" + + if [ -z "$vtEnvExport" ]; then + exec "$vtinit" + else + exec env $vtEnvExport "$vtinit" + fi fi fi done