Fix grub's slow boot

On many boards, grub takes a very long time to
search for a grub.cfg file on the disk.
The problem is the search_grub function which
takes a long time to complete.
I (vitali64) studied the grub.cfg from 2016 and
the grub.cfg from 2021 and optimized the
grub.cfg. It should be faster now.
fsdg20230625
Vitali64 2021-12-28 19:23:10 +01:00 committed by Leah Rowe
parent 7221782940
commit cff081c6db
2 changed files with 18 additions and 8 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
/grubdiff2016/
*~ *~
/TODO /TODO
/ich9utils/ /ich9utils/

View File

@ -47,16 +47,25 @@ function try_user_config {
} }
function search_grub { function search_grub {
echo -n "Attempting to load grub.cfg from: " echo -n "Attempting to load grub.cfg from: "
unset ddev # TODO : Find a better way to detect how many disks
if [ (${1}?) != "(${1}?)" ]; then # : are on the computer instead of hardcoding.
ddev=(${1}*) # Both raw and partitioned devices # FIXME: Does this work on all boards?
fi for i in 0 1 2 3 4 5 6 7 8 9 10 11; do
for i in ${ddev}; do # TODO : Find a better way to detect how many partitions
echo -n "${i} " # : are on the disk instead of hardcoding.
try_user_config "${i}" echo "\nTrying disk ${1}${i}"
for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
# MBR/GPT partitions
echo "\nTrying partiton ${part}"
try_user_config "(${1}${i},${part})"
done
# raw devices
echo "\nTrying to boot to a raw disk ..."
try_user_config "(${1}${i})"
echo # Insert newline
done done
echo # Insert newline
} }
function try_isolinux_config { function try_isolinux_config {
set root="${1}" set root="${1}"
for dir in '' /boot; do for dir in '' /boot; do