diff options
author | xianhu2x <xianhuix.liu@intel.com> | 2017-09-08 14:16:10 +0800 |
---|---|---|
committer | zwei4 <david.wei@intel.com> | 2017-09-08 15:25:00 +0800 |
commit | b2eadc332f263dc0274fb4bedd2e5491c4ed2497 (patch) | |
tree | 0558f286566a724d1cd5551d113cf9d536871b63 | |
parent | c88dcf67e0f70ff082ede5c7d96f3fa421656cee (diff) | |
download | edk2-platforms-b2eadc332f263dc0274fb4bedd2e5491c4ed2497.tar.xz |
Ubuntu boot
Add Ubuntu boot loader file path \\EFI\\UBUNTU\\GRUBX64.EFI into known OS loader list.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: xianhu2x <xianhuix.liu@intel.com>
-rw-r--r-- | Core/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c | 28 | ||||
-rw-r--r-- | Core/MdePkg/Include/Uefi/UefiSpec.h | 11 |
2 files changed, 34 insertions, 5 deletions
diff --git a/Core/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c b/Core/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c index d1da635f35..ce1dd4a0bd 100644 --- a/Core/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c +++ b/Core/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c @@ -2384,6 +2384,22 @@ BdsLibBootViaBootOption ( 0,
&ImageHandle
);
+
+ if (EFI_ERROR(Status)) {
+ //
+ //Try Ubuntu boot loader
+ //
+ FilePath = FileDevicePath (Handle, EFI_REMOVABLE_MEDIA_FILE_NAME_UBUNTU_X64);
+ Status = gBS->LoadImage (
+ TRUE,
+ gImageHandle,
+ FilePath,
+ NULL,
+ 0,
+ &ImageHandle
+ );
+ }
+
}
}
}
@@ -3721,6 +3737,18 @@ BdsLibGetBootableHandle ( &DosHeader,
Hdr
);
+
+ if (EFI_ERROR(Status)) {
+ //
+ //Try Ubuntu boot loader
+ //
+ Status = BdsLibGetImageHeader (
+ SimpleFileSystemHandles[Index],
+ EFI_REMOVABLE_MEDIA_FILE_NAME_UBUNTU_X64,
+ &DosHeader,
+ Hdr
+ );
+ }
if (!EFI_ERROR (Status) &&
EFI_IMAGE_MACHINE_TYPE_SUPPORTED (Hdr.Pe32->FileHeader.Machine) &&
Hdr.Pe32->OptionalHeader.Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION) {
diff --git a/Core/MdePkg/Include/Uefi/UefiSpec.h b/Core/MdePkg/Include/Uefi/UefiSpec.h index 57cb4e804f..e5556952b5 100644 --- a/Core/MdePkg/Include/Uefi/UefiSpec.h +++ b/Core/MdePkg/Include/Uefi/UefiSpec.h @@ -2166,11 +2166,12 @@ typedef struct { //
// EFI File location to boot from on removable media devices
//
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_UBUNTU_X64 L"\\EFI\\UBUNTU\\GRUBX64.EFI"
#if defined (MDE_CPU_IA32)
#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA32
|