]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - INSTALL/grub/grub.cfg
1.0.18 release
[Ventoy.git] / INSTALL / grub / grub.cfg
index 64fe729bc200848c69e7c3ddf7abee87aecdaa48..f2ea24f54729a6070af54daa71b0d0407f363f9f 100644 (file)
@@ -92,8 +92,20 @@ function get_os_type {
     if [ "$vtoy_os" = "Linux" ]; then
         if vt_strstr "$vt_system_id" "FreeBSD"; then
             set vtoy_os=Unix
     if [ "$vtoy_os" = "Linux" ]; then
         if vt_strstr "$vt_system_id" "FreeBSD"; then
             set vtoy_os=Unix
+            set vt_unix_type=FreeBSD
         elif [ -e (loop)/bin/freebsd-version ]; then
             set vtoy_os=Unix
         elif [ -e (loop)/bin/freebsd-version ]; then
             set vtoy_os=Unix
+            set vt_unix_type=FreeBSD
+            
+            
+        elif [ -e (loop)/boot/kernel/kernel ]; then            
+            if file --is-x86-kfreebsd (loop)/boot/kernel/kernel; then
+                set vtoy_os=Unix
+                set vt_unix_type=FreeBSD
+            elif file --is-x86-knetbsd (loop)/boot/kernel/kernel; then
+                set vtoy_os=Unix
+                set vt_unix_type=NetBSD
+            fi
         fi
     fi
 
         fi
     fi
 
@@ -219,44 +231,101 @@ function distro_specify_initrd_file_phase2 {
     fi
 }
 
     fi
 }
 
+function ventoy_get_ghostbsd_ver {
+
+    # vt_parse_iso_create_date $1/${chosen_path} vt_create_date    
+    # if regexp "^202005" "$vt_create_date"; then
+        # set vt_freebsd_ver=12.x
+    # fi
+    
+    set vt_freebsd_ver=12.x
+}
+
+function ventoy_get_freenas_ver {   
+    set vt_freebsd_ver=11.x
+
+    if [ -e (loop)/FreeNAS-MANIFEST ]; then
+        vt_parse_freenas_ver (loop)/FreeNAS-MANIFEST vt_freenas_ver
+        if regexp "^13\.[0-9]" "$vt_freenas_ver"; then
+            set vt_freebsd_ver=13.x
+        elif regexp "^12\.[0-9]" "$vt_freenas_ver"; then
+            set vt_freebsd_ver=12.x
+        elif regexp "^11\.[0-9]" "$vt_freenas_ver"; then
+            set vt_freebsd_ver=11.x
+        fi
+    fi
+}
+
 function ventoy_freebsd_proc {
 function ventoy_freebsd_proc {
-    if regexp "^12_[0-9]" $vt_volume_id; then
+    if vt_strstr "$vt_volume_id" "GHOSTBSD"; then
+        ventoy_get_ghostbsd_ver $1 ${chosen_path}
+    elif vt_strstr "$vt_volume_id" "FREENAS"; then
+        ventoy_get_freenas_ver $1 ${chosen_path}   
+    elif regexp "^13_[0-9]" "$vt_volume_id"; then
+        set vt_freebsd_ver=13.x
+    elif regexp "^12_[0-9]" "$vt_volume_id"; then
         set vt_freebsd_ver=12.x
         set vt_freebsd_ver=12.x
-    elif regexp "^11_[0-9]" $vt_volume_id; then
+    elif regexp "^11_[0-9]" "$vt_volume_id"; then
         set vt_freebsd_ver=11.x
         set vt_freebsd_ver=11.x
-    elif regexp "^10_[0-9]" $vt_volume_id; then
+    elif regexp "^10_[0-9]" "$vt_volume_id"; then
         set vt_freebsd_ver=10.x
         set vt_freebsd_ver=10.x
+    elif regexp "^9_[0-9]" "$vt_volume_id"; then
+        set vt_freebsd_ver=9.x
     elif [ -e (loop)/bin/freebsd-version ]; then
         vt_unix_parse_freebsd_ver (loop)/bin/freebsd-version vt_userland_ver
     elif [ -e (loop)/bin/freebsd-version ]; then
         vt_unix_parse_freebsd_ver (loop)/bin/freebsd-version vt_userland_ver
-        if regexp "\"12\.[0-9]-" $vt_userland_ver; then
+        if regexp "\"13\.[0-9]-" "$vt_userland_ver"; then
+            set vt_freebsd_ver=13.x
+        elif regexp "\"12\.[0-9]-" "$vt_userland_ver"; then
             set vt_freebsd_ver=12.x
             set vt_freebsd_ver=12.x
-        elif regexp "\"11\.[0-9]-" $vt_userland_ver; then
+        elif regexp "\"11\.[0-9]-" "$vt_userland_ver"; then
             set vt_freebsd_ver=11.x
             set vt_freebsd_ver=11.x
-        elif regexp "\"10\.[0-9]-" $vt_userland_ver; then
+        elif regexp "\"10\.[0-9]-" "$vt_userland_ver"; then
             set vt_freebsd_ver=10.x
             set vt_freebsd_ver=10.x
+        elif regexp "\"9\.[0-9]-" "$vt_userland_ver"; then
+            set vt_freebsd_ver=9.x
         fi
         fi
+    elif [ -e (loop)/README.TXT ]; then
+        vt_1st_line (loop)/README.TXT vt_freebsd_line1
+        if regexp "FreeBSD 13\.[0-9]-" "$vt_freebsd_line1"; then
+            set vt_freebsd_ver=13.x
+        elif regexp "FreeBSD 12\.[0-9]-" "$vt_freebsd_line1"; then
+            set vt_freebsd_ver=12.x
+        elif regexp "FreeBSD 11\.[0-9]-" "$vt_freebsd_line1"; then
+            set vt_freebsd_ver=11.x
+        elif regexp "FreeBSD 10\.[0-9]-" "$vt_freebsd_line1"; then
+            set vt_freebsd_ver=10.x
+        elif regexp "FreeBSD 9\.[0-9]-" "$vt_freebsd_line1"; then
+            set vt_freebsd_ver=9.x
+        fi
+    elif vt_strstr "${chosen_path}" "MidnightBSD"; then
+        set vt_freebsd_ver=9.x
     else
         set vt_freebsd_ver=12.x
     fi
     else
         set vt_freebsd_ver=12.x
     fi
-
-    if file --is-i386-kfreebsd (loop)/boot/kernel/kernel; then
-        set vt_freebsd_bit=32
-    else
-        set vt_freebsd_bit=64
-    fi
+    
+    set vt_freebsd_bit=64
+    for file in "/boot/kernel/kernel" "/boot/kernel/kernel.gz"; do
+        if [ -e (loop)/$file ]; then    
+            if file --is-i386-kfreebsd (loop)/$file; then
+                set vt_freebsd_bit=32
+            fi
+            break
+        fi
+    done    
 
     if [ -n "${vtdebug_flag}" ]; then
         echo "This is FreeBSD $vt_freebsd_ver ${vt_freebsd_bit}bit"
     fi
     
 
     if [ -n "${vtdebug_flag}" ]; then
         echo "This is FreeBSD $vt_freebsd_ver ${vt_freebsd_bit}bit"
     fi
     
-    for file in "geom_nop" "ipmi"; do        
-        if [ -e (loop)/boot/kernel/${file}.ko ]; then                    
-            set vt_unix_ko=$file
+    unset vt_unix_mod_path
+    for file in "/COPYRIGHT" "/FreeNAS-MANIFEST" "/version"; do   
+        if [ -e (loop)${file} ]; then                    
+            set vt_unix_mod_path=${file}
             break
         fi
     done
     
             break
         fi
     done
     
-    vt_unix_replace_ko $vt_unix_ko (vtunix)/ventoy_unix/FreeBSD/geom_ventoy_ko/$vt_freebsd_ver/$vt_freebsd_bit/geom_ventoy.ko.xz
+    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
     vt_unix_replace_conf FreeBSD ${1}${chosen_path} 
 }
 
     vt_unix_replace_conf FreeBSD ${1}${chosen_path} 
 }
 
