Let the grub2 package take care of creating installable grub2 images,
this will allow creating grub2 images without first calling x86 image
generation recipe. Also as side effect, since those images are now
shared, it'll reduce the number of calling grub-mkimage.

Signed-off-by: Tomasz Maciej Nowak <[email protected]>
[rebase, adjusted commit title]
Signed-off-by: Paul Spooren <[email protected]>
---
 package/boot/grub2/Makefile                   | 31 +++++++++++++++++++
 .../boot/grub2/files}/grub-early.cfg          |  0
 target/linux/x86/image/Makefile               | 30 +++++-------------
 3 files changed, 39 insertions(+), 22 deletions(-)
 rename {target/linux/x86/image => package/boot/grub2/files}/grub-early.cfg 
(100%)

diff --git a/package/boot/grub2/Makefile b/package/boot/grub2/Makefile
index b26ef64ca4..980a6e372a 100644
--- a/package/boot/grub2/Makefile
+++ b/package/boot/grub2/Makefile
@@ -82,6 +82,37 @@ define Host/Configure
        $(Host/Configure/Default)
 endef
 
+define Host/Install
+       $(call Host/Install/Default)
+
+       $(INSTALL_DIR) $(STAGING_DIR_HOST)/lib/grub/grub2-generic
+       $(STAGING_DIR_HOST)/bin/grub-mkimage \
+               -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \
+               -p /boot/grub \
+               -O i386-pc \
+               -c ./files/grub-early.cfg \
+               -o $(STAGING_DIR_HOST)/lib/grub/grub2-generic/core.img \
+               at_keyboard biosdisk boot chain configfile ext2 linux ls 
part_msdos reboot serial vga
+
+       $(INSTALL_DIR) $(STAGING_DIR_HOST)/lib/grub/grub2-iso
+       $(STAGING_DIR_HOST)/bin/grub-mkimage \
+               -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \
+               -p /boot/grub \
+               -O i386-pc \
+               -c ./files/grub-early.cfg \
+               -o $(STAGING_DIR_HOST)/lib/grub/grub2-iso/eltorito.img \
+               at_keyboard biosdisk boot chain configfile iso9660 linux ls 
part_msdos reboot serial vga
+
+       $(INSTALL_DIR) $(STAGING_DIR_HOST)/lib/grub/grub2-legacy
+       $(STAGING_DIR_HOST)/bin/grub-mkimage \
+               -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \
+               -p /boot/grub \
+               -O i386-pc \
+               -c ./files/grub-early.cfg \
+               -o $(STAGING_DIR_HOST)/lib/grub/grub2-legacy/core.img \
+               biosdisk boot chain configfile ext2 linux ls part_msdos reboot 
serial vga
+endef
+
 define Package/grub2/install
        $(INSTALL_DIR) $(1)/usr/sbin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/grub-bios-setup $(1)/usr/sbin/
diff --git a/target/linux/x86/image/grub-early.cfg 
b/package/boot/grub2/files/grub-early.cfg
similarity index 100%
rename from target/linux/x86/image/grub-early.cfg
rename to package/boot/grub2/files/grub-early.cfg
diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile
index 373f2396b7..4e090bcf07 100644
--- a/target/linux/x86/image/Makefile
+++ b/target/linux/x86/image/Makefile
@@ -9,8 +9,7 @@ include $(INCLUDE_DIR)/image.mk
 
 export PATH=$(TARGET_PATH):/sbin
 
-GRUB2_MODULES = biosdisk boot chain configfile ext2 linux ls part_msdos reboot 
serial test vga
-GRUB2_MODULES_ISO = biosdisk boot chain configfile iso9660 linux ls part_msdos 
reboot serial test vga
+GRUB2_VARIANT =
 GRUB_TERMINALS =
 GRUB_SERIAL_CONFIG =
 GRUB_TERMINAL_CONFIG =
@@ -19,8 +18,9 @@ GRUB_CONSOLE_CMDLINE =
 USE_ATKBD = generic 64
 
 ifneq ($(strip $(foreach 
subtarget,$(USE_ATKBD),$(CONFIG_TARGET_x86_$(subtarget)))),)
-  GRUB2_MODULES += at_keyboard
-  GRUB2_MODULES_ISO += at_keyboard
+  GRUB2_VARIANT := generic
+else
+  GRUB2_VARIANT := legacy
 endif
 
 ifneq ($(CONFIG_GRUB_CONSOLE),)
@@ -63,14 +63,9 @@ ifneq ($(CONFIG_GRUB_IMAGES),)
        rm -fR $(KDIR)/root.grub $(KDIR)/grub2
        $(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2
        $(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz
-       grub-mkimage \
-               -p /boot/grub \
-               -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \
-               -o $(KDIR)/root.grub/boot/grub/core.img \
-               -O i386-pc \
-               -c ./grub-early.cfg \
-               $(GRUB2_MODULES)
-       $(CP) $(STAGING_DIR_HOST)/lib/grub/i386-pc/*.img 
$(KDIR)/root.grub/boot/grub/
+       $(CP) $(STAGING_DIR_HOST)/lib/grub/i386-pc/*.img \
+               $(STAGING_DIR_HOST)/lib/grub/grub2-$(strip 
$(GRUB2_VARIANT))/core.img \
+               $(KDIR)/grub2/
        echo '(hd0) $(BIN_DIR)/$(IMG_COMBINED)-$(1).img' > 
$(KDIR)/grub2/device.map
        sed \
                -e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
@@ -98,16 +93,7 @@ define Image/Build/iso
        rm -fR $(KDIR)/root.grub $(KDIR)/grub2
        $(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2
        $(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz
-       grub-mkimage \
-               -p /boot/grub \
-               -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \
-               -o $(KDIR)/grub2/eltorito.img \
-               -O i386-pc \
-               -c ./grub-early.cfg \
-               $(GRUB2_MODULES_ISO)
-       cat \
-               $(STAGING_DIR_HOST)/lib/grub/i386-pc/cdboot.img \
-               $(KDIR)/grub2/eltorito.img \
+               $(STAGING_DIR_HOST)/lib/grub/grub2-iso/eltorito.img \
                > $(KDIR)/root.grub/boot/grub/eltorito.img
        sed \
                -e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
-- 
2.25.1


_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to