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
/ich9utils/

View File

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