qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [ipxe-devel] EFI_PXE_BASE_CODE_PROTOCOL


From: Michael Brown
Subject: Re: [Qemu-devel] [ipxe-devel] EFI_PXE_BASE_CODE_PROTOCOL
Date: Thu, 10 Sep 2015 16:29:38 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0

On 10/09/15 16:20, Gerd Hoffmann wrote:
Thanks.  From my experiments, it seems that GRUB is using the hardcoded
path /efi/boot/grub.cfg to locate the configuration file, regardless of
where grub.efi was loaded from.

Hmm, probably depends on how you are building it.  There are also tools
like grub2-mknetdir and grub2-mkstandalone.  Pretty confusing :(

I'm using the binary shipped with RHEL.  The centos one should show the
same behavior.

https://ftp.fau.de/centos/7.1.1503/os/x86_64/EFI/BOOT/

That grubx64.efi binary makes no attempt to even look for an EFI_PXE_BASE_CODE_PROTOCOL. Here's the complete log of calls that it makes:

OpenProtocol ( PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, LoadedImage, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3f1aac00 ) -> 0x3e90349b
LocateProtocol ( ConsoleControl, 0x0 ) = NOT_FOUND ( 0x0 ) -> 0x3e90344b
LocateProtocol ( ConsoleControl, 0x0 ) = NOT_FOUND ( 0x0 ) -> 0x3e90344b
OpenProtocol ( ConIn, SimpleTextInputEx, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3ed3ffc0 ) -> 0x3e90349b LocateHandle ( ByProtocol, BlockIo, 0x0, 64 ) = 0 ( 32, { PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0), PciRoot(0x0)/Pci(0x1,0x0)/Floppy(0x0), PciRoot(0x0)/Pci(0x1,0x0)/Floppy(0x1), PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1) } ) -> 0x3e903478 OpenProtocol ( PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0), DevicePath, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3f398f98 ) -> 0x3e90349b OpenProtocol ( PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0), BlockIo, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3f3980a8 ) -> 0x3e90349b OpenProtocol ( PciRoot(0x0)/Pci(0x1,0x0)/Floppy(0x0), DevicePath, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3f372998 ) -> 0x3e90349b OpenProtocol ( PciRoot(0x0)/Pci(0x1,0x0)/Floppy(0x0), BlockIo, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3f35be68 ) -> 0x3e90349b OpenProtocol ( PciRoot(0x0)/Pci(0x1,0x0)/Floppy(0x1), DevicePath, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3f3726d8 ) -> 0x3e90349b OpenProtocol ( PciRoot(0x0)/Pci(0x1,0x0)/Floppy(0x1), BlockIo, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3f35c128 ) -> 0x3e90349b OpenProtocol ( PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1), DevicePath, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3ea75b48 ) -> 0x3e90349b OpenProtocol ( PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1), BlockIo, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3ea72e50 ) -> 0x3e90349b
LocateProtocol ( UgaDraw, 0x0 ) = NOT_FOUND ( 0x0 ) -> 0x3e90344b
LocateHandle ( ByProtocol, GraphicsOutput, 0x0, 64 ) = 0 ( 16, { PciRoot(0x0)/Pci(0x2,0x0)/AcpiAdr(0x80010100), ConOut } ) -> 0x3e903478 OpenProtocol ( PciRoot(0x0)/Pci(0x2,0x0)/AcpiAdr(0x80010100), GraphicsOutput, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3f3750b8 ) -> 0x3e90349b LocateHandle ( ByProtocol, SimpleNetwork, 0x0, 64 ) = 0 ( 8, { PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1) } ) -> 0x3e903478 OpenProtocol ( PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1), SimpleNetwork, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3ea755d0 ) -> 0x3e90349b OpenProtocol ( PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, LoadedImage, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3f1aac00 ) -> 0x3e90349b OpenProtocol ( PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1), DevicePath, PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/grubx64.efi, <NULL>, G ) = 0 ( 0x3ea75b48 ) -> 0x3e90349b

It's looking for and successfully opening our EFI_SIMPLE_NETWORK_PROTOCOL and it is able to obtain an IP address using "net_bootp". It doesn't look anywhere for EFI_PXE_BASE_CODE_PROTOCOL.

Do you have a set of instructions (starting from "git clone git://git.savannah.gnu.org/grub.git") which will allow me to rebuild that grubx64.efi binary from the source?

Thanks,

Michael



reply via email to

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