#!/usr/bin/env bash ENABLED=yes [[ ${ENABLED} == "yes" ]] || exit 0 SELF_NAME="grub-functions" PATH_GRUB="/memory/data/from/0/boot/grub/" exec_get_all_menuentry(){ ## Показать все варианты загрузки из grub_main.cfg grub_addon.cfg grub_boothdd.cfg grub_recovery.cfg echo "\ Full_save_to_HDD Sandbox_in_RAM_with_save_user_profile_on_HDD Full_sandbox_in_RAM Saving_to_the_HDD_module Menu_of_the_second_system Additional_Menu>Sandbox_on_HDD_with_saving_user_profile_on_HDD Additional_Menu>Full_sandbox_on_HDD Recovery_Menu>Boot_base_modules_on_HDD_without_user_settings Recovery_Menu>Boot_base_modules_in_RAM_without_user_settings Boot_menu_for_other_OS>Boot_Windows_bootmgr Boot_menu_for_other_OS>Boot_Windows_ntldr Boot_menu_for_other_OS>Boot_Windows_BIOS_MBR Boot_menu_for_other_OS>Boot_Windows_EFI_MBR Boot_menu_for_other_OS>Boot_from_storage_1_Windows_EFI_MBR Boot_menu_for_other_OS>Boot_from_storage_2_Windows_EFI_MBR Boot_menu_for_other_OS>Boot_from_storage_3_Windows_EFI_MBR Boot_menu_for_other_OS>Boot_from_storage_4_Windows_EFI_MBR Boot_menu_for_other_OS>Boot_Windows_EFI_GPT Boot_menu_for_other_OS>Boot_from_storage_1_Windows_EFI_GPT Boot_menu_for_other_OS>Boot_from_storage_2_Windows_EFI_GPT Boot_menu_for_other_OS>Boot_from_storage_3_Windows_EFI_GPT Boot_menu_for_other_OS>Boot_from_storage_4_Windows_EFI_GPT Boot_menu_for_other_OS>Boot_from_storage_2_masking Boot_menu_for_other_OS>Boot_from_storage_3_masking Boot_menu_for_other_OS>Boot_from_storage_4_masking Boot_menu_for_other_OS>Boot_from_storage_2_without_masking Boot_menu_for_other_OS>Boot_from_storage_3_without_masking Boot_menu_for_other_OS>Boot_from_storage_4_without_masking" #Старые пункт: #UBLinux Desktop Enterprise 2405 - Полное сохранение HDD #UBLinux Desktop Enterprise 2405 - Песочница в RAM с сохранением профиля пользователя HDD #UBLinux Desktop Enterprise 2405 - Полная песочница в RAM #UBLinux Desktop Enterprise 2405 - Сохранение в модуль HDD #Меню дополнительное>UBLinux Desktop Enterprise 2405 - Песочница на HDD с сохранением профиля пользователя HDD #Меню дополнительное>UBLinux Desktop Enterprise 2405 - Полная песочница на HDD #Меню выбора загрузки других ОС>Загрузка Windows используя bootmgr (7, 8, 8.1, 10, 11, 12) #Меню выбора загрузки других ОС>Загрузка Windows используя ntldr (XP) #Меню выбора загрузки других ОС>Загрузка Windows BIOS MBR #Меню выбора загрузки других ОС>Загрузка Windows EFI boot раздел MBR #Меню выбора загрузки других ОС>Загрузка с диска №1, Windows EFI boot раздел MBR #Меню выбора загрузки других ОС>Загрузка с диска №2, Windows EFI boot раздел MBR #Меню выбора загрузки других ОС>Загрузка с диска №3, Windows EFI boot раздел MBR #Меню выбора загрузки других ОС>Загрузка с диска №4, Windows EFI boot раздел MBR #Меню выбора загрузки других ОС>Загрузка Windows EFI boot раздел GPT #Меню выбора загрузки других ОС>Загрузка с диска №1, Windows EFI boot раздел GPT #Меню выбора загрузки других ОС>Загрузка с диска №2, Windows EFI boot раздел GPT #Меню выбора загрузки других ОС>Загрузка с диска №3, Windows EFI boot раздел GPT #Меню выбора загрузки других ОС>Загрузка с диска №4, Windows EFI boot раздел GPT #Меню выбора загрузки других ОС>Загрузка с диска №2, маскируем диск под первый загрузочный #Меню выбора загрузки других ОС>Загрузка с диска №3, маскируем диск под первый загрузочный #Меню выбора загрузки других ОС>Загрузка с диска №4, маскируем диск под первый загрузочный #Меню выбора загрузки других ОС>Загрузка с диска №2, без маскировки #Меню выбора загрузки других ОС>Загрузка с диска №3, без маскировки #Меню выбора загрузки других ОС>Загрузка с диска №4, без маскировки # FILE_OSRELEASE="/usr/lib/os-release" # NAME_DISTRIB=$(sed -En "/VARIANT=/{s/VARIANT=\"(.*)\"/\1/p}" ${FILE_OSRELEASE}) # VER_DISTRIB=$(sed -En "/VERSION_ID=/{s/VERSION_ID=(.*)/\1/p}" ${FILE_OSRELEASE}) # # FILE_GRUB_MAIN="${PATH_GRUB}/ublinux/grub_main.cfg" # if [[ -f ${FILE_GRUB_MAIN} ]]; then # sed -En "/menuentry/{ # /(ISO|Install|Установка)/!{ # s/^[ \t]*// # s/\\$\{NAME_DISTRIB\}/${NAME_DISTRIB}/ # s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/ # s/menuentry \"(.*${NAME_DISTRIB}.*${VER_DISTRIB}.*)\" .*/\1/p # } # }" ${FILE_GRUB_MAIN} # fi # # # FILE_GRUB_ADDON="${PATH_GRUB}/ublinux/grub_addon.cfg" # if [[ -f ${FILE_GRUB_ADDON} ]]; then # NAME_MENU_GRUB_ADDON=$(sed -En "/${FILE_GRUB_ADDON##*/}/{x;{s/menuentry \"(.*)\" .*/\1/p};d;}; x" ${FILE_GRUB_MAIN}) # sed -En "/menuentry/{ # /(ISO|Install|Установка)/!{ # s/^[ \t]*/${NAME_MENU_GRUB_ADDON}>/ # s/\\$\{NAME_DISTRIB\}/${NAME_DISTRIB}/ # s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/ # s/menuentry \"(.*${NAME_DISTRIB}.*${VER_DISTRIB}.*)\" .*/\1/p # } # }" ${FILE_GRUB_ADDON} # #" # fi # # FILE_GRUB_BOOTHDD="${PATH_GRUB}/ublinux/grub_boothdd.cfg" # if [[ -f ${FILE_GRUB_BOOTHDD} ]]; then # NAME_MENU_GRUB_BOOTHDD=$(sed -En "/${FILE_GRUB_BOOTHDD##*/}/{x;{s/menuentry \"(.*)\" .*/\1/p};d;}; x" ${FILE_GRUB_MAIN}) # sed -En "/menuentry/{ # /(Back|Возврат)/!{ # s/^[ \t]*/${NAME_MENU_GRUB_BOOTHDD}>/ # s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/ # s/menuentry \"(.*)\" .*/\1/p # } # }" ${FILE_GRUB_BOOTHDD} # #" # fi # # FILE_GRUB_LOCAL="${PATH_GRUB}/ublinux/grub_local.cfg" # if [[ -f ${FILE_GRUB_LOCAL} ]]; then # NAME_MENU_GRUB_LOCAL=$(sed -En "/${FILE_GRUB_LOCAL##*/}/{x;{s/menuentry \"(.*)\" .*/\1/p};d;}; x" ${FILE_GRUB_MAIN} | sed -E "s/^[[:blank:]]//") # sed -En "/menuentry/{ # /(Back|Возврат)/!{ # s/^[ \t]*/${NAME_MENU_GRUB_LOCAL}>/ # s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/ # s/menuentry \"(.*)\" .*/\1/p # } # }" ${FILE_GRUB_LOCAL} # #" # fi } exec_get_last_menuentry(){ ## Показать последний выбранный вариант загрузки FILE_GRUBENV="${PATH_GRUB}/grubenv" sed -En "/saved_entry=/{s/saved_entry=(.*)/\1/p}" ${FILE_GRUBENV} } ################ ##### MAIN ##### ################ # Если файл подключен как ресурс с функциями, то выйти return 0 2>/dev/null && return 0 if [[ -z $@ ]]; then true else FUNCTION= while [[ $# -gt 0 ]]; do declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'" shift done eval ${FUNCTION#*; } fi