grub2: enable EFI for armvirt
This adds a separate package for EFI on Arm SystemReady compatible machines. 32-bit Arm UEFI is supported as well. It is very similar to x86-64 EFI setup, without the need for BIOS backward compatibility and slightly different default modules. Signed-off-by: Mathew McBride <matt@traverse.com.au>
This commit is contained in:
		 Mathew McBride
					Mathew McBride
				
			
				
					committed by
					
						 Petr Štetiar
						Petr Štetiar
					
				
			
			
				
	
			
			
			 Petr Štetiar
						Petr Štetiar
					
				
			
						parent
						
							97c5d317f5
						
					
				
				
					commit
					8f29b1573d
				
			| @@ -204,11 +204,12 @@ menu "Target Images" | |||||||
|  |  | ||||||
| 	config GRUB_EFI_IMAGES | 	config GRUB_EFI_IMAGES | ||||||
| 		bool "Build GRUB EFI images (Linux x86 or x86_64 host only)" | 		bool "Build GRUB EFI images (Linux x86 or x86_64 host only)" | ||||||
| 		depends on TARGET_x86 | 		depends on TARGET_x86 || TARGET_armvirt | ||||||
| 		depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS | 		depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS | ||||||
| 		select PACKAGE_grub2 | 		select PACKAGE_grub2 if TARGET_x86 | ||||||
| 		select PACKAGE_grub2-efi | 		select PACKAGE_grub2-efi if TARGET_x86 | ||||||
| 		select PACKAGE_grub2-bios-setup | 		select PACKAGE_grub2-bios-setup if TARGET_x86 | ||||||
|  | 		select PACKAGE_grub2-efi-arm if TARGET_armvirt | ||||||
| 		select PACKAGE_kmod-fs-vfat | 		select PACKAGE_kmod-fs-vfat | ||||||
| 		default y | 		default y | ||||||
|  |  | ||||||
|   | |||||||
| @@ -33,14 +33,15 @@ include $(INCLUDE_DIR)/package.mk | |||||||
| define Package/grub2/Default | define Package/grub2/Default | ||||||
|   CATEGORY:=Boot Loaders |   CATEGORY:=Boot Loaders | ||||||
|   SECTION:=boot |   SECTION:=boot | ||||||
|   TITLE:=GRand Unified Bootloader ($(1)) |   TITLE:=GRand Unified Bootloader ($(2)) | ||||||
|   URL:=http://www.gnu.org/software/grub/ |   URL:=http://www.gnu.org/software/grub/ | ||||||
|   DEPENDS:=@TARGET_x86 |   DEPENDS:=@TARGET_$(1) | ||||||
|   VARIANT:=$(1) |   VARIANT:=$(2) | ||||||
| endef | endef | ||||||
|  |  | ||||||
| Package/grub2=$(call Package/grub2/Default,pc) | Package/grub2=$(call Package/grub2/Default,x86,pc) | ||||||
| Package/grub2-efi=$(call Package/grub2/Default,efi) | Package/grub2-efi=$(call Package/grub2/Default,x86,efi) | ||||||
|  | Package/grub2-efi-arm=$(call Package/grub2/Default,armvirt,efi) | ||||||
|  |  | ||||||
| define Package/grub2-editenv | define Package/grub2-editenv | ||||||
|   CATEGORY:=Utilities |   CATEGORY:=Utilities | ||||||
| @@ -107,6 +108,10 @@ ifneq ($(BUILD_VARIANT),none) | |||||||
|   MAKE_PATH := grub-core |   MAKE_PATH := grub-core | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | ifeq ($(CONFIG_arm),y) | ||||||
|  |   TARGET_CFLAGS := $(filter-out -mfloat-abi=hard,$(TARGET_CFLAGS)) | ||||||
|  | endif | ||||||
|  |  | ||||||
| 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) | ||||||
| @@ -162,9 +167,31 @@ define Package/grub2-efi/install | |||||||
| 		-O $(CONFIG_ARCH)-efi \ | 		-O $(CONFIG_ARCH)-efi \ | ||||||
| 		-c ./files/grub-early.cfg \ | 		-c ./files/grub-early.cfg \ | ||||||
| 		-o $(STAGING_DIR_IMAGE)/grub2/iso-boot$(if $(CONFIG_x86_64),x64,ia32).efi \ | 		-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 | 		boot chain configfile fat iso9660 linux ls part_msdos part_gpt reboot serial test efi_gop efi_uga | ||||||
| endef | endef | ||||||
|  |  | ||||||
|  | define Package/grub2-efi-arm/install | ||||||
|  | 	$(INSTALL_DIR) $(STAGING_DIR_IMAGE)/grub2 | ||||||
|  | 	cp ./files/grub-early-gpt.cfg $(PKG_BUILD_DIR)/grub-early.cfg | ||||||
|  | 	$(STAGING_DIR_HOST)/bin/grub-mkimage \ | ||||||
|  | 		-d $(PKG_BUILD_DIR)/grub-core \ | ||||||
|  | 		-p /boot/grub \ | ||||||
|  | 		-O arm$(if $(CONFIG_aarch64),64,)-efi \ | ||||||
|  | 		-c $(PKG_BUILD_DIR)/grub-early.cfg \ | ||||||
|  | 		-o $(STAGING_DIR_IMAGE)/grub2/boot$(if $(CONFIG_aarch64),aa64,arm).efi \ | ||||||
|  | 		boot chain configfile fat linux ls part_gpt part_msdos reboot search \ | ||||||
|  | 		search_fs_uuid search_label serial efi_gop lsefi minicmd ext2 | ||||||
|  | 	$(STAGING_DIR_HOST)/bin/grub-mkimage \ | ||||||
|  | 		-d $(PKG_BUILD_DIR)/grub-core \ | ||||||
|  | 		-p /boot/grub \ | ||||||
|  | 		-O arm$(if $(CONFIG_aarch64),64,)-efi \ | ||||||
|  | 		-c ./files/grub-early.cfg \ | ||||||
|  | 		-o $(STAGING_DIR_IMAGE)/grub2/iso-bootaa$(if $(CONFIG_aarch64),aa64,arm).efi \ | ||||||
|  | 		boot chain configfile fat iso9660 linux ls lsefi minicmd part_msdos part_gpt \ | ||||||
|  | 		reboot serial test efi_gop | ||||||
|  | endef | ||||||
|  |  | ||||||
|  |  | ||||||
| define Package/grub2-editenv/install | define Package/grub2-editenv/install | ||||||
| 	$(INSTALL_DIR) $(1)/usr/sbin | 	$(INSTALL_DIR) $(1)/usr/sbin | ||||||
| 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/grub-editenv $(1)/usr/sbin/ | 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/grub-editenv $(1)/usr/sbin/ | ||||||
| @@ -178,5 +205,6 @@ endef | |||||||
| $(eval $(call HostBuild)) | $(eval $(call HostBuild)) | ||||||
| $(eval $(call BuildPackage,grub2)) | $(eval $(call BuildPackage,grub2)) | ||||||
| $(eval $(call BuildPackage,grub2-efi)) | $(eval $(call BuildPackage,grub2-efi)) | ||||||
|  | $(eval $(call BuildPackage,grub2-efi-arm)) | ||||||
| $(eval $(call BuildPackage,grub2-editenv)) | $(eval $(call BuildPackage,grub2-editenv)) | ||||||
| $(eval $(call BuildPackage,grub2-bios-setup)) | $(eval $(call BuildPackage,grub2-bios-setup)) | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								package/boot/grub2/files/grub-early-gpt.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								package/boot/grub2/files/grub-early-gpt.cfg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | search --set=root --label kernel | ||||||
|  | configfile ($root)/efi/openwrt/grub.cfg | ||||||
		Reference in New Issue
	
	Block a user