diff mbox

[11/12] grub2: prepare and install El Torito image

Message ID 1433430330-2166-12-git-send-email-thomas.petazzoni@free-electrons.com
State Superseded
Headers show

Commit Message

Thomas Petazzoni June 4, 2015, 3:05 p.m. UTC
In order to support ISO9660 bootable images that rely on Grub 2, this
commit modifies thr Grub 2 makefile to generate and install an El
Torito image. Such an image is simply produced by concatenating the
cdboot.img provided by Grub 2, and the Grub 2 image generated by
Buildroot using grub-mkimage.

Since this action is so simple and cost-free, we don't bother adding a
Grub 2 sub-option for that, and simply generate the El Torito image
unconditionally.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 boot/grub2/grub2.mk | 2 ++
 1 file changed, 2 insertions(+)

Comments

Samuel Martin June 5, 2015, 1:21 p.m. UTC | #1
Thomas, all,

On Thu, Jun 4, 2015 at 5:05 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> In order to support ISO9660 bootable images that rely on Grub 2, this
> commit modifies thr Grub 2 makefile to generate and install an El
s/thr/the/

> Torito image. Such an image is simply produced by concatenating the
> cdboot.img provided by Grub 2, and the Grub 2 image generated by
> Buildroot using grub-mkimage.
>
> Since this action is so simple and cost-free, we don't bother adding a
> Grub 2 sub-option for that, and simply generate the El Torito image
> unconditionally.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Reviewed-by: Samuel Martin <s.martin49@gmail.com>

Regards,
Yann E. MORIN June 5, 2015, 10:55 p.m. UTC | #2
Thomas, All,

On 2015-06-04 17:05 +0200, Thomas Petazzoni spake thusly:
> In order to support ISO9660 bootable images that rely on Grub 2, this
> commit modifies thr Grub 2 makefile to generate and install an El
> Torito image. Such an image is simply produced by concatenating the
> cdboot.img provided by Grub 2, and the Grub 2 image generated by
> Buildroot using grub-mkimage.
> 
> Since this action is so simple and cost-free, we don't bother adding a
> Grub 2 sub-option for that, and simply generate the El Torito image
> unconditionally.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
>  boot/grub2/grub2.mk | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/boot/grub2/grub2.mk b/boot/grub2/grub2.mk
> index 697f0ad..dd04bb3 100644
> --- a/boot/grub2/grub2.mk
> +++ b/boot/grub2/grub2.mk
> @@ -76,6 +76,8 @@ define GRUB2_IMAGE_INSTALLATION
>  		-p "$(GRUB2_PREFIX)" \
>  		$(if $(GRUB2_BUILTIN_CONFIG),-c $(GRUB2_BUILTIN_CONFIG)) \
>  		$(GRUB2_BUILTIN_MODULES)
> +	cat $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/cdboot.img \
> +		$(GRUB2_IMAGE) > $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/grub-eltorito.img

Purely cosmetic comment: since we anyway have long lines, I'd rather see
the two input file on the same line, like:

    cat $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/cdboot.img $(GRUB2_IMAGE) \
        > $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/grub-eltorito.img

Otherwise:

Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

>  	mkdir -p $(dir $(GRUB2_CFG))
>  	$(INSTALL) -D -m 0644 boot/grub2/grub.cfg $(GRUB2_CFG)
>  endef
> -- 
> 2.1.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Yann E. MORIN June 5, 2015, 11:09 p.m. UTC | #3
Thomas, All,

On 2015-06-04 17:05 +0200, Thomas Petazzoni spake thusly:
> In order to support ISO9660 bootable images that rely on Grub 2, this
> commit modifies thr Grub 2 makefile to generate and install an El
> Torito image. Such an image is simply produced by concatenating the
> cdboot.img provided by Grub 2, and the Grub 2 image generated by
> Buildroot using grub-mkimage.
> 
> Since this action is so simple and cost-free, we don't bother adding a
> Grub 2 sub-option for that, and simply generate the El Torito image
> unconditionally.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
>  boot/grub2/grub2.mk | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/boot/grub2/grub2.mk b/boot/grub2/grub2.mk
> index 697f0ad..dd04bb3 100644
> --- a/boot/grub2/grub2.mk
> +++ b/boot/grub2/grub2.mk
> @@ -76,6 +76,8 @@ define GRUB2_IMAGE_INSTALLATION
>  		-p "$(GRUB2_PREFIX)" \
>  		$(if $(GRUB2_BUILTIN_CONFIG),-c $(GRUB2_BUILTIN_CONFIG)) \
>  		$(GRUB2_BUILTIN_MODULES)
> +	cat $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/cdboot.img \
> +		$(GRUB2_IMAGE) > $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/grub-eltorito.img

In retrospect, I think you should install that in $(BINARIES_DIR), like
is done for $(GRUB2_IMAGE), not in $(HOST_DIR).

Regards,
Yann E. MORIN.

