]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - INSTALL/grub/grub.cfg
update for new release
[Ventoy.git] / INSTALL / grub / grub.cfg
index 33789ac9b5433911948a64a1346290ce70d5e1d8..a4e81ce8d77d7a6bc247265a0bb88c6364a68bb4 100644 (file)
@@ -173,14 +173,28 @@ function distro_specify_initrd_file {
         vt_linux_specify_initrd_file /pmagic/initrd.img
     elif [ -e (loop)/boot/initrd.xz ]; then
         vt_linux_specify_initrd_file /boot/initrd.xz
+    elif [ -e (loop)/boot/initrd.gz ]; then
+        vt_linux_specify_initrd_file /boot/initrd.gz
     elif [ -f (loop)/boot/initrd ]; then
         vt_linux_specify_initrd_file /boot/initrd
     elif [ -f (loop)/boot/x86_64/loader/initrd ]; then
         vt_linux_specify_initrd_file /boot/x86_64/loader/initrd
     elif [ -f (loop)/boot/initramfs-x86_64.img ]; then
         vt_linux_specify_initrd_file /boot/initramfs-x86_64.img
-        
+    elif [ -f (loop)/boot/isolinux/initramfs_data64.cpio.gz ]; then 
+        vt_linux_specify_initrd_file /boot/isolinux/initramfs_data64.cpio.gz
 
+        
+    fi
+    
+    if [ -f (loop)/isolinux/initrd.gz ]; then 
+        vt_linux_specify_initrd_file /isolinux/initrd.gz
+    fi
+    
+    if [ "$vt_chosen_size" = "1133375488" ]; then
+        if [ -d (loop)/boot/grub/x86_64-efi ]; then
+            vt_cpio_busybox64
+        fi
     fi
 }
 
@@ -224,8 +238,19 @@ function distro_specify_initrd_file_phase2 {
         vt_linux_specify_initrd_file /initrd
     elif [ -f (loop)/live/initrd1 ]; then 
         vt_linux_specify_initrd_file /live/initrd1
+    elif [ -f (loop)/isolinux/initrd.img ]; then 
+        vt_linux_specify_initrd_file /isolinux/initrd.img
+    elif [ -f (loop)/isolinux/initrd.gz ]; then 
+        vt_linux_specify_initrd_file /isolinux/initrd.gz
+    elif [ -f (loop)/syslinux/kernel/initramfs.gz ]; then 
+        vt_linux_specify_initrd_file /syslinux/kernel/initramfs.gz    
     elif vt_strstr $vt_volume_id "Daphile"; then
         vt_linux_parse_initrd_isolinux   (loop)/isolinux/
+    elif [ -f (loop)/boot/rootfs.xz ]; then 
+        vt_linux_specify_initrd_file /boot/rootfs.xz
+        if [ "$grub_platform" != "pc" ]; then
+            vt_add_replace_file 0 "minimal\\x86_64\\rootfs.xz"
+        fi
         
     fi
 }
@@ -263,7 +288,13 @@ function ventoy_get_freenas_ver {
     fi
 }
 
