grub классически использует систему "MBR gap".
первый кластер содержит классический boot.img размером 442 байта, в который ничего "большого" не впихнешь.
поэтому после идет "разрыв" между первым кластером и началом первого раздела (хватает пары-тройки мегабайт) в который вписывается
core.img бинарный код, динамически компилируемый грубом во время grub-install из своих модулей, для загрузки с текущего набора фс и разделов.
т.е. в boot.img содержится только загрузчик core.img.
а размер core.img уже не ограничен 442 байтами и может многое чего хитрого загрузить.
если у тебя gpt, то там вообще спец.раздел с загрузчиком, туда много чего умного впихнуть можно.