]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - INSTALL/grub/grub.cfg
update
[Ventoy.git] / INSTALL / grub / grub.cfg
index f2ea24f54729a6070af54daa71b0d0407f363f9f..38ab7d4f3b29044f4821f792bdaf4640b0190c9a 100644 (file)
 #************************************************************************************
 
 function ventoy_pause {
-    if [ -n "${vtdebug_flag}" ]; then
-        echo "press Enter to continue ......"
-        read vtTmpPause
-    fi
+    echo "press Enter to continue ......"
+    read vtTmpPause
 }
 
 function ventoy_debug_pause {
@@ -30,29 +28,20 @@ function ventoy_debug_pause {
     fi
 }
 
-function ventoy_cli_console {      
-    if [ "$grub_platform" = "pc" ]; then
-        #terminal_output  vga_text
+function ventoy_cli_console {
+    if [ -z "$vtoy_display_mode" ]; then
+        terminal_output  console
+    elif [ "$vtoy_display_mode" = "GUI" ]; then
         terminal_output  console
-    else
-        if [ "$vtoy_display_mode" != "CLI" ]; then
-            terminal_output  console
-        fi
     fi
 }
 
 function ventoy_gui_console {  
-    if [ "$grub_platform" = "pc" ]; then
-        if [ "$vtoy_display_mode" = "CLI" ]; then
-            terminal_output  console
-        else
-            terminal_output  gfxterm
-        fi
-    else
-        if [ "$vtoy_display_mode" != "CLI" ]; then
-            terminal_output  gfxterm
-        fi
-    fi
+    if [ -z "$vtoy_display_mode" ]; then
+        terminal_output  gfxterm
+    elif [ "$vtoy_display_mode" = "GUI" ]; then
+        terminal_output  gfxterm
+    fi    
 }
 
 function ventoy_power {
@@ -400,8 +389,8 @@ function uefi_linux_menu_func {
             loopback loop $1$2
         fi
         
-        vt_load_cpio  ${vtoy_path}/ventoy.cpio   $2 $1
-
+        vt_load_cpio  ${vtoy_path}/ventoy.cpio   $2 $1 "busybox=$ventoy_busybox_ver"
+        
         vt_linux_clear_initrd
         
         if [ -d (loop)/pmagic ]; then
@@ -501,7 +490,7 @@ function uefi_iso_menu_func {
         unset LoadIsoEfiDriver
     fi
 
-    vt_chosen_img_path chosen_path
+    set chosen_path=$2
     vt_select_auto_install ${chosen_path}
     vt_select_persistence ${chosen_path}
 
@@ -512,8 +501,7 @@ function uefi_iso_menu_func {
         vt_iso9660_nojoliet 0
     fi
 
-    loopback loop ${1}${chosen_path}
-    vt_parse_iso_volume ${1}${chosen_path} vt_system_id vt_volume_id
+    loopback loop ${1}${chosen_path}    
     get_os_type (loop)
     
     if [ -d (loop)/EFI ]; then
@@ -548,10 +536,8 @@ function uefi_iso_menu_func {
 }
 
 function uefi_iso_memdisk {    
-    vt_chosen_img_path chosen_path
-
     echo 'Loading ISO file to memory ...'
-    vt_load_iso_to_mem ${1}${chosen_path} vtoy_iso_buf
+    vt_load_img_memdisk ${1}${2} vtoy_iso_buf
     
     ventoy_cli_console
     chainloader ${vtoy_path}/ventoy_x64.efi memdisk env_param=${env_param} isoefi=${LoadIsoEfiDriver} ${vtdebug_flag} mem:${vtoy_iso_buf_addr}:size:${vtoy_iso_buf_size}
@@ -608,7 +594,7 @@ function legacy_linux_menu_func {
             loopback loop $1$2
         fi
     
-        vt_load_cpio  $vtoy_path/ventoy.cpio  $2 $1
+        vt_load_cpio  $vtoy_path/ventoy.cpio  $2 $1 "busybox=$ventoy_busybox_ver"
 
         vt_linux_clear_initrd
         
@@ -679,7 +665,7 @@ function legacy_iso_menu_func {
         loopback -d loop
     fi
 
-    vt_chosen_img_path chosen_path
+    set chosen_path=$2
     vt_select_auto_install ${chosen_path}
     vt_select_persistence ${chosen_path}
 
@@ -691,7 +677,7 @@ function legacy_iso_menu_func {
     fi
     
     loopback loop ${1}${chosen_path}
-    vt_parse_iso_volume ${1}${chosen_path} vt_system_id vt_volume_id
+    
     get_os_type (loop)
 
     if [ -n "$vtcompat" ]; then
@@ -716,29 +702,80 @@ function legacy_iso_menu_func {
 }
 
 function legacy_iso_memdisk {
-    vt_chosen_img_path chosen_path
 
     linux16   $vtoy_path/memdisk iso raw    
     echo "Loading ISO file to memory ..."
-    initrd16  ${1}${chosen_path}
+    initrd16  ${1}${2}
     boot
 }
 
+
+function iso_endless_os_proc {
+    if [ -d (loop)/ ]; then
+        loopback -d loop
+    fi
+
+    loopback loop ${1}${2}   
+    vt_img_sector ${1}${2}
+
+    vt_load_cpio  $vtoy_path/ventoy.cpio  $2 $1  "busybox=$ventoy_busybox_ver"
+    vt_trailer_cpio $1 $2 noinit
+    
+    ventoy_debug_pause
+
+    vt_set_boot_opt '@kparams' rdinit=/vtoy/vtoy 
+
+    set eosimage=loop
+    set ventoy_bls_bootdev=/boot    
+    set ventoy_loading_tip="Loading files ......"
+    
+    export eosimage    
+    configfile (loop)/endless/grub/grub.cfg
+    
+    unset eosimage
+    unset ventoy_bls_bootdev
+    unset ventoy_loading_tip
+    
+    vt_unset_boot_opt
+}
+
+
+function ventoy_iso_busybox_ver {
+    set ventoy_busybox_ver=32
+    
+    #special process for deepin-live iso
+    if [ "$vt_chosen_size" = "403701760" ]; then
+        if vt_str_begin $vt_chosen_path "/deepin-live"; then
+            set ventoy_busybox_ver=64
+        fi
+    fi
+}
+
 function iso_common_menuentry {
     unset vt_system_id
     unset vt_volume_id
     
+    vt_chosen_img_path vt_chosen_path vt_chosen_size
+    vt_parse_iso_volume ${vtoy_iso_part}${vt_chosen_path} vt_system_id vt_volume_id
+    
+    ventoy_iso_busybox_ver
+    
+    #special process for Endless OS
+    if vt_str_begin $vt_volume_id "Endless-OS"; then
+        iso_endless_os_proc $vtoy_iso_part $vt_chosen_path
+    fi
+
     if [ "$grub_platform" = "pc" ]; then
         if vt_check_mode 0; then
-            legacy_iso_memdisk $vtoy_iso_part
+            legacy_iso_memdisk $vtoy_iso_part $vt_chosen_path
         else
-            legacy_iso_menu_func $vtoy_iso_part
+            legacy_iso_menu_func $vtoy_iso_part $vt_chosen_path
         fi
     else
         if vt_check_mode 0; then
-            uefi_iso_memdisk $vtoy_iso_part 
+            uefi_iso_memdisk $vtoy_iso_part  $vt_chosen_path
         else
-            uefi_iso_menu_func $vtoy_iso_part                
+            uefi_iso_menu_func $vtoy_iso_part  $vt_chosen_path             
         fi
     fi      
 }
@@ -755,8 +792,8 @@ function iso_unsupport_menuentry {
 }
 
 function wim_common_menuentry {
-    vt_chosen_img_path chosen_path
-    vt_wim_chain_data ${vtoy_iso_part}${chosen_path}
+    vt_chosen_img_path vt_chosen_path vt_chosen_size
+    vt_wim_chain_data ${vtoy_iso_part}${vt_chosen_path}
     
     ventoy_debug_pause    
     
@@ -780,10 +817,14 @@ function wim_unsupport_menuentry {
 }
 
 function efi_common_menuentry {
-    vt_chosen_img_path chosen_path
+    vt_chosen_img_path vt_chosen_path vt_chosen_size
+    
+    vt_concat_efi_iso ${vtoy_iso_part}${vt_chosen_path} vtoy_iso_buf
+    
+    ventoy_debug_pause
     
     ventoy_cli_console    
-    chainloader ${vtoy_iso_part}${chosen_path}
+    chainloader ${vtoy_path}/ventoy_x64.efi memdisk env_param=${env_param} isoefi=on ${vtdebug_flag} mem:${vtoy_iso_buf_addr}:size:${vtoy_iso_buf_size}
     boot
     ventoy_gui_console
 }
@@ -793,6 +834,24 @@ function efi_unsupport_menuentry {
 }
 
 
+function ventoy_img_busybox_ver {
+    set ventoy_busybox_ver=32
+    
+    if [ -e (vtimghd,2)/etc/openwrt_release ]; then
+        if vt_file_strstr (vtimghd,2)/etc/openwrt_release x86_64; then
+            set ventoy_busybox_ver=64
+        fi
+    fi    
+}
+
+function img_common_menuentry {
+
+    echo "To be implement"
+}
+
+function img_unsupport_menuentry {
+    common_unsupport_menuentry
+}
 
 #############################################################
 #############################################################
@@ -892,6 +951,18 @@ fi
 
 if [ "$vtoy_display_mode" = "CLI" ]; then
     terminal_output  console
+elif [ "$vtoy_display_mode" = "serial" ]; then
+    if [ -n "$vtoy_serial_param" ]; then
+        serial $vtoy_serial_param
+    fi
+    terminal_input   serial
+    terminal_output  serial
+elif [ "$vtoy_display_mode" = "serial_console" ]; then
+    if [ -n "$vtoy_serial_param" ]; then
+        serial $vtoy_serial_param
+    fi
+    terminal_input   serial console
+    terminal_output  serial console    
 else    
     if [ -n "$vtoy_theme" ]; then
         set theme=$vtoy_theme