x86/grub2: move grub2 image creation to package
authorPaul Spooren <mail@aparcar.org>
Fri, 20 Mar 2020 10:10:54 +0000 (00:10 -1000)
committerDaniel Golle <daniel@makrotopia.org>
Sat, 21 Mar 2020 10:36:00 +0000 (10:36 +0000)
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 <tomek_n@o2.pl>
[rebase, adjusted commit title]
Signed-off-by: Paul Spooren <mail@aparcar.org>
package/boot/grub2/Makefile
package/boot/grub2/files/grub-early.cfg [new file with mode: 0644]
target/linux/x86/image/Makefile
target/linux/x86/image/grub-early.cfg [deleted file]

index b26ef64ca41190b7b0325acae3ad289229d95502..980a6e372a315d80aa3e6b648bef39edba6b5990 100644 (file)
@@ -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/package/boot/grub2/files/grub-early.cfg b/package/boot/grub2/files/grub-early.cfg
new file mode 100644 (file)
index 0000000..4a5b5a6
--- /dev/null
@@ -0,0 +1 @@
+configfile (hd0,msdos1)/boot/grub/grub.cfg
index 373f2396b7a6eaa94a4c4713a99422f994d95808..4e090bcf0778dcf8a976e3b38930feb433c5079c 100644 (file)
@@ -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' \
diff --git a/target/linux/x86/image/grub-early.cfg b/target/linux/x86/image/grub-early.cfg
deleted file mode 100644 (file)
index 4a5b5a6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-configfile (hd0,msdos1)/boot/grub/grub.cfg