[coreboot] GRUB boot menu is not showing GRUB2

Nico Huber nico.huber at secunet.com
Wed Jun 7 15:22:30 CEST 2017

On 07.06.2017 14:52, Dhanasekar Jaganathan wrote:
> Hi Nico,
>> where do you expect to see the menu? a display? a serial console? In the
>> former case, I expect you have to add a Video BIOS to your coreboot.rom
>> (CONFIG_VGA_BIOS) and configure coreboot to run it (CONFIG_VGA_ROM_RUN).
>> If you use a discrete gfx card, you don't need to add the VBIOS, it
>> would be read from the card. In the latter case, GRUB has to be confi-
>> gured to use the serial port, as Mariusz pointed out.
>> I'm a little confused here, did you add an etc/grub.cfg to the CBFS? You
>> didn't say so but I wouldn't expect it to boot otherwise. If you have,
>> can you please share this grub.cfg.
> I am using a serial console for *DISPLAY*.
> I am not adding *grub.cfg* through *etc/grub.cfg*.
> When I booted the board with other vendor BIOS, I have copied*
> /boot/grub2/grub.cfg*  from fedora OS and using this grub.cfg in coreboot.
> I have mentioned the location of grub. cfg in menuconfig *(Payload ->
> Include GRUB2 runtime config file into ROM image). *

I see, that wasn't visible from your .config because you changed it from
GRUB2 to adding a simple elf payload. Just to make sure you understood
this correctly: This only points the coreboot build system to the file
and the file gets copied into CBFS as etc/grub.cfg during build. So in
this configuration, you have to rebuild your coreboot every time you
change the grub.cfg.

A more convenient solution would be to write a small intermediate
grub.cfg that just loads the real grub.cfg from disk. e.g. create
a new file called coreboot-grub.cfg with the single line:

    configfile (ahci0,1)/grub2/grub.cfg

and point the coreboot build to that coreboot-grub.cfg. I've guessed
the path from your current grub.cfg, I'm not 100% sure if it's correct.

> I have attached the same.
>>> In */boot/default/grub*, I have changed* GRUB_TIMEOUT = -1* ( which stops
>>> the system indefinitely at boot menu in GRUB2). Still system is not
>>> stopping at boot menu.
>> AFAIK, this file only works as input to `grub-mkconfig`. You'd still
>> have to generate a grub.cfg with it and configure the GRUB payload to
>> use it.
> when ever I modify */etc/defualt/grub*, I will run *grub2-mkconfig -o
> /boot/grub2/grub.cfg*.
> I forget to mention this in my previous mail.
>> You have set CONFIG_ROM_SIZE and CONFIG_CBFS_SIZE to the same value
>> (8MiB). This is wrong. coreboot shares the flash chip with other Intel
>> firmware components (Firmware Descriptor (IFD), ME firmware etc.). Be-
>> side other configuration, the IFD partitions the flash chip in regions.
>> coreboot's CBFS lives in the BIOS region and should be at most of this
>> region's size. You can decode the descriptor with `ifdtool -d ...` (you
>> can find it in util/ifdtool/ in the coreboot source).
> After setting, CONFIG_CBFS_SIZE = 6MB,  I can able to build coreboot and I
> am not getting below issue,
>  *lzma: Decodeing error = 1*
>  *Payload not loaded.*
> Is it correct to set 6MB size for CONFIG_CBFS_SIZE?.
> Please correct me, If I am wrong and Provide your suggestions.

It has to match your firmware descriptor, I can't tell you what it's set
to. In other words, don't ask me, ask `ifdtool`. The following should
work with the original, vendor ROM:

  $ make -C util/ifdtool/
  $ util/ifdtool/ifdtool -d /path/to/vendor.rom | grep \(BIOS\)


More information about the coreboot mailing list