فهرست منبع

grub2: make some change to add efi platform support

1.generate boot image at Package/install section
2.move boot image to $(STAGING_DIR_IMAGE)/grub2/
3.add efi variant to support efi platform

Signed-off-by: 李国 <[email protected]>
李国 5 سال پیش
والد
کامیت
d9228514cc
2فایلهای تغییر یافته به همراه55 افزوده شده و 28 حذف شده
  1. 51 23
      package/boot/grub2/Makefile
  2. 4 5
      target/linux/x86/image/Makefile

+ 51 - 23
package/boot/grub2/Makefile

@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 PKG_NAME:=grub
 PKG_CPE_ID:=cpe:/a:gnu:grub2
 PKG_VERSION:=2.04
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@GNU/grub
@@ -27,14 +27,18 @@ PKG_FLAGS:=nonshared
 include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
 
-define Package/grub2
+define Package/grub2/Default
   CATEGORY:=Boot Loaders
   SECTION:=boot
-  TITLE:=GRand Unified Bootloader
+  TITLE:=GRand Unified Bootloader ($(1))
   URL:=http://www.gnu.org/software/grub/
   DEPENDS:=@TARGET_x86
+  VARIANT:=$(1)
 endef
 
+Package/grub2=$(call Package/grub2/Default,pc)
+Package/grub2-efi=$(call Package/grub2/Default,efi)
+
 define Package/grub2-editenv
   CATEGORY:=Utilities
   SECTION:=utils
@@ -42,6 +46,7 @@ define Package/grub2-editenv
   TITLE:=Grub2 Environment editor
   URL:=http://www.gnu.org/software/grub/
   DEPENDS:=@TARGET_x86
+  VARIANT:=pc
 endef
 
 define Package/grub2-editenv/description
@@ -60,7 +65,7 @@ CONFIGURE_ARGS += \
 	--disable-device-mapper \
 	--disable-libzfs \
 	--disable-grub-mkfont \
-	--with-platform=none
+	--with-platform=$(BUILD_VARIANT)
 
 HOST_CONFIGURE_VARS += \
 	grub_build_mkfont_excuse="don't want fonts"
@@ -71,51 +76,73 @@ HOST_CONFIGURE_ARGS += \
 	--sbindir="$(STAGING_DIR_HOST)/bin" \
 	--disable-werror \
 	--disable-libzfs \
-	--disable-nls
+	--disable-nls \
+	--with-platform=none
 
 HOST_MAKE_FLAGS += \
 	TARGET_RANLIB=$(TARGET_RANLIB) \
 	LIBLZMA=$(STAGING_DIR_HOST)/lib/liblzma.a
 
+TARGET_CFLAGS :=
+
 define Host/Configure
 	$(SED) 's,(RANLIB),(TARGET_RANLIB),' $(HOST_BUILD_DIR)/grub-core/Makefile.in
 	$(Host/Configure/Default)
 endef
 
-define Host/Install
-	$(call Host/Install/Default)
-
-	$(INSTALL_DIR) $(STAGING_DIR_HOST)/lib/grub/grub2-generic
+define Package/grub2/install
+	$(INSTALL_DIR) $(1)/usr/sbin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/grub-bios-setup $(1)/usr/sbin/
+	$(INSTALL_DIR) $(STAGING_DIR_IMAGE)/grub2
+	$(CP) $(PKG_BUILD_DIR)/grub-core/boot.img $(STAGING_DIR_IMAGE)/grub2/
+	$(CP) $(PKG_BUILD_DIR)/grub-core/cdboot.img $(STAGING_DIR_IMAGE)/grub2/
+	sed 's#msdos1#gpt1#g' ./files/grub-early.cfg >$(PKG_BUILD_DIR)/grub-early.cfg
+	$(STAGING_DIR_HOST)/bin/grub-mkimage \
+		-d $(PKG_BUILD_DIR)/grub-core \
+		-p /boot/grub \
+		-O i386-pc \
+		-c $(PKG_BUILD_DIR)/grub-early.cfg \
+		-o $(STAGING_DIR_IMAGE)/grub2/gpt-core.img \
+		at_keyboard biosdisk boot chain configfile fat linux ls part_gpt reboot serial vga
 	$(STAGING_DIR_HOST)/bin/grub-mkimage \
