From 9913a405ea151706770559d42e758bc2c1da8525 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 14 Mar 2016 15:23:42 +0000 Subject: [efi] Provide access to files stored on EFI filesystems Provide access to local files via the "file://" URI scheme. There are three syntaxes: - An opaque URI with a relative path (e.g. "file:script.ipxe"). This will be interpreted as a path relative to the iPXE binary. - A hierarchical URI with a non-network absolute path (e.g. "file:/boot/script.ipxe"). This will be interpreted as a path relative to the root of the filesystem from which the iPXE binary was loaded. - A hierarchical URI with a network path in which the authority is a volume label (e.g. "file://bootdisk/script.ipxe"). This will be interpreted as a path relative to the root of the filesystem with the specified volume label. Note that the potentially desirable shell mappings (e.g. "fs0:" and "blk0:") are concepts internal to the UEFI shell binary, and do not seem to be exposed in any way to external executables. The old EFI_SHELL_PROTOCOL (which did provide access to these mappings) is no longer installed by current versions of the UEFI shell. Signed-off-by: Michael Brown --- src/config/config_efi.c | 4 ++++ src/config/defaults/efi.h | 2 ++ src/config/general.h | 1 + 3 files changed, 7 insertions(+) (limited to 'src/config') diff --git a/src/config/config_efi.c b/src/config/config_efi.c index 1f73dad4d..92678d12d 100644 --- a/src/config/config_efi.c +++ b/src/config/config_efi.c @@ -21,6 +21,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); +#include #include /** @file @@ -45,3 +46,6 @@ REQUIRE_OBJECT ( efi_fbcon ); #ifdef CONSOLE_FRAMEBUFFER REQUIRE_OBJECT ( efi_fbcon ); #endif +#ifdef DOWNLOAD_PROTO_FILE +REQUIRE_OBJECT ( efi_local ); +#endif diff --git a/src/config/defaults/efi.h b/src/config/defaults/efi.h index 24b93a02d..ea9c31e27 100644 --- a/src/config/defaults/efi.h +++ b/src/config/defaults/efi.h @@ -24,6 +24,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define TIME_EFI #define REBOOT_EFI +#define DOWNLOAD_PROTO_FILE /* Local filesystem access */ + #define IMAGE_EFI /* EFI image support */ #define IMAGE_SCRIPT /* iPXE script image support */ diff --git a/src/config/general.h b/src/config/general.h index e9b781fbf..675c11e07 100644 --- a/src/config/general.h +++ b/src/config/general.h @@ -57,6 +57,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #undef DOWNLOAD_PROTO_FTP /* File Transfer Protocol */ #undef DOWNLOAD_PROTO_SLAM /* Scalable Local Area Multicast */ #undef DOWNLOAD_PROTO_NFS /* Network File System Protocol */ +//#undef DOWNLOAD_PROTO_FILE /* Local filesystem access */ /* * SAN boot protocols -- cgit v1.2.3-55-g7522