[Barrelfish-users] How to Patch grub-0.97 to load 64 bit Barrelfish image!!

Kornilios Kourtis kornilios.kourtis at inf.ethz.ch
Wed Nov 27 12:57:14 CET 2013

Hi Jiban,

On Wed, Nov 27, 2013 at 02:11:07AM -0800, jiban sarma wrote:
> Hi  All,
> I have been working on configuring barrelfish for PXE/TFTP booting.  I am
> facing the following issues during the configuration of the set up. 
> I mainly faced issues building GRUB-0.97 code from source to support network
> booting and to load 64-bit ELF image. I am using Ubuntu 10.04 system where i
> tried to compile the  GRUB-0.97 code with gcc-4.4.3 compiler. But GRUB code can
> be compiled with the gcc-3.x or some lower version of gcc-4.x . So, I tried
> installing gcc-3.3 but it was extremely difficult to install and build gcc from
> source on ubuntu-10.04, as most of the packages, dependencies required to build
> gcc 3.3 are not available. So to build grub-0.97 with gcc-4 compiler i got a
> patch (http://wiki.tudos.org/Building_patched_grub) so i patched the grub code
> and it got compile successfully with gcc-4.4.3 compiler. I put the pxegrub in
> my pxe server and it worked fine as expected. I can see the barrelfish grub
> menu and also can type commands from grub prompt. Boot process has started well
> but finally halted with this error message  " unrelocated kernel address". I
> think it happens because GRUB can't load 64 bit Image. Please correct me if I
> am wrong.
> So I decided to patch the GRUB-code again to load 64 bit image (https://
> savannah.gnu.org/bugs/?17963). The patched run successfully. But when i copied
> the "pxegrub" in my server it exactly stopped with the same error message " 
> unrelocated kernel address". So I come to a conclusion that since i already
> patched the GRUB to build with gcc-4 compiler because of that the second patch
> to load 64 bit image might not work.
> How can I build grub-0.97 from source on ubuntu 10.04 and patch it to support
> both for network and to load 64 bit ELF image? Is there any "pxegrub" binary
> available that I can use quickly to complete my setup?  I am using broadcom
> ethernet card which supports gt3 driver.

I'm afraid I have not tried the above, so I'm unable to give specific
instructions on how to do it.

Another approach, however, would be to use the elver pre-loader which can be
found in the tools directory. If you use elver you do not need to patch grub to
support 64-bit kernels.

The corresponding menu.lst file, in that case, should look like this:
| title   Barrelfish
| root    (nd)
| kernel  /x86_64/sbin/elver loglevel=4
| module  /x86_64/sbin/cpu loglevel=4
| module  /x86_64/sbin/init

Have a look at usr/examples/xmpl-hello/menu.lst, for a more complete example.


Kornilios Kourtis

More information about the Barrelfish-users mailing list