+function ventoy_get_midnightbsd_ver {   
+    set vt_freebsd_ver=11.x
+}
+
 function ventoy_freebsd_proc {
+    set vtFreeBsdDistro=FreeBSD
+
     if vt_strstr "$vt_volume_id" "GHOSTBSD"; then
         ventoy_get_ghostbsd_ver $1 ${chosen_path}
     elif vt_strstr "$vt_volume_id" "FREENAS"; then
@@ -280,6 +311,9 @@ function ventoy_freebsd_proc {
         set vt_freebsd_ver=10.x
     elif regexp "^9_[0-9]" "$vt_volume_id"; then
         set vt_freebsd_ver=9.x
+    elif [ -d (loop)/usr/midnightbsd-dist ]; then
+        ventoy_get_midnightbsd_ver $1 ${chosen_path}
+        set vtFreeBsdDistro=MidnightBSD
     elif [ -e (loop)/bin/freebsd-version ]; then
         vt_unix_parse_freebsd_ver (loop)/bin/freebsd-version vt_userland_ver
         if regexp "\"13\.[0-9]-" "$vt_userland_ver"; then
@@ -334,7 +368,11 @@ function ventoy_freebsd_proc {
         fi
     done
     
-    vt_unix_replace_ko $vt_unix_mod_path (vtunix)/ventoy_unix/FreeBSD/geom_ventoy_ko/$vt_freebsd_ver/$vt_freebsd_bit/geom_ventoy.ko.xz
+    if [ -e (loop)/usr/freebsd-dist/cloninst.sh ]; then
+        set vtFreeBsdDistro=ClonOS
+    fi
+    
+    vt_unix_replace_ko $vt_unix_mod_path (vtunix)/ventoy_unix/$vtFreeBsdDistro/geom_ventoy_ko/$vt_freebsd_ver/$vt_freebsd_bit/geom_ventoy.ko.xz
     vt_unix_replace_conf FreeBSD ${1}${chosen_path} 
 }
 
@@ -458,6 +496,8 @@ function uefi_linux_menu_func {
                 vt_add_replace_file $vtindex "EFI\\BOOT\\initrd.gz"
             elif [ -f (loop)/loader/entries/thinstation.conf ]; then
                 vt_add_replace_file $vtindex "boot\\initrd"
+            elif [ -f (loop)/loader/entries/pisi-efi-x86_64.conf ]; then
+                vt_add_replace_file $vtindex "EFI\\pisi\\initrd.img"
             fi
         elif [ -d (loop)/EFI/boot/entries ]; then
             if [ -f (loop)/parabola/boot/x86_64/parabolaiso.img ]; then
@@ -468,6 +508,8 @@ function uefi_linux_menu_func {
         elif [ -e (loop)/syslinux/alt0/full.cz ]; then
             vt_add_replace_file 0 "EFI\\BOOT\\full.cz"            
             set FirstTryBootFile='@EFI@BOOT@grubx64.efi'
+
+
         fi
         
     fi
@@ -649,6 +691,10 @@ function legacy_linux_menu_func {
         
         vt_linux_initrd_count vtcount
         if [ $vtcount -eq 0 ]; then
+            if [ -d (loop)/rancheros ]; then
+                vt_linux_parse_initrd_isolinux   (loop)/boot/  /boot/isolinux/
+            fi
+
             distro_specify_initrd_file_phase2
         fi
         
@@ -770,6 +816,11 @@ function ventoy_iso_busybox_ver {
         if vt_str_begin $vt_chosen_path "/deepin-live"; then
             set ventoy_busybox_ver=64
         fi
+    elif vt_str_begin $vt_volume_id "PHOTON_"; then
+        set ventoy_busybox_ver=64
+    elif vt_str_begin $vt_volume_id "smgl-test-quinq-x86_64"; then
+        set ventoy_busybox_ver=64
+        
     fi
 }
 
@@ -785,6 +836,8 @@ function iso_common_menuentry {
     #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
+    elif vt_str_begin $vt_volume_id "TENS-Public"; then
+        set vtcompat=1
     fi
 
     if [ "$grub_platform" = "pc" ]; then
@@ -845,9 +898,18 @@ function efi_common_menuentry {
     
     ventoy_debug_pause
     
-    ventoy_cli_console    
-    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}
+    ventoy_cli_console
+
+    unset vtoy_dotefi_retry
+    chainloader ${vtoy_path}/ventoy_x64.efi memdisk env_param=${env_param} dotefi isoefi=on ${vtdebug_flag} mem:${vtoy_iso_buf_addr}:size:${vtoy_iso_buf_size}
     boot
+    
+    if [ -n "$vtoy_dotefi_retry" ]; then
+        unset vtoy_dotefi_retry
+        chainloader ${vtoy_iso_part}${vt_chosen_path}
+        boot
+    fi
+    
     ventoy_gui_console
 }
 
@@ -904,10 +966,147 @@ function ventoy_img_volumio {
     vt_unset_boot_opt
 }
 
+function ventoy_img_openelec {
+    elec_ver=$1
+    
+    vt_load_cpio  $vtoy_path/ventoy.cpio  ${vt_chosen_path} ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
+    vt_trailer_cpio ${vtoy_iso_part} ${vt_chosen_path} noinit
+
+    loopback vtloopex $vtoy_efi_part/ventoy/vtloopex.cpio    
+    vt_img_extra_initrd_append  (vtloopex)/$elec_ver/vtloopex.tar.xz
+
+    ventoy_debug_pause
+
+    #boot image file
+    vt_set_boot_opt rdinit=/vtoy/vtoy ventoyos=$elec_ver
+    vt_img_hook_root
+    
+    set root=(vtimghd,1)
+    syslinux_configfile (vtimghd,1)/syslinux.cfg
+    
+    vt_img_unhook_root
+    vt_unset_boot_opt
+    loopback -d vtloopex
+}
+
+
+function ventoy_img_freedombox {
+    vt_load_cpio  $vtoy_path/ventoy.cpio  ${vt_chosen_path} ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
+    vt_trailer_cpio ${vtoy_iso_part} ${vt_chosen_path} noinit
+
+    vt_get_lib_module_ver (vtimghd,1) /lib/modules/ vt_module_ver
+    if [ -n "$vt_module_ver" ]; then        
+        vt_img_extra_initrd_append  (vtimghd,1)/lib/modules/$vt_module_ver/kernel/drivers/md/dm-mod.ko
+    fi
+
+    ventoy_debug_pause
+
+    #boot image file
+    vt_set_boot_opt rdinit=/vtoy/vtoy ventoyos=freedombox
+    vt_img_hook_root
+    
+    configfile (vtimghd,1)/boot/grub/grub.cfg
+    
+    vt_img_unhook_root
+    vt_unset_boot_opt
+}
+
+function ventoy_img_paldo {
+    vt_load_cpio  $vtoy_path/ventoy.cpio  ${vt_chosen_path} ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
+    vt_trailer_cpio ${vtoy_iso_part} ${vt_chosen_path} noinit
+
+    ventoy_debug_pause
+
+    #boot image file
+    vt_set_boot_opt rdinit=/vtoy/vtoy ventoyos=paldo
+    vt_img_hook_root
+    
+    vt_fs_enum_1st_file (vtimghd,1) /loader/entries/ vt_paldo_entry_conf
+    vt_file_basename $vt_paldo_entry_conf vtPaldoVer
+    
+    echo loading file...
+    linux (vtimghd,1)/linux-${vtPaldoVer} root=/dev/ventoy1 rootfstype=vfat
+    initrd (vtimghd,1)/initramfs-${vtPaldoVer}
+    boot
+    
+    vt_img_unhook_root
+    vt_unset_boot_opt
+}
+
+function ventoy_img_ubos {
+    vt_load_cpio  $vtoy_path/ventoy.cpio  ${vt_chosen_path} ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
+    vt_trailer_cpio ${vtoy_iso_part} ${vt_chosen_path} noinit
+
+    vt_get_lib_module_ver (vtimghd,3) /lib/modules/ vt_module_ver
+    if [ -n "$vt_module_ver" ]; then        
+        vt_img_extra_initrd_append  (vtimghd,3)/lib/modules/$vt_module_ver/kernel/drivers/md/dm-mod.ko.xz
+    fi
+
+    ventoy_debug_pause
+
+    #boot image file
+    vt_set_boot_opt rdinit=/vtoy/vtoy ventoyos=ubos
+    vt_img_hook_root
+    
+    echo loading file...
+    linux (vtimghd,2)/vmlinuz-linux root=/dev/ventoy3 rw
+    initrd (vtimghd,2)/initramfs-linux.img
+    boot
+
+    vt_img_unhook_root
+    vt_unset_boot_opt
+}
+
+function ventoy_img_recalbox {
+    vt_load_cpio  $vtoy_path/ventoy.cpio  ${vt_chosen_path} ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
+    vt_trailer_cpio ${vtoy_iso_part} ${vt_chosen_path} noinit
+
+    ventoy_debug_pause
+
+    #boot image file
+    vt_set_boot_opt rdinit=/vtoy/vtoy ventoyos=recalbox
+    vt_img_hook_root
+    
+    set root=(vtimghd,1)
+    configfile (vtimghd,1)/boot/grub/grub.cfg
+
+    vt_img_unhook_root
+    vt_unset_boot_opt
+}
+
+function ventoy_img_batocera {
+    vt_load_cpio  $vtoy_path/ventoy.cpio  ${vt_chosen_path} ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
+    vt_trailer_cpio ${vtoy_iso_part} ${vt_chosen_path} noinit
+
+    ventoy_debug_pause
+
+    #boot image file
+    vt_set_boot_opt rdinit=/vtoy/vtoy ventoyos=batocera
+    vt_img_hook_root
+    
+    set root=(vtimghd,1)
+    syslinux_configfile (vtimghd,1)/boot/syslinux/syslinux.cfg
+
+    vt_img_unhook_root
+    vt_unset_boot_opt
+}
+
+function ventoy_img_memtest86 {      
+    chainloader (vtimghd,1)/efi/boot/BOOTX64.efi
+    boot
+}
+
+function img_unsupport_tip {
+    echo -e "\n This IMG file is NOT supported now. \n"
+    echo -e " 当前不支持启动此 IMG 文件 \n"    
+    echo -e "\npress ENTER to exit (请按 回车 键返回) ..."    
+    read vtInputKey 
+}
 
 function img_common_menuentry {
+    set ventoy_compatible=YES
     set ventoy_busybox_ver=32
-    
+
     vt_chosen_img_path vt_chosen_path vt_chosen_size
 
     if [ -d (vtimghd)/ ]; then
@@ -925,24 +1124,53 @@ function img_common_menuentry {
 
     vt_img_extra_initrd_reset
 
-    #vt_get_fs_label (vtimghd,1) vtImgHd1Label
+    vt_get_fs_label (vtimghd,1) vtImgHd1Label
+    if [ -d (vtimghd,2)/lib ]; then
+        vt_get_fs_label (vtimghd,2) vtImgHd2Label
+    fi
+    
+    if [ -e (vtimghd,1)/etc/hostname ]; then
+        vt_1st_line (vtimghd,1)/etc/hostname vtImgHostname
+    fi
     
     if [ -e (vtimghd,1)/easy.sfs ]; then
         ventoy_img_easyos
     elif [ -e (vtimghd,1)/volumio.initrd ]; then
         ventoy_img_volumio
-    
-
+    elif vt_str_begin $vtImgHd1Label "LAKKA"; then
+        ventoy_img_openelec lakka
+    elif vt_str_begin $vtImgHd1Label "LIBREELEC"; then
+        ventoy_img_openelec LibreELEC
+    elif vt_str_begin $vtImgHd1Label "paldo-live"; then
+        ventoy_img_paldo
+    elif vt_str_begin $vtImgHostname "freedombox"; then
+        ventoy_img_freedombox
+    elif vt_str_begin $vtImgHd1Label "BATOCERA"; then
+        ventoy_img_batocera
+    elif [ "$vtImgHd2Label" = "RECALBOX" ]; then
+        ventoy_img_recalbox
+    elif [ -f (vtimghd,2)/loader/entries/ubos.conf ]; then
+        ventoy_img_ubos
+    elif [ -f (vtimghd,1)/efi/boot/mt86.png ]; then 
+        if [ "$grub_platform" = "pc" ]; then
+            img_unsupport_tip
+        else
+            ventoy_img_memtest86            
+        fi
     else
-        echo -e "\n This IMG file is NOT supported now. \n"
-        echo -e " 当前不支持启动此 IMG 文件 \n"    
-        echo -e "\npress ENTER to exit (请按 回车 键返回) ..."    
-        read vtInputKey        
+        if [ "$grub_platform" = "pc" ]; then 
+            img_unsupport_tip
+        else
+            vt_linux_chain_data ${vtoy_iso_part}${vt_chosen_path}
+            chainloader ${vtoy_path}/ventoy_x64.efi sector512 env_param=${env_param} isoefi=${LoadIsoEfiDriver} FirstTry=${FirstTryBootFile} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size}
+            boot
+        fi
     fi
 
     set root=$vtback_root
     vt_pop_last_entry
     ventoy_gui_console
+    set ventoy_compatible=NO
 }
 
 function img_unsupport_menuentry {
@@ -957,7 +1185,7 @@ function img_unsupport_menuentry {
 #############################################################
 #############################################################
 
-set VENTOY_VERSION="1.0.19"
+set VENTOY_VERSION="1.0.20"
 
 # Default menu display mode, you can change it as you want.
 #    0: List mode