From d9228514ccecfb9d1500e3a82470f66f2ea41a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=9B=BD?= Date: Thu, 26 Mar 2020 13:51:32 +0800 Subject: [PATCH] grub2: make some change to add efi platform support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: 李国 --- package/boot/grub2/Makefile | 100 ++++++++++++++++++++------------ target/linux/x86/image/Makefile | 9 ++- 2 files changed, 68 insertions(+), 41 deletions(-) diff --git a/package/boot/grub2/Makefile b/package/boot/grub2/Makefile index 980a6e372a3..840401fa3ac 100644 --- a/package/boot/grub2/Makefile +++ b/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 - $(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/ + $(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 $(PKG_BUILD_DIR)/grub-core \ + -p /boot/grub \ + -O i386-pc \ + -c ./files/grub-early.cfg \ + -o $(STAGING_DIR_IMAGE)/grub2/generic-core.img \ + at_keyboard biosdisk boot chain configfile ext2 linux ls part_msdos reboot serial vga + $(STAGING_DIR_HOST)/bin/grub-mkimage \ + -d $(PKG_BUILD_DIR)/grub-core \ + -p /boot/grub \ + -O i386-pc \ + -c ./files/grub-early.cfg \ + -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 $(PKG_BUILD_DIR)/grub-core \ + -p /boot/grub \ + -O i386-pc \ + -c ./files/grub-early.cfg \ + -o $(STAGING_DIR_IMAGE)/grub2/legacy-core.img \ + biosdisk boot chain configfile ext2 linux ls part_msdos reboot serial vga +endef + +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)) diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile index c0c5c8323ac..4915f639fa7 100644 --- a/target/linux/x86/image/Makefile +++ b/target/linux/x86/image/Makefile @@ -70,9 +70,8 @@ endef define Build/grub-install rm -fR $@.grub2 $(INSTALL_DIR) $@.grub2 - $(CP) $(STAGING_DIR_HOST)/lib/grub/i386-pc/*.img \ - $(STAGING_DIR_HOST)/lib/grub/grub2-$(GRUB2_VARIANT)/core.img \ - $@.grub2/ + $(CP) $(STAGING_DIR_IMAGE)/grub2/boot.img $@.grub2/ + $(CP) $(STAGING_DIR_IMAGE)/grub2/$(GRUB2_VARIANT)-core.img $@.grub2/core.img echo '(hd0) $@' > $@.grub2/device.map $(STAGING_DIR_HOST)/bin/grub-bios-setup \ -m "$@.grub2/device.map" \ @@ -84,8 +83,8 @@ endef define Build/iso $(CP) $(KDIR)/$(KERNEL_NAME) $@.boot/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 \ > $@.boot/boot/grub/eltorito.img -$(CP) $(STAGING_DIR_ROOT)/boot/. $@.boot/boot/ mkisofs -R -b boot/grub/eltorito.img -no-emul-boot -boot-info-table \