X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/7fe4762faa1b10bfcbb888930159ae76b60ac94a..6034b25cbaa5b35679673c05142aa8e425ac7b95:/INSTALL/grub/grub.cfg diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index c198879..5b1e300 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -19,7 +19,6 @@ if [ "$grub_platform" = "pc" ]; then insmod setkey insmod regexp - insmod video_fb fi function ventoy_pause { @@ -34,6 +33,23 @@ function ventoy_debug_pause { fi } + +function ventoy_max_resolution { + #Skip this for VM + smbios -t 1 -s 0x05 --set=system_product; + for vtPdt in "VMware" "VirtualBox"; then + if vt_str_casebegin "$system_product" "$vtPdt"; then + return + fi + fi + + vt_enum_video_mode + vt_get_video_mode 0 vtCurMode + terminal_output console + set gfxmode=$vtCurMode + terminal_output gfxterm +} + function ventoy_cli_console { if [ -z "$vtoy_display_mode" ]; then terminal_output console @@ -120,7 +136,7 @@ function ventoy_show_help { } function ventoy_load_menu_lang_file { - vt_load_file_to_mem "auto" $vtoy_efi_part/grub/menu.tar.gz vtoy_menu_lang_mem + vt_load_file_to_mem "auto" $prefix/menu.tar.gz vtoy_menu_lang_mem loopback vt_menu_tarfs mem:${vtoy_menu_lang_mem_addr}:size:${vtoy_menu_lang_mem_size} } @@ -402,20 +418,25 @@ function distro_specify_initrd_file_phase2 { vt_linux_specify_initrd_file /boot/full.cz elif [ -f (loop)/images/pxeboot/initrd.img ]; then vt_linux_specify_initrd_file /images/pxeboot/initrd.img - + elif [ -f (loop)/live/initrd ]; then + vt_linux_specify_initrd_file /live/initrd + elif [ -f (loop)/initramfs-linux.img ]; then + vt_linux_specify_initrd_file /initramfs-linux.img + elif [ -f (loop)/boot/isolinux/initrd.gz ]; then + vt_linux_specify_initrd_file /boot/isolinux/initrd.gz fi } + function ventoy_get_ghostbsd_ver { # fallback to parse version from elf /boot/kernel/kernel set vt_freebsd_ver=xx } function ventoy_get_furybsd_ver { - if regexp "13\.[0-9]" "$2"; then - set vt_freebsd_ver=13.x - else - set vt_freebsd_ver=12.x + set vt_freebsd_ver=12.x + if regexp --set 1:vtFuryVer "(14|13)\.[0-9]" "$2"; then + set vt_freebsd_ver=${vtFuryVer}.x fi } @@ -424,12 +445,8 @@ function ventoy_get_freenas_ver { 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 + if regexp --set 1:vtNasVer "^(14|13|12|11)\.[0-9]" "$vt_freenas_ver"; then + set vt_freebsd_ver=${vtNasVer}.x fi fi } @@ -439,12 +456,8 @@ function ventoy_get_truenas_ver { if [ -e (loop)/TrueNAS-MANIFEST ]; then vt_parse_freenas_ver (loop)/TrueNAS-MANIFEST vt_truenas_ver - if regexp "^13\.[0-9]" "$vt_truenas_ver"; then - set vt_freebsd_ver=13.x - elif regexp "^12\.[0-9]" "$vt_truenas_ver"; then - set vt_freebsd_ver=12.x - elif regexp "^11\.[0-9]" "$vt_truenas_ver"; then - set vt_freebsd_ver=11.x + if regexp --set 1:vtTNasVer "^(14|13|12|11)\.[0-9]" "$vt_truenas_ver"; then + set vt_freebsd_ver=${vtTNasVer}.x fi fi } @@ -476,49 +489,25 @@ function ventoy_freebsd_proc { ventoy_get_truenas_ver "$1" "${chosen_path}" elif vt_strstr "$vt_volume_id" "FURYBSD"; then ventoy_get_furybsd_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 - elif regexp "^11_[0-9]" "$vt_volume_id"; then - set vt_freebsd_ver=11.x - elif regexp "^10_[0-9]" "$vt_volume_id"; then - set vt_freebsd_ver=10.x - elif regexp "^9_[0-9]" "$vt_volume_id"; then - set vt_freebsd_ver=9.x + elif regexp --set 1:vtBsdVerNum "^(14|13|12|11|10|9)_[0-9]" "$vt_volume_id"; then + set vt_freebsd_ver=${vtBsdVerNum}.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 - set vt_freebsd_ver=13.x - elif regexp "\"12\.[0-9]-" "$vt_userland_ver"; then - set vt_freebsd_ver=12.x - elif regexp "\"11\.[0-9]-" "$vt_userland_ver"; then - set vt_freebsd_ver=11.x - elif regexp "\"10\.[0-9]-" "$vt_userland_ver"; then - set vt_freebsd_ver=10.x - elif regexp "\"9\.[0-9]-" "$vt_userland_ver"; then - set vt_freebsd_ver=9.x - fi + vt_unix_parse_freebsd_ver (loop)/bin/freebsd-version vt_userland_ver + if regexp --set 1:vtBsdVerNum "\"(14|13|12|11|10|9)\.[0-9]-" "$vt_userland_ver"; then + set vt_freebsd_ver=${vtBsdVerNum}.x + 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 + if regexp --set 1:vtBsdVerNum "FreeBSD (14|13|12|11|10|9)\.[0-9]-" "$vt_freebsd_line1"; then + set vt_freebsd_ver=${vtBsdVerNum}.x fi elif vt_strstr "${chosen_path}" "MidnightBSD"; then set vt_freebsd_ver=9.x fi - + if [ -e (loop)/usr/freebsd-dist/cloninst.sh ]; then set vtFreeBsdDistro=ClonOS @@ -542,10 +531,17 @@ function ventoy_freebsd_proc { fi if [ "$vt_freebsd_ver" = "xx" ]; then - set vt_freebsd_ver=13.x + set vt_freebsd_ver=14.x + fi + fi + + if [ "$vt_freebsd_ver" = "14.x" ]; then + if [ -e (loop)/boot/lua/brand-pfSense.lua ]; then + set vtFreeBsdDistro=pfSense fi fi + if [ -n "${vtdebug_flag}" ]; then echo "This is $vtFreeBsdDistro $vt_freebsd_ver ${vt_freebsd_bit}bit" fi @@ -652,7 +648,7 @@ function uefi_windows_menu_func { if [ -n "$vtoy_chain_mem_addr" ]; then ventoy_acpi_param ${vtoy_chain_mem_addr} 2048 - ventoy_cli_console + ventoy_max_resolution chainloader ${vtoy_path}/ventoy_${VTOY_EFI_ARCH}.efi env_param=${env_param} isoefi=${LoadIsoEfiDriver} iso_${ventoy_fs_probe} ${vtdebug_flag} mem:${vtoy_chain_mem_addr}:size:${vtoy_chain_mem_size} boot else @@ -694,7 +690,7 @@ function uefi_linux_menu_func { if [ -d (loop)/pmagic ]; then vt_linux_specify_initrd_file /pmagic/initrd.img else - for file in "boot/grub/grub.cfg" "EFI/BOOT/grub.cfg" "EFI/boot/grub.cfg" "efi/boot/grub.cfg" "EFI/BOOT/BOOTX64.conf" "/grub/grub.cfg"; do + for file in "boot/grub/grub.cfg" "EFI/BOOT/grub.cfg" "EFI/boot/grub.cfg" "efi/boot/grub.cfg" "EFI/BOOT/BOOTX64.conf" "/grub/grub.cfg" "EFI/BOOT/grub/grub.cfg"; do if [ -e (loop)/$file ]; then vt_linux_parse_initrd_grub file (loop)/$file fi @@ -1443,6 +1439,8 @@ function ventoy_iso_busybox_ver { set ventoy_busybox_ver=64 elif vt_str_begin "$vt_volume_id" "LDiagBootable"; then set ventoy_busybox_ver=64 + elif vt_str_begin "$vt_volume_id" "KAOS_"; then + set ventoy_busybox_ver=64 fi fi @@ -1927,6 +1925,20 @@ function ventoy_img_openelec { loopback vtloopex $vtoy_efi_part/ventoy/vtloopex.cpio vt_img_extra_initrd_append (vtloopex)/$elec_ver/vtloopex.tar.xz + if [ "$elec_ver" = "LibreELEC" ]; then + if [ -f (vtimghd,1)/system ]; then + loopback elecsfs (vtimghd,1)/system + vt_get_lib_module_ver (elecsfs) /usr/lib/kernel-overlays/base/lib/modules/ vt_module_ver + if [ -n "$vt_module_ver" ]; then + for mod in "kernel/drivers/md/dm-mod.ko"; do + if [ -e (elecsfs)/usr/lib/kernel-overlays/base/lib/modules/$vt_module_ver/$mod ]; then + vt_img_extra_initrd_append (elecsfs)/usr/lib/kernel-overlays/base/lib/modules/$vt_module_ver/$mod + fi + done + fi + fi + fi + ventoy_debug_pause #boot image file @@ -1939,6 +1951,7 @@ function ventoy_img_openelec { vt_img_unhook_root vt_unset_boot_opt loopback -d vtloopex + loopback -d elecsfs } @@ -2217,6 +2230,23 @@ function ventoy_img_cloudready { unset linuxpartB } + +function ventoy_img_fwts { + vt_load_cpio $vtoy_path "${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=fwts + vt_img_hook_root + + configfile $prefix/distro/fwts.cfg + + vt_img_unhook_root + vt_unset_boot_opt +} + function ventoy_img_memtest86 { chainloader (vtimghd,1)/efi/boot/BOOTX64.efi boot @@ -2282,6 +2312,14 @@ function img_common_menuentry { vt_get_fs_label (vtimghd,2) vtImgHd2Label fi + if [ -z "$vtImgHd1Label" ]; then + if [ -d (vtimghd,2)/efi ]; then + vt_get_fs_label (vtimghd,3) vtImgHd3Label + elif [ -d (vtimghd,12)/efi ]; then + vt_get_fs_label (vtimghd,3) vtImgHd3Label + fi + fi + if [ -e (vtimghd,1)/etc/hostname ]; then vt_1st_line (vtimghd,1)/etc/hostname vtImgHostname fi @@ -2299,6 +2337,8 @@ function img_common_menuentry { elif [ -f (vtimghd,3)/etc/chrome_dev.conf ]; then ventoy_img_cloudready fi + elif vt_str_begin "$vtImgHd3Label" "fwts-result"; then + ventoy_img_fwts elif vt_str_begin "$vtImgHd1Label" "LAKKA"; then ventoy_img_openelec lakka elif vt_str_begin "$vtImgHd1Label" "LIBREELEC"; then @@ -2387,7 +2427,7 @@ function mimg_common_menuentry { ############################################################# ############################################################# -set VENTOY_VERSION="1.0.86" +set VENTOY_VERSION="1.1.05" #ACPI not compatible with Window7/8, so disable by default set VTOY_PARAM_NO_ACPI=1 @@ -2546,9 +2586,18 @@ elif [ "$vtoy_display_mode" = "serial_console" ]; then terminal_input serial console terminal_output serial console else - if [ "$vtoy_res_fit" = "1" ]; then + if [ "$vtoy_gfxmode" = "max" ]; then + set gfxmode=1024x768 terminal_output gfxterm - fi + + vt_enum_video_mode + vt_get_video_mode 0 vtCurMode + terminal_output console + set gfxmode=$vtCurMode + terminal_output gfxterm + elif [ "$vtoy_res_fit" = "1" ]; then + terminal_output gfxterm + fi if [ -n "$vtoy_theme" ]; then vt_set_theme