Grub2 and Splash
A message that is not in the archive (sent off-list or not yet received): [email protected]
Forgot to copy the list
-------- Forwarded Message --------
Subject: Re: [Buildroot] Grub2 and Splash
Date: Wed, 18 Feb 2015 11:44:03 -0600
From: Steve Kenton <[email protected]>
To: Thomas Petazzoni <[email protected]>
Quoted 10 lines · Thomas Petazzoni
Dear Steve Kenton,
Quoted 3 lines · Steve Kenton
Looking into adding a splash screen to my grub2 menu.
Cobbled together the one below using font from my build host and it works. Trying to build unicode.pf2 with buildroot immediately ran into snag with freetype.Could you please be more specific than "ran into snag" ? Which error messages and issues, when trying what exactly ?
Changed ~/buildroot-2015.02-rc2/boot/grub2/grub2.mk to enable grub-mkfont and added dependency on freetype after first failure for missing freetype include
GRUB2_CONF_OPTS = \ --target=$(GRUB2_TARGET) \ --with-platform=$(GRUB2_PLATFORM) \ --enable-grub-mkfont \ --enable-efiemu=no \ --enable-liblzma=no \ --enable-device-mapper=no \ --enable-libzfs=no \ --disable-werror
GRUB2_DEPENDENCIES += freetype
Re-ran make grub2-reconfigure
...
./config.status --file=00_header:util/grub.d/00_header.in util/grub-mkfont.c:42:30: fatal error: freetype/ftsynth.h: No such file or directory
#include <freetype/ftsynth.h>
^compilation terminated.
Quoted 8 lines
Quoted 4 lines
Finally RTFM and realized how special the grub2 build is.
Is there a reason that grub2 is not just built as a regular host package?Because grub2 is kind of special: it needs to build both some things for the target, and some things for the host. And there are some explanations about it in grub2.mk:
Yes, looked at that and ./configure --help for grub2, saw that it clearly defined System types:
--build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST]
Quoted 7 lines
===
# Grub2 is kind of special: it considers CC, LD and so on to be the
# tools to build the native tools (i.e to be executed on the build # machine), and uses TARGET_CC, TARGET_CFLAGS, TARGET_CPPFLAGS to # build the bootloader itself.
Understand, two tool chains required. Still trying to understand their use in buildroot scripts
Quoted 8 lines
GRUB2_CONF_ENV = \
$(HOST_CONFIGURE_OPTS) \
CPP="$(HOSTCC) -E" \
TARGET_CC="$(TARGET_CC)" \
TARGET_CFLAGS="$(TARGET_CFLAGS)" \
TARGET_CPPFLAGS="$(TARGET_CPPFLAGS)"Quoted 6 lines
===
And it is actually more logical for grub2 to be a target package: the main purpose of grub2 is to have a bootloader on the target, much like U-Boot or Barebox. The fact that in addition Grub2 provides a bunch of host utilities is kind of a "detail".
Hmm, not sure I agree about the "detail". As currently built some of the grub scripts such as grub-mkconfig would try to run other scripts residing in the build hosts /usr directory not the version in buildroot $HOST_DIR or $TARGET_DIR I am of the opinion that if we build it it should work :-) Currently the instructions to install grub2 are more complicated then "install-grub ..."
Steve