2023-11-10 19:09:15 +00:00
|
|
|
function grub_fix {
|
|
|
|
unset cmdroot
|
|
|
|
regexp --set cmdroot '^\((.*)\)' "${cmdpath}"
|
|
|
|
if [ "${cmdroot}" != "${root}" ] ; then
|
|
|
|
echo -n "\
|
|
|
|
|*${cmdpath}
|
|
|
|
"
|
|
|
|
if [ -d "(${cmdroot})/boot/grub/${grub_cpu}-${grub_platform}" ] ; then
|
|
|
|
prefix="(${cmdroot})/boot/grub"
|
|
|
|
root="${cmdroot}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
unset cmdroot
|
|
|
|
check_signatures='enforce'
|
|
|
|
trust --skip-sig "${prefix}/grub.pgp"
|
|
|
|
}
|
|
|
|
|
2023-11-11 15:36:57 +00:00
|
|
|
function grub_init {
|
|
|
|
load_env \
|
|
|
|
'live_name' 'data_uuid'
|
|
|
|
#
|
|
|
|
regexp --set esp '^\((.*)\)' "${prefix}"
|
|
|
|
#
|
|
|
|
env="(${esp})/grub.env"
|
|
|
|
load_env \
|
|
|
|
--skip-sig \
|
|
|
|
--file "${env}" \
|
2023-11-22 21:56:22 +00:00
|
|
|
'pause'
|
2023-11-11 15:36:57 +00:00
|
|
|
#
|
2023-11-15 11:04:59 +00:00
|
|
|
live="(${esp})/boot/${live_name}"
|
2023-11-11 15:36:57 +00:00
|
|
|
#
|
|
|
|
search --no-floppy --set data \
|
|
|
|
--fs-uuid "${data_uuid}"
|
|
|
|
}
|
|
|
|
|
2023-11-10 19:09:15 +00:00
|
|
|
function grub_list_const {
|
2023-11-24 05:32:00 +00:00
|
|
|
target="${1}"
|
|
|
|
setparams \
|
|
|
|
" cpu-platform | ${grub_cpu}-${grub_platform}" \
|
|
|
|
" cmdpath | ${cmdpath}"
|
|
|
|
for entry in "${@}" ; do
|
|
|
|
if [ "${target}" == 'menu' ] ; then
|
|
|
|
menuentry "${entry}" { nop }
|
|
|
|
else
|
|
|
|
echo "${entry}"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
unset entry
|
|
|
|
unset target
|
2023-11-10 19:09:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function grub_list_info {
|
|
|
|
if [ -f '/.disk/info' -o -f '/.disk/mini-info' ] ; then
|
|
|
|
for f in '/.disk/info' '/.disk/mini-info' ; do
|
|
|
|
echo -n "\
|
|
|
|
|"
|
|
|
|
if [ -f "${f}" ] ; then
|
|
|
|
echo -n '*'
|
|
|
|
else
|
|
|
|
echo -n ' '
|
|
|
|
fi
|
|
|
|
echo "(${root})${f}"
|
|
|
|
done
|
|
|
|
unset f
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function grub_list_vars {
|
2023-11-24 05:32:00 +00:00
|
|
|
target="${1}"
|
|
|
|
setparams \
|
|
|
|
" root | ${root}" \
|
|
|
|
" prefix | ${prefix}" \
|
|
|
|
"check_signatures | ${check_signatures}"
|
|
|
|
for entry in "${@}" ; do
|
|
|
|
if [ "${target}" == 'menu' ] ; then
|
|
|
|
menuentry "${entry}" { nop }
|
|
|
|
else
|
|
|
|
echo "${entry}"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
unset entry
|
|
|
|
unset target
|
2023-11-10 19:09:15 +00:00
|
|
|
list_trusted
|
|
|
|
}
|
|
|
|
|
|
|
|
function grub_list_xtra {
|
2023-11-24 05:32:00 +00:00
|
|
|
target="${1}"
|
|
|
|
setparams \
|
|
|
|
" env | ${env}" \
|
|
|
|
" live | ${live}" \
|
|
|
|
" data | ${data}"
|
|
|
|
for entry in "${@}" ; do
|
|
|
|
if [ "${target}" == 'menu' ] ; then
|
|
|
|
menuentry "${entry}" { nop }
|
|
|
|
else
|
|
|
|
echo "${entry}"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
unset entry
|
|
|
|
unset target
|
2023-11-10 19:09:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function grub_main {
|
2023-11-14 12:51:37 +00:00
|
|
|
echo '---'
|
2023-11-10 19:09:15 +00:00
|
|
|
ls
|
|
|
|
grub_list_const
|
|
|
|
grub_split
|
|
|
|
if [ ! "${data}" ] ; then
|
|
|
|
grub_list_info
|
|
|
|
grub_list_vars
|
|
|
|
grub_split
|
|
|
|
#
|
|
|
|
grub_fix
|
2023-11-11 15:36:57 +00:00
|
|
|
grub_init
|
2023-11-10 19:09:15 +00:00
|
|
|
for file in ${live}/source/*.sh ; do
|
|
|
|
source "${file}"
|
|
|
|
done
|
|
|
|
unset file
|
|
|
|
source "${live}/main.sh"
|
|
|
|
fi
|
|
|
|
grub_list_vars
|
|
|
|
grub_list_xtra
|
|
|
|
grub_split
|
|
|
|
grub_pause
|
|
|
|
}
|
|
|
|
|
|
|
|
function grub_pause {
|
|
|
|
echo -n "\
|
|
|
|
escape | "
|
2023-11-11 15:36:57 +00:00
|
|
|
sleep \
|
|
|
|
--interruptible \
|
|
|
|
--verbose \
|
2023-11-22 21:56:22 +00:00
|
|
|
"${pause}"
|
2023-11-10 19:09:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function grub_split {
|
2023-11-24 05:32:00 +00:00
|
|
|
target="${1}"
|
|
|
|
setparams \
|
|
|
|
' ---'
|
|
|
|
if [ "${target}" == 'menu' ] ; then
|
|
|
|
menuentry "${1}" { nop }
|
|
|
|
else
|
|
|
|
echo "${1}"
|
|
|
|
fi
|
2023-11-10 19:09:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
grub_main
|