瀏覽代碼

x86/grub2: move grub2 image creation to package

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]>
Paul Spooren 5 年之前
父節點
當前提交
5a5df62d95
共有 3 個文件被更改,包括 39 次插入22 次删除
  1. 31 0
      package/boot/grub2/Makefile
  2. 0 0
      package/boot/grub2/files/grub-early.cfg
  3. 8 22
      target/linux/x86/image/Makefile

+ 31 - 0
package/boot/grub2/Makefile

@@ -82,6 +82,37 @@ define Host/Configure
 	$(Host/Configure/Default)
 	$(Host/Configure/Default)
 endef
 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
 define Package/grub2/install
 	$(INSTALL_DIR) $(1)/usr/sbin
 	$(INSTALL_DIR) $(1)/usr/sbin
 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/grub-bios-setup $(1)/usr/sbin/
 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/grub-bios-setup $(1)/usr/sbin/

+ 0 - 0
target/linux/x86/image/grub-early.cfg → package/boot/grub2/files/grub-early.cfg


+ 8 - 22
target/linux/x86/image/Makefile

@@ -9,8 +9,7 @@ include $(INCLUDE_DIR)/image.mk
 
 
 export PATH=$(TARGET_PATH):/sbin
 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_TERMINALS =
 GRUB_SERIAL_CONFIG =
 GRUB_SERIAL_CONFIG =
 GRUB_TERMINAL_CONFIG =
 GRUB_TERMINAL_CONFIG =
@@ -19,8 +18,9 @@ GRUB_CONSOLE_CMDLINE =
 USE_ATKBD = generic 64
 USE_ATKBD = generic 64
 
 
 ifneq ($(strip $(foreach subtarget,$(USE_ATKBD),$(CONFIG_TARGET_x86_$(subtarget)))),)
 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
 endif
 
 
 ifneq ($(CONFIG_GRUB_CONSOLE),)
 ifneq ($(CONFIG_GRUB_CONSOLE),)
@@ -63,14 +63,9 @@ ifneq ($(CONFIG_GRUB_IMAGES),)
 	rm -fR $(KDIR)/root.grub $(KDIR)/grub2
 	rm -fR $(KDIR)/root.grub $(KDIR)/grub2
 	$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2
 	$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2
 	$(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz
 	$(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
 	echo '(hd0) $(BIN_DIR)/$(IMG_COMBINED)-$(1).img' > $(KDIR)/grub2/device.map
 	sed \
 	sed \
 		-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
 		-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
@@ -98,16 +93,7 @@ define Image/Build/iso
 	rm -fR $(KDIR)/root.grub $(KDIR)/grub2
 	rm -fR $(KDIR)/root.grub $(KDIR)/grub2
 	$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2
 	$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2
 	$(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz
 	$(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
 		> $(KDIR)/root.grub/boot/grub/eltorito.img
 	sed \
 	sed \
 		-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
 		-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \