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: 李国 <uxgood.org@gmail.com>
master
李国 4 years ago committed by Petr Štetiar
parent 1963bbaa8f
commit d9228514cc

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

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

Loading…
Cancel
Save