aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author李国 <uxgood.org@gmail.com>2020-03-26 13:51:32 +0800
committerPetr Štetiar <ynezz@true.cz>2020-03-31 16:20:47 +0200
commitd9228514ccecfb9d1500e3a82470f66f2ea41a39 (patch)
treed9ce7dfed0b554dc6053895d169a1a66692985af
parent1963bbaa8f035c0a3c71233a049a7a4d7cd32711 (diff)
downloadupstream-d9228514ccecfb9d1500e3a82470f66f2ea41a39.tar.gz
upstream-d9228514ccecfb9d1500e3a82470f66f2ea41a39.tar.bz2
upstream-d9228514ccecfb9d1500e3a82470f66f2ea41a39.zip
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>
-rw-r--r--package/boot/grub2/Makefile74
-rw-r--r--target/linux/x86/image/Makefile9
2 files changed, 55 insertions, 28 deletions
diff --git a/package/boot/grub2/Makefile b/package/boot/grub2/Makefile
index 980a6e372a..840401fa3a 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
+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))
diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile
index c0c5c8323a..4915f639fa 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 \