grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] grub-mkelfimage


From: Robert Millan
Subject: Re: [PATCH] grub-mkelfimage
Date: Thu, 14 Aug 2008 21:04:45 +0200
User-agent: Mutt/1.5.13 (2006-08-11)

Committed.

On Sun, Aug 03, 2008 at 11:04:35PM +0200, Robert Millan wrote:
> 
> The elf version of grub-mkimage is multiplatform, so it makes no sense to
> keep it as arch-specific in the build system IMHO.
> 
> This patch renames it to grub-mkelfimage, and arranges the build system &
> headers so that its build parameters are shared between i386-ieee1275 and
> i386-coreboot (and in the future, among powerpc-* platforms).
> 
> Aside from making life easier for distributors (less duplicated space), the
> big advantage in doing this is that one can now install grub-coreboot at
> the same time as grub-pc without causing a file conflict.
> 
> -- 
> Robert Millan
> 
>   The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
>   how) you may access your data; but nobody's threatening your freedom: we
>   still allow you to remove your data and not access it at all."

> Index: conf/common.rmk
> ===================================================================
> --- conf/common.rmk   (revision 1767)
> +++ conf/common.rmk   (working copy)
> @@ -1,5 +1,11 @@
>  # -*- makefile -*-
>  
> +# For grub-mkelfimage.
> +bin_UTILITIES += grub-mkelfimage
> +grub_mkelfimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \
> +     util/resolve.c
> +util/elf/grub-mkimage.c_DEPENDENCIES = Makefile
> +
>  # For grub-probe.
>  sbin_UTILITIES += grub-probe
>  util/grub-probe.c_DEPENDENCIES = grub_probe_init.h
> Index: conf/i386-coreboot.rmk
> ===================================================================
> --- conf/i386-coreboot.rmk    (revision 1767)
> +++ conf/i386-coreboot.rmk    (working copy)
> @@ -39,18 +39,11 @@
>       /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1)
>  
>  # Utilities.
> -bin_UTILITIES = grub-mkimage
>  sbin_UTILITIES = grub-mkdevicemap
>  ifeq ($(enable_grub_emu), yes)
>  sbin_UTILITIES += grub-emu
>  endif
>  
> -# For grub-mkimage.
> -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \
> -     util/resolve.c
> -grub_mkimage_LDFLAGS = $(LIBLZO)
> -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile
> -
>  # For grub-mkdevicemap.
>  grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c               
> \
>       util/i386/get_disk_name.c
> Index: conf/powerpc-ieee1275.rmk
> ===================================================================
> --- conf/powerpc-ieee1275.rmk (revision 1767)
> +++ conf/powerpc-ieee1275.rmk (working copy)
> @@ -28,17 +28,11 @@
>  pkglib_PROGRAMS = kernel.elf
>  
>  # Utilities.
> -bin_UTILITIES = grub-mkimage
>  sbin_UTILITIES = grub-mkdevicemap
>  ifeq ($(enable_grub_emu), yes)
>  sbin_UTILITIES += grub-emu
>  endif
>   
> -# For grub-mkimage.
> -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \
> -        util/resolve.c 
> -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile
> -
>  # For grub-mkdevicemap.
>  grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c               
> \
>       util/ieee1275/get_disk_name.c
> Index: conf/i386-ieee1275.rmk
> ===================================================================
> --- conf/i386-ieee1275.rmk    (revision 1767)
> +++ conf/i386-ieee1275.rmk    (working copy)
> @@ -40,18 +40,11 @@
>       /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1)
>  
>  # Utilities.
> -bin_UTILITIES = grub-mkimage
>  sbin_UTILITIES = grub-mkdevicemap
>  ifeq ($(enable_grub_emu), yes)
>  sbin_UTILITIES += grub-emu
>  endif
>  
> -# For grub-mkimage.
> -grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \
> -     util/resolve.c
> -grub_mkimage_LDFLAGS = $(LIBLZO)
> -util/elf/grub-mkimage.c_DEPENDENCIES = Makefile
> -
>  # For grub-mkdevicemap.
>  grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c               
> \
>       util/i386/get_disk_name.c
> Index: kern/ieee1275/init.c
> ===================================================================
> --- kern/ieee1275/init.c      (revision 1767)
> +++ kern/ieee1275/init.c      (working copy)
> @@ -30,6 +30,7 @@
>  #include <grub/time.h>
>  #include <grub/machine/console.h>
>  #include <grub/machine/kernel.h>
> +#include <grub/cpu/kernel.h>
>  #include <grub/ieee1275/ofdisk.h>
>  #include <grub/ieee1275/ieee1275.h>
>  
> Index: kern/i386/ieee1275/startup.S
> ===================================================================
> --- kern/i386/ieee1275/startup.S      (revision 1767)
> +++ kern/i386/ieee1275/startup.S      (working copy)
> @@ -19,9 +19,9 @@
>  #define ASM_FILE     1
>  
>  #include <grub/symbol.h>
> -#include <grub/machine/kernel.h>
>  #include <grub/machine/memory.h>
>  #include <grub/cpu/linux.h>
> +#include <grub/cpu/kernel.h>
>  #include <multiboot.h>
>  #include <multiboot2.h>
>  
> @@ -45,7 +45,7 @@
>        *  This is a special data area at a fixed offset from the beginning.
>        */
>  
> -     . = EXT_C(start) + GRUB_KERNEL_MACHINE_PREFIX
> +     . = EXT_C(start) + GRUB_KERNEL_CPU_PREFIX
>  
>  VARIABLE(grub_prefix)
>       /* to be filled by grub-mkimage */
> @@ -54,7 +54,7 @@
>        *  Leave some breathing room for the prefix.
>        */
>  
> -     . = EXT_C(start) + GRUB_KERNEL_MACHINE_DATA_END
> +     . = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END
>  
>  codestart:
>       movl %eax, EXT_C(grub_ieee1275_entry_fn)
> Index: kern/i386/linuxbios/startup.S
> ===================================================================
> --- kern/i386/linuxbios/startup.S     (revision 1767)
> +++ kern/i386/linuxbios/startup.S     (working copy)
> @@ -19,9 +19,9 @@
>  #define ASM_FILE     1
>  
>  #include <grub/symbol.h>
> -#include <grub/machine/kernel.h>
>  #include <grub/machine/memory.h>
>  #include <grub/cpu/linux.h>
> +#include <grub/cpu/kernel.h>
>  #include <multiboot.h>
>  #include <multiboot2.h>
>  
> @@ -44,7 +44,7 @@
>        *  This is a special data area at a fixed offset from the beginning.
>        */
>  
> -     . = EXT_C(start) + GRUB_KERNEL_MACHINE_PREFIX
> +     . = EXT_C(start) + GRUB_KERNEL_CPU_PREFIX
>  
>  VARIABLE(grub_prefix)
>       /* to be filled by grub-mkimage */
> @@ -53,7 +53,7 @@
>        *  Leave some breathing room for the prefix.
>        */
>  
> -     . = EXT_C(start) + GRUB_KERNEL_MACHINE_DATA_END
> +     . = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END
>  
>  #if 0
>  /*
> Index: kern/i386/linuxbios/init.c
> ===================================================================
> --- kern/i386/linuxbios/init.c        (revision 1767)
> +++ kern/i386/linuxbios/init.c        (working copy)
> @@ -33,6 +33,7 @@
>  #include <grub/time.h>
>  #include <grub/symbol.h>
>  #include <grub/cpu/io.h>
> +#include <grub/cpu/kernel.h>
>  
>  #define GRUB_FLOPPY_REG_DIGITAL_OUTPUT               0x3f2
>  
> Index: include/grub/powerpc/ieee1275/kernel.h
> ===================================================================
> --- include/grub/powerpc/ieee1275/kernel.h    (revision 1767)
> +++ include/grub/powerpc/ieee1275/kernel.h    (working copy)
> @@ -21,13 +21,6 @@
>  
>  #include <grub/symbol.h>
>  
> -#define GRUB_MOD_ALIGN 0x1000
> -
> -/* Minimal gap between _end and the start of the modules.  It's a hack
> -   for PowerMac to prevent "CLAIM failed" error.  The real fix is to
> -   rewrite grub-mkimage to generate valid ELF files.  */
> -#define GRUB_MOD_GAP 0x8000
> -
>  #ifndef ASM_FILE
>  
>  void EXPORT_FUNC (grub_reboot) (void);
> Index: include/grub/powerpc/kernel.h
> ===================================================================
> --- include/grub/powerpc/kernel.h     (revision 0)
> +++ include/grub/powerpc/kernel.h     (revision 0)
> @@ -0,0 +1,33 @@
> +/*
> + *  GRUB  --  GRand Unified Bootloader
> + *  Copyright (C) 2005,2006,2007,2008  Free Software Foundation, Inc.
> + *
> + *  GRUB is free software: you can redistribute it and/or modify
> + *  it under the terms of the GNU General Public License as published by
> + *  the Free Software Foundation, either version 3 of the License, or
> + *  (at your option) any later version.
> + *
> + *  GRUB is distributed in the hope that it will be useful,
> + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *  GNU General Public License for more details.
> + *
> + *  You should have received a copy of the GNU General Public License
> + *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#ifndef GRUB_KERNEL_CPU_HEADER
> +#define GRUB_KERNEL_CPU_HEADER       1
> +
> +#define GRUB_MOD_ALIGN 0x1000
> +
> +/* Minimal gap between _end and the start of the modules.  It's a hack
> +   for PowerMac to prevent "CLAIM failed" error.  The real fix is to
> +   rewrite grub-mkimage to generate valid ELF files.  */
> +#define GRUB_MOD_GAP 0x8000
> +
> +/* prefix not supported on powerpc yet.  */
> +#define GRUB_KERNEL_CPU_PREFIX       0
> +#define GRUB_KERNEL_CPU_DATA_END     0
> +
> +#endif
> Index: include/grub/i386/ieee1275/kernel.h
> ===================================================================
> --- include/grub/i386/ieee1275/kernel.h       (revision 1767)
> +++ include/grub/i386/ieee1275/kernel.h       (working copy)
> @@ -1,4 +1 @@
>  #include <grub/powerpc/ieee1275/kernel.h>
> -
> -#define GRUB_KERNEL_MACHINE_PREFIX   0x2
> -#define GRUB_KERNEL_MACHINE_DATA_END 0x42
> Index: include/grub/i386/kernel.h
> ===================================================================
> --- include/grub/i386/kernel.h        (revision 0)
> +++ include/grub/i386/kernel.h        (revision 0)
> @@ -0,0 +1,30 @@
> +/*
> + *  GRUB  --  GRand Unified Bootloader
> + *  Copyright (C) 2005,2006,2007,2008  Free Software Foundation, Inc.
> + *
> + *  GRUB is free software: you can redistribute it and/or modify
> + *  it under the terms of the GNU General Public License as published by
> + *  the Free Software Foundation, either version 3 of the License, or
> + *  (at your option) any later version.
> + *
> + *  GRUB is distributed in the hope that it will be useful,
> + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *  GNU General Public License for more details.
> + *
> + *  You should have received a copy of the GNU General Public License
> + *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#ifndef GRUB_KERNEL_CPU_HEADER
> +#define GRUB_KERNEL_CPU_HEADER       1
> +
> +#define GRUB_MOD_ALIGN 0x1000
> +
> +/* Non-zero value is only needed for PowerMacs.  */
> +#define GRUB_MOD_GAP 0x0
> +
> +#define GRUB_KERNEL_CPU_PREFIX       0x2
> +#define GRUB_KERNEL_CPU_DATA_END     0x42
> +
> +#endif
> Index: include/grub/i386/coreboot/kernel.h
> ===================================================================
> --- include/grub/i386/coreboot/kernel.h       (revision 1767)
> +++ include/grub/i386/coreboot/kernel.h       (working copy)
> @@ -21,16 +21,8 @@
>  
>  #include <grub/symbol.h>
>  
> -#define GRUB_MOD_ALIGN 0x1000
> -
> -/* Non-zero value is only needed for some IEEE-1275 platforms.  */
> -#define GRUB_MOD_GAP 0
> -
>  #ifndef ASM_FILE
>  extern char grub_prefix[];
>  #endif
>  
> -#define GRUB_KERNEL_MACHINE_PREFIX   0x2
> -#define GRUB_KERNEL_MACHINE_DATA_END 0x42
> -
>  #endif /* ! GRUB_KERNEL_MACHINE_HEADER */
> Index: util/ieee1275/grub-install.in
> ===================================================================
> --- util/ieee1275/grub-install.in     (revision 1767)
> +++ util/ieee1275/grub-install.in     (working copy)
> @@ -34,7 +34,7 @@
>  address@hidden@
>  pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed 
> ${transform}`
>  
> -grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}`
> +grub_mkimage=${bindir}/`echo grub-mkelfimage | sed ${transform}`
>  grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}`
>  grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
>  rootdir=
> @@ -182,7 +182,7 @@
>  modules="$modules $fs_module $partmap_module $devabstraction_module"
>  
>  # Now perform the installation.
> -"$grub_mkimage" --output=${grubdir}/grub $modules || exit 1
> +"$grub_mkimage" --directory=${pkglibdir} --output=${grubdir}/grub $modules 
> || exit 1
>  
>  if test $update_nvram = yes; then
>      set $ofpathname dummy
> Index: util/elf/grub-mkimage.c
> ===================================================================
> --- util/elf/grub-mkimage.c   (revision 1767)
> +++ util/elf/grub-mkimage.c   (working copy)
> @@ -30,7 +30,7 @@
>  #include <grub/util/misc.h>
>  #include <grub/util/resolve.h>
>  #include <grub/kernel.h>
> -#include <grub/machine/kernel.h>
> +#include <grub/cpu/kernel.h>
>  
>  #define GRUB_IEEE1275_NOTE_NAME "PowerPC"
>  #define GRUB_IEEE1275_NOTE_TYPE 0x1275
> @@ -297,9 +297,9 @@
>  
>    if (prefix)
>      {
> -      if (GRUB_KERNEL_MACHINE_PREFIX + strlen (prefix) + 1 > 
> GRUB_KERNEL_MACHINE_DATA_END)
> +      if (GRUB_KERNEL_CPU_PREFIX + strlen (prefix) + 1 > 
> GRUB_KERNEL_CPU_DATA_END)
>          grub_util_error ("prefix too long");
> -      grub_util_write_image_at (prefix, strlen (prefix) + 1, first_segment + 
> GRUB_KERNEL_MACHINE_PREFIX, out);
> +      grub_util_write_image_at (prefix, strlen (prefix) + 1, first_segment + 
> GRUB_KERNEL_CPU_PREFIX, out);
>      }
>  
>    free (phdrs);

> _______________________________________________
> Grub-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/grub-devel


-- 
Robert Millan

  The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
  how) you may access your data; but nobody's threatening your freedom: we
  still allow you to remove your data and not access it at all."




reply via email to

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