-		-d $(STAGING_DIR_HOST)/lib/grub/i386-pc \
+		-d $(PKG_BUILD_DIR)/grub-core \
 		-p /boot/grub \
 		-O i386-pc \
 		-c ./files/grub-early.cfg \
-		-o $(STAGING_DIR_HOST)/lib/grub/grub2-generic/core.img \
+		-o $(STAGING_DIR_IMAGE)/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 \
+		-d $(PKG_BUILD_DIR)/grub-core \
 		-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
+		-o $(STAGING_DIR_IMAGE)/grub2/eltorito.img \
+		at_keyboard biosdisk boot chain configfile iso9660 linux ls part_msdos reboot serial test vga
 	$(STAGING_DIR_HOST)/bin/grub-mkimage \
-		-d $(STAGING_DIR_HOST)/lib/grub/i386-pc \
+		-d $(PKG_BUILD_DIR)/grub-core \
 		-p /boot/grub \
 		-O i386-pc \
 		-c ./files/grub-early.cfg \
-		-o $(STAGING_DIR_HOST)/lib/grub/grub2-legacy/core.img \
+		-o $(STAGING_DIR_IMAGE)/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/
+define Package/grub2-efi/install
+	sed 's#msdos1#gpt1#g' ./files/grub-early.cfg >$(PKG_BUILD_DIR)/grub-early.cfg
+	$(STAGING_DIR_HOST)/bin/grub-mkimage \
+		-d $(PKG_BUILD_DIR)/grub-core \
+		-p /boot/grub \
+		-O $(CONFIG_ARCH)-efi \
+		-c $(PKG_BUILD_DIR)/grub-early.cfg \
+		-o $(STAGING_DIR_IMAGE)/grub2/boot$(if $(CONFIG_x86_64),x64,ia32).efi \
+		at_keyboard boot chain configfile fat linux ls part_gpt reboot serial efi_gop efi_uga
+	$(STAGING_DIR_HOST)/bin/grub-mkimage \
+		-d $(PKG_BUILD_DIR)/grub-core \
+		-p /boot/grub \
+		-O $(CONFIG_ARCH)-efi \
+		-c ./files/grub-early.cfg \
+		-o $(STAGING_DIR_IMAGE)/grub2/iso-boot$(if $(CONFIG_x86_64),x64,ia32).efi \
+		at_keyboard boot chain configfile fat iso9660 linux ls part_msdos part_gpt reboot serial test efi_gop efi_uga
 endef
 
 define Package/grub2-editenv/install
@@ -125,4 +152,5 @@ endef
 
 $(eval $(call HostBuild))
 $(eval $(call BuildPackage,grub2))
+$(eval $(call BuildPackage,grub2-efi))
 $(eval $(call BuildPackage,grub2-editenv))

+ 4 - 5
target/linux/x86/image/Makefile

@@ -70,9 +70,8 @@ endef
 define Build/grub-install
 	rm -fR [email protected]
 	$(INSTALL_DIR) [email protected]
-	$(CP) $(STAGING_DIR_HOST)/lib/grub/i386-pc/*.img \
-		$(STAGING_DIR_HOST)/lib/grub/grub2-$(GRUB2_VARIANT)/core.img \
-		[email protected]/
+	$(CP) $(STAGING_DIR_IMAGE)/grub2/boot.img [email protected]/
+	$(CP) $(STAGING_DIR_IMAGE)/grub2/$(GRUB2_VARIANT)-core.img [email protected]/core.img
 	echo '(hd0) $@' > [email protected]/device.map
 	$(STAGING_DIR_HOST)/bin/grub-bios-setup \
 		-m "[email protected]/device.map" \
@@ -84,8 +83,8 @@ endef
 define Build/iso
 	$(CP) $(KDIR)/$(KERNEL_NAME) [email protected]/boot/vmlinuz
 	cat \
-		$(STAGING_DIR_HOST)/lib/grub/i386-pc/cdboot.img \
-		$(STAGING_DIR_HOST)/lib/grub/grub2-iso/eltorito.img \
+		$(STAGING_DIR_IMAGE)/grub2/cdboot.img \
+		$(STAGING_DIR_IMAGE)/grub2/eltorito.img \
 		> [email protected]/boot/grub/eltorito.img
 	-$(CP) $(STAGING_DIR_ROOT)/boot/. [email protected]/boot/
 	mkisofs -R -b boot/grub/eltorito.img -no-emul-boot -boot-info-table \