help-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Possible to Embed GRUB Font File into Binary?


From: Andrey Borzenkov
Subject: Re: Possible to Embed GRUB Font File into Binary?
Date: Thu, 3 Jul 2014 22:17:58 +0400

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

В Thu, 26 Jun 2014 13:03:58 -0400
SevenBits <address@hidden> пишет:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 06/22/2014 10:44 AM, Andrey Borzenkov wrote:
> > В Sat, 21 Jun 2014 12:01:31 -0400 SevenBits
> > <address@hidden> пишет:
> > 
> >> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
> > 
> >> On 06/01/2014 11:43 AM, Andrey Borzenkov wrote:
> >>> В Tue, 27 May 2014 19:28:39 -0400 SevenBits 
> >>> <address@hidden> пишет:
> >>> 
> >>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
> >>> 
> >>>> On 05/27/2014 03:48 PM, Jordan Uggla wrote:
> >>>>> On Sun, May 25, 2014 at 9:29 AM, SevenBits 
> >>>>> <address@hidden> wrote:
> >>>>>> Okay, so I've tried this out and I am having
> >>>>>> difficulties. GRUB does not seem to be able to access any
> >>>>>> of the commands in the included modules. When I boot into
> >>>>>> GRUB, a bunch of errors scrolls past on the screen too
> >>>>>> quickly to read (though they appear to be about missing
> >>>>>> commands) and then I end up in the GRUB normal prompt.
> >>>>>> 
> >>>>>> I've using the exact same configuration file that I'm
> >>>>>> using with grub-mkimage, except it doesn't work this
> >>>>>> time. I recall seeing something a while ago saying that
> >>>>>> modules are not automatically loaded when using
> >>>>>> grub-mkstandalone. If that's the case, then how would I
> >>>>>> activate them? When I get dropped into the prompt and
> >>>>>> type something like `insmod linux` it responds by saying
> >>>>>> that the module Linux was not found, even though I gave
> >>>>>> the command for it to be included.
> >>>>>> 
> >>>>>> I've attached my grub.cfg file that I'm using. Perhaps 
> >>>>>> someone could advise me as to what I'm doing wrong?
> >>>>> 
> >>>>> From your grub.cfg: set prefix=''
> >>>>> 
> >>>>> $prefix is the variable used by grub to find its modules,
> >>>>> by setting it to the empty string you prevent grub from
> >>>>> being able to find the modules.
> >>> 
> >>>> Oh, duh. Not sure how that got in there.
> >>> 
> >>>> I'm having some additional issues now. Essentially, when GRUB
> >>>> is loaded from a memdisk in this manner, the root is set to
> >>>> the memdisk. Which is fine, except for one problem. I need to
> >>>> be able to get the device that the EFI executable file is
> >>>> currently residing on, because I need to set up loopback for
> >>>> an ISO file located in the same directory as the GRUB EFI
> >>>> image. When I generated the image using grub-mkimage, the
> >>>> root was set to this device, so this was not a problem.
> >>> 
> >>>> This URL ( 
> >>>> https://wiki.archlinux.org/index.php/Grub#GRUB_Standalone ) 
> >>>> suggests using a variable called ${cmdpath} to solve this. 
> >>>> Unfortunately, the variable is not defined in my
> >>>> configuration.
> >>> 
> >>> 
> >>> Which grub version do you use? cmdpath is available post-2.00 
> >>> (should be in 2.02beta2).
> > 
> >> I am using the latest version of GRUB which I just pulled from
> >> the repository via git, and it does not seem to be present. Does
> >> this only work in code from another branch?
> > 
> > 
> > I just looked in grub 2.02~beta2 (both on i386-pc and i386-efi) and
> > it is present. Not that it is so useful on BIOS as it contains just
> > the hard disk, but on EFI it contains valid path to directory from
> > which grub was loaded (well, in case of CD-ROM it is a bit more 
> > complicated ...).
> > 
> > GNU GRUB  version 2.02~beta2
> > 
> > Minimal BASH-like line editing is supported. For the first word,
> > TAB lists possible command completions. Anywhere else TAB lists
> > possible device or file completions.
> > 
> > 
> > 
> > grub> set cmdpath=(cd0)/EFI/BOOT color_highlight=black/light-gray 
> > ...
> 
> Okay, something _really_ odd is going on here. When I use the
> grub-mkstandalone command to build a GRUB binary, cmdpath is not even
> set. Here's the output I get:
> 
>                            GNU GRUB  version 2.02~beta2
> 
>      Minimal BASH-like line editing is supported. For the first word,
>      TAB lists possible command completions. Anywhere else TAB lists
>      possible device or file completions.
> 
> grub> echo ${cmdpath}
> 
> grub> ${cmdpath}
> error: can't find command 'Z?'.
> grub>
> 
> Additionally, I can't view any of the file systems on any device due
> to unknown file system errors and missing modules. However, when I use
> the command grub-mkimage to build, everything works fine:
> 
>                            GNU GRUB  version 2.02~beta2
> 
>      Minimal BASH-like line editing is supported. For the first word,
>      TAB lists possible command completions. Anywhere else TAB lists
>      possible device or file completions.
> 
> grub> echo ${cmdpath}
> (hd0,gpt2)/efi/boot
> grub>
> 
> I'm using the same grub.cfg file for both builds. Here are the build
> commands:
> 
> ../grub-mkimage -d . -p . --format x86_64-efi --config
> '/home/user/Desktop/grub.cfg' -o ~/Desktop/boot.efi boot linux ext2
> normal configfile lspci ls loadenv help echo fat exfat hfs hfsplus
> part_msdos part_gpt part_apple multiboot multiboot2 terminal sleep
> loopback normal fixvideo iso9660 loadbios setvariable applesetos
> 
> ../grub-mkstandalone -d . -o ~/Desktop/boot.efi --format=x86_64-efi
> - --install-modules="boot linux ext2 normal configfile lspci ls loadenv
> help echo fat exfat hfs hfsplus part_msdos part_gpt part_apple
> multiboot multiboot2 terminal sleep loopback normal fixvideo iso9660
> loadbios setvariable applesetos"
> /boot/grub/fonts/myfont.pf2='/boot/grub/fonts/unicode.pf2'
> /boot/grub/grub.cfg='/home/user/Desktop/grub.cfg'
> 
> I've attached the grub.cfg as well. I'm pulling my hair out on this:
> shouldn't cmdpath work from grub-mkstandalone? Could someone advise me
> on what I'm doing wrong?
> 


I still cannot reproduce it. I built grub.efi (although 32 bit) without
fixvideo, loadbios, setvariable, applesetos which I do not have and
with not grub.cfg and it works as expected. Could you start with the
same configuration? To rule out grub.cfg for a start.

./grub-mkstandalone -d grub-core -o /tmp/grub.standalone.efi -O i386-efi - 
--install-modules="boot linux ext2 normal configfile lspci ls loadenv help echo 
fat exfat hfs hfsplus part_msdos part_gpt part_apple multiboot multiboot2 
terminal sleep loopback normal iso9660 "

I then created floppy image, placed this file as \EFI\BOOT\BOOTIA32.EFI
and it boots in KVM and cmdpath is set.

Actually I can built the same image for x86_64 so you could test it in
your case.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)

iEYEARECAAYFAlO1nlYACgkQR6LMutpd94z/dwCgwnjIUitOY5Grn/4W2U3hXA/F
QTwAoILQ/Ndt/U2f4IJRkCw1tGrfcXuC
=J1yz
-----END PGP SIGNATURE-----

reply via email to

[Prev in Thread] Current Thread [Next in Thread]