grub2: make some change to add efi platform support
author李国 <uxgood.org@gmail.com>
Thu, 26 Mar 2020 05:51:32 +0000 (13:51 +0800)
committerPetr Štetiar <ynezz@true.cz>
Tue, 31 Mar 2020 14:20:47 +0000 (16:20 +0200)
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: 李国 <uxgood.org@gmail.com>
package/boot/grub2/Makefile
target/linux/x86/image/Makefile

index 980a6e372a315d80aa3e6b648bef39edba6b5990..840401fa3ac67af216636e7ff84664205dbe85dd 100644 (file)
@@ -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))
index c0c5c8323ac900b61cf3d6d634a60fe97e20c56b..4915f639fa77807ba78011a04cb5cccb0ceb0b8f 100644 (file)
@@ -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 \