@@ -266,11 +335,13 @@ function ventoy_unix_comm_proc {
     if [ "$ventoy_compatible" = "NO" ]; then
         loopback vtunix $vtoy_efi_part/ventoy/ventoy_unix.cpio
         
     if [ "$ventoy_compatible" = "NO" ]; then
         loopback vtunix $vtoy_efi_part/ventoy/ventoy_unix.cpio
         
-        set vt_unix_type=unknown
-        if vt_strstr "$vt_system_id" "FreeBSD"; then
-            ventoy_freebsd_proc $1 ${chosen_path}
-        elif [ -e (loop)/bin/freebsd-version ]; then        
-            ventoy_freebsd_proc $1 ${chosen_path}
+        if [ "$vt_unix_type" = "FreeBSD" ]; then
+            ventoy_freebsd_proc $1 ${chosen_path}        
+        elif [ "$vt_unix_type" = "NetBSD" ]; then
+            echo "NetBSD not supported"
+            
+            
+            
         else
             if [ -n "${vtdebug_flag}" ]; then
                 echo "Unknown unix type"
         else
             if [ -n "${vtdebug_flag}" ]; then
                 echo "Unknown unix type"
@@ -731,7 +802,7 @@ function efi_unsupport_menuentry {
 #############################################################
 #############################################################
 
 #############################################################
 #############################################################
 
-set VENTOY_VERSION="1.0.17"
+set VENTOY_VERSION="1.0.18"
 
 # Default menu display mode, you can change it as you want.
 #    0: List mode   
 
 # Default menu display mode, you can change it as you want.
 #    0: List mode