grub.cfg.sh

This commit is contained in:
Marc Beninca 2023-11-10 20:09:15 +01:00
parent 04ad78a6e1
commit c92a114205
10 changed files with 144 additions and 119 deletions

109
build.sh
View file

@ -55,7 +55,7 @@ source "${NAME%.*}.mod"
MEMDISK_ROOT='boot'
MEMDISK_DIRECTORY="${MEMDISK_ROOT}/grub"
MEMDISK_FILE="${MEMDISK_DIRECTORY}/grub.cfg"
MEMDISK_PUB="${MEMDISK_DIRECTORY}/grub.pub"
MEMDISK_PUB="${MEMDISK_DIRECTORY}/grub.pgp"
MEMDISK_ARCHIVE="${MEMDISK_ROOT}.tar"
UEFI_ROOT="${ROOT}/efi"
UEFI_DIRECTORY="${UEFI_ROOT}/boot"
@ -70,7 +70,7 @@ COMPRESSION='xz'
GRUB_ROOT="${ROOT}/boot/grub"
GRUB_CFG="${GRUB_ROOT}/grub.cfg"
GRUB_ENV="${ROOT}/grub.env"
GRUB_PUB="${GRUB_ROOT}/grub.pub"
GRUB_PUB="${GRUB_ROOT}/grub.pgp"
# wipe ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅
@ -175,102 +175,20 @@ mkdir --parents "${GRUB_ROOT}"
# grub / cfg ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅
echo -n "\
function list_vars {
echo -n \"\\
root | \${root}
prefix | \${prefix}
check_signatures | \${check_signatures}
\"
list_trusted
}
clear
ls
echo -n \"\\
---
cpu-platform | \${grub_cpu}-\${grub_platform}
cmdpath | \${cmdpath}
---
\"
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
echo ' *'
fi
list_vars
echo ' ---'
unset cmdroot
regexp --set cmdroot '^\((.*)\)' \"\${cmdpath}\"
echo \" cmdroot | \${cmdroot}\"
if [ \"\${cmdroot}\" != \"\${root}\" ] ; then
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.pub\"
function set_init {
data_uuid='${DATA}'
search --no-floppy --set data \\
--fs-uuid \"\${data_uuid}\"
#
unset esp
regexp --set esp '^\((.*)\)' \"\${prefix}\"
env=\"(\${esp})/grub.env\"
live=\"(\${esp})/${PROJECT}/live\"
#
for file in \${live}/source/*.sh ; do
source \"\${file}\"
done
unset file
}
set_init
source \"\${live}/main.sh\"
echo ' *'
list_vars
echo -n \"\\
---
escape | \"
sleep --interruptible --verbose 1000
" > "${GRUB_CFG}"
cp "${DIRECTORY}/grub.cfg.sh" "${GRUB_CFG}"
# grub / env ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅
echo -n "\
# GRUB Environment Block
#######################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
################################################################\
" > "${GRUB_ENV}"
grubenv="# GRUB Environment Block
live_name=${PROJECT}
data_uuid=${DATA}
"
grublen=${#grubenv}
while [ $grublen -lt 1024 ] ; do
grubenv="${grubenv}#"
grublen=${#grubenv}
done
echo -n "${grubenv}" > "${GRUB_ENV}"
# grub / fonts ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅
@ -313,7 +231,6 @@ for target in 'x86_64-efi' 'i386-pc' ; do
mkdir --parents "${GRUB_ROOT}/${target}"
cd "/usr/lib/grub/${target}"
for module in *.lst *.mod ; do
echo "${target}/${module}"
cp "${module}" "${GRUB_ROOT}/${target}"
done
done