>  	mkdir -p $(dir $(GRUB2_CFG))
>  	$(INSTALL) -D -m 0644 boot/grub2/grub.cfg $(GRUB2_CFG)
>  endef
> -- 
> 2.1.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Thomas Petazzoni June 6, 2015, 12:57 a.m. UTC | #4
Dear Yann E. MORIN,

On Sat, 6 Jun 2015 01:09:11 +0200, Yann E. MORIN wrote:

> > diff --git a/boot/grub2/grub2.mk b/boot/grub2/grub2.mk
> > index 697f0ad..dd04bb3 100644
> > --- a/boot/grub2/grub2.mk
> > +++ b/boot/grub2/grub2.mk
> > @@ -76,6 +76,8 @@ define GRUB2_IMAGE_INSTALLATION
> >  		-p "$(GRUB2_PREFIX)" \
> >  		$(if $(GRUB2_BUILTIN_CONFIG),-c $(GRUB2_BUILTIN_CONFIG)) \
> >  		$(GRUB2_BUILTIN_MODULES)
> > +	cat $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/cdboot.img \
> > +		$(GRUB2_IMAGE) > $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/grub-eltorito.img
> 
> In retrospect, I think you should install that in $(BINARIES_DIR), like
> is done for $(GRUB2_IMAGE), not in $(HOST_DIR).

Well, I had a reason to install it in HOST_DIR rather than
BINARIES_DIR. Since I'm producing this image unconditionally, even if
the user is not interested in ISO9660, I didn't want to clutter
BINARIES_DIR with this file, which would appear as soon as the user
enables grub2. So I preferred to install it together with all the other
"internal" Grub images in HOST_DIR, and pick it up from there in the
iso9660.mk logic.

Now, if you think cluttering BINARIES_DIR with this file only useful
for ISO booting as soon as Grub 2 is enabled is fine, then I'll happily
change it.

Thanks for the review!

Thomas
Yann E. MORIN June 6, 2015, 9:31 a.m. UTC | #5
Thomas, All,

On 2015-06-06 02:57 +0200, Thomas Petazzoni spake thusly:
> On Sat, 6 Jun 2015 01:09:11 +0200, Yann E. MORIN wrote:
> 
> > > diff --git a/boot/grub2/grub2.mk b/boot/grub2/grub2.mk
> > > index 697f0ad..dd04bb3 100644
> > > --- a/boot/grub2/grub2.mk
> > > +++ b/boot/grub2/grub2.mk
> > > @@ -76,6 +76,8 @@ define GRUB2_IMAGE_INSTALLATION
> > >  		-p "$(GRUB2_PREFIX)" \
> > >  		$(if $(GRUB2_BUILTIN_CONFIG),-c $(GRUB2_BUILTIN_CONFIG)) \
> > >  		$(GRUB2_BUILTIN_MODULES)
> > > +	cat $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/cdboot.img \
> > > +		$(GRUB2_IMAGE) > $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/grub-eltorito.img
> > 
> > In retrospect, I think you should install that in $(BINARIES_DIR), like
> > is done for $(GRUB2_IMAGE), not in $(HOST_DIR).
> 
> Well, I had a reason to install it in HOST_DIR rather than
> BINARIES_DIR. Since I'm producing this image unconditionally, even if
> the user is not interested in ISO9660, I didn't want to clutter
> BINARIES_DIR with this file, which would appear as soon as the user
> enables grub2. So I preferred to install it together with all the other
> "internal" Grub images in HOST_DIR, and pick it up from there in the
> iso9660.mk logic.
> 
> Now, if you think cluttering BINARIES_DIR with this file only useful
> for ISO booting as soon as Grub 2 is enabled is fine, then I'll happily
> change it.

Well, yes, I'd prefer that's what we do, for these reasons:

  - first, that file is really small,

  - second, we already do that for other bootloaders (like
    rpi-firmware),

  - finally, we never said we only installed only the strictly
    minimum set of files,

  - if the user really does not want it, there's still the
    post-build scripts to remove that extra file.

> Thanks for the review!

My pleasure! :-)

Regards,
Yann E. MORIN.
diff mbox

Patch

diff --git a/boot/grub2/grub2.mk b/boot/grub2/grub2.mk
index 697f0ad..dd04bb3 100644
--- a/boot/grub2/grub2.mk
+++ b/boot/grub2/grub2.mk
@@ -76,6 +76,8 @@  define GRUB2_IMAGE_INSTALLATION
 		-p "$(GRUB2_PREFIX)" \
 		$(if $(GRUB2_BUILTIN_CONFIG),-c $(GRUB2_BUILTIN_CONFIG)) \
 		$(GRUB2_BUILTIN_MODULES)
+	cat $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/cdboot.img \
+		$(GRUB2_IMAGE) > $(HOST_DIR)/usr/lib/grub/$(GRUB2_TUPLE)/grub-eltorito.img
 	mkdir -p $(dir $(GRUB2_CFG))
 	$(INSTALL) -D -m 0644 boot/grub2/grub.cfg $(GRUB2_CFG)
 endef