You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ublinux-init/ublinux/scripts/grub-functions

69 lines
2.3 KiB

#!/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_*.cfg grub_*_addon.cfg grub_*_boothdd.cfg
FILE_OSRELEASE="/etc/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_${LANG%_*}.cfg"
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}
FILE_GRUB_ADDON="${PATH_GRUB}/ublinux/grub_${LANG%_*}_addon.cfg"
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}
FILE_GRUB_BOOTHDD="${PATH_GRUB}/ublinux/grub_${LANG%_*}_boothdd.cfg"
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}
}
exec_get_last_menuentry(){
## Показать последний выбранный вариант загрузки
FILE_GRUBENV="${PATH_GRUB}/grubenv"
sed -En "/saved_entry=/{s/saved_entry=(.*)/\1/p}" ${FILE_GRUBENV}
}
################
##### MAIN #####
################
# Возможность подключить как source из любого скрипта и вызов встроенных функций
if [[ ${0##*/} == ${SELF_NAME} ]]; then
while [[ $# -gt 0 ]]; do
declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" ${1}" && shift; }
done
eval ${FUNCTION#*; }
else
true
fi