@@ -83,6 +83,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-editenv/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/grub-editenv $(1)/usr/sbin/
similarity index 100%
rename from target/linux/x86/image/grub-early.cfg
rename to package/boot/grub2/files/grub-early.cfg
@@ -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 vga
-GRUB2_MODULES_ISO = biosdisk boot chain configfile iso9660 linux ls part_msdos reboot serial 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),)
# left here because the image builder doesnt need these
$(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/core.img \
- -O i386-pc \
- -c ./grub-early.cfg \
- $(GRUB2_MODULES)
- $(CP) $(STAGING_DIR_HOST)/lib/grub/i386-pc/*.img $(KDIR)/grub2/
+ $(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_PREFIX)-combined-$(1).img' > $(KDIR)/grub2/device.map
sed \
-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
@@ -100,16 +95,9 @@ endef
define Image/Build/iso
$(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' \
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> --- package/boot/grub2/Makefile | 31 +++++++++++++++++++ .../boot/grub2/files}/grub-early.cfg | 0 target/linux/x86/image/Makefile | 28 +++++------------ 3 files changed, 39 insertions(+), 20 deletions(-) rename {target/linux/x86/image => package/boot/grub2/files}/grub-early.cfg (100%)