summaryrefslogtreecommitdiffstats
path: root/src/config
diff options
context:
space:
mode:
authorMichael Brown2016-03-14 16:23:42 +0100
committerMichael Brown2016-03-14 22:11:01 +0100
commit9913a405ea151706770559d42e758bc2c1da8525 (patch)
tree9e984a144fabd875f31fd7c8c0e6b3763c26e089 /src/config
parent[uri] Support "file:" URIs describing relative paths (diff)
downloadipxe-9913a405ea151706770559d42e758bc2c1da8525.tar.gz
ipxe-9913a405ea151706770559d42e758bc2c1da8525.tar.xz
ipxe-9913a405ea151706770559d42e758bc2c1da8525.zip
[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 <mcb30@ipxe.org>
Diffstat (limited to 'src/config')
-rw-r--r--src/config/config_efi.c4
-rw-r--r--src/config/defaults/efi.h2
-rw-r--r--src/config/general.h1
3 files changed, 7 insertions, 0 deletions
diff --git a/src/config/config_efi.c b/src/config/config_efi.c
index 1f73dad4..92678d12 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 <config/general.h>
#include <config/console.h>
/** @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 24b93a02..ea9c31e2 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 e9b781fb..675c11e0 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