diff --git a/config/grub/config/grub.cfg b/config/grub/config/grub.cfg index df1556e9b663a38c8986c828f9a7cbcfb834a4da..018e38475b63b1eb1a8f435126ee56e7fb5bee3a 100644 --- a/config/grub/config/grub.cfg +++ b/config/grub/config/grub.cfg @@ -40,12 +40,52 @@ if [ -f (cbfsdisk)/keymap.gkb ]; then keymap (cbfsdisk)/keymap.gkb fi +# Default enums for non detectable medias. Override as you like, eventually. +set partnums="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20" +set medianums="20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0" + +# Loads into a variable all the medias from * +function mediadetect { + unset media_devlist + set media_devlist=* +} + +# Fills a variable containing possible partition list from a specified and previously detected media kind +function enum_tgt { + unset tgt_medias + for media_item in ${media_devlist}; do + for device_kind in ${1}; do + for num in $medianums; do + # If media number is an existent detected media + if [ $media_item == "($device_kind$num)" ]; then + # Add raw media + tgt_medias="${tgt_medias} (${device_kind}${num})" + # Add every possible partition + for part in ${partnums}; do + tgt_medias="${tgt_medias} (${device_kind}${num},${part})" + done + fi + done + done + done + echo $tgt_medias +} + +mediadetect + +menuentry "Media detection test" { +enum_tgt ata +enum_tgt ahci +set pager=1 +read +} + function try_user_grub_config { set root="${1}" # The @/... entries are for cases where the BTRFS filesystem is being used for dir in boot grub grub2 boot/grub boot/grub2 @/boot @/grub @/grub2 @/boot/grub @/boot/grub2; do - # In order to save time, we do not attempt anything on non existing directory. - if [ -d /"${dir}"/ ]; then + # In order to save time, we do not attempt anything on non existing directory. + if [ -d /"${dir}"/ ]; then for name in '' osboot_ autoboot_ libreboot_ coreboot_; do if [ -f /"${dir}"/"${name}"grub.cfg ]; then unset superusers