633 GitHub stars and counting — pbatard/EfiFs is a C project TopGit is tracking across repositories on the platform. EFI FileSystem drivers
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
This is a GPLv3+ implementation of standalone EFI File System drivers, based on
the GRUB 2.0 read-only drivers.
For additional info as well as precompiled drivers, see https://efi.akeo.ie
Requirements
Visual Studio 2022 (Windows),
MinGW (Windows), gcc (Linux) or EDK2.
A git client able to initialize/update submodules
QEMU v2.7 or later if debugging with Visual Studio
(NB: You can find QEMU Windows binaries here)
Compilation
Common
Fetch the git submodules with git submodule init and git submodule update. NOTE This only works if you cloned the directory using git.
Apply 0001-GRUB-fixes.patch to the grub\ subdirectory. This applies the
changes that are required for successful compilation of GRUB.
Visual Studio (non EDK2)
Open the solution file and hit F5 to compile and debug the default driver.
gcc (non EDK2)
Run make in the top directory. If needed you can also issue something like
make ARCH=<arch> CROSS_COMPILE=<tuple> where <arch> is one of ia32,
x64, arm, aa64, riscv64 or loongarch64 (the official UEFI
abbreviations for an arch, as used in /efi/boot/boot[ARCH].efi) and <tuple>
is the one for your cross-compiler, such as arm-linux-gnueabi- or
aarch64-linux-gnu-.
e.g. make ARCH=aa64 CROSS_COMPILE=aarch64-linux-gnu-
EDK2
Open an elevated command prompt and create a symbolic link called EfiFsPkg,
inside your EDK2 directory, to the EfiFs source. On Windows, from an elevated
prompt, you could run something like mklink /D EfiFsPkg C:\efifs, and on
Linux ln -s ../efifs EfiFsPkg.
From a command prompt, set Grub to target the platform you are compiling for
by invoking:
(Windows) set_grub_cpu.cmd <arch>
(Linux) ./set_grub_cpu.sh <arch>
Where <arch> is one of ia32, x64, arm, aarch64, riscv64 or loongarch64.
Note that you MUST invoke the set_grub_cpu script every time you
switch target.
After having invoked edksetup.bat (Windows) or edksetup.sh (Linux) run
something like:
build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc
where <toolchain> is something like VS2022 (Windows) or GCC5 (Linux).
NB: To build an individual driver, such as NTFS, you can also use something
like:
A Windows script to build the drivers, using EDK2 with VS2022 is also provided
as edk2_build_drivers.cmd.
Testing
If QEMU is installed, the Visual Studio solution will set up and test the
drivers using QEMU (by also downloading a sample image for each target file
system). Note however that VS debugging expects a 64-bit version of QEMU to be
installed in C:\Program Files\qemu\ (which you can download here).
If that is not the case, you should edit .msvc\debug.vbs accordingly.
For testing outside of Visual Studio, make sure you have at least one disk with
a target partition using the target filesystem, that is not being handled by
other EFI filesystem drivers.
Then boot into the EFI shell and run the following:
load fs0:\<fs_name>_<arch>.efi or wherever your driver was copied
map -r this should make a new fs# available, eg fs2:
You should now be able to navigate and access content (in read-only mode)
For logging output, set the FS_LOGGING shell variable to 1 or more
To unload use the drivers command, then unload with the driver ID
Visual Studio 2022 and ARM/ARM64 support
Please be mindful that, to enable ARM/ARM64 compilation support in Visual
Studio 2022, you MUST go to the Individual components screen in the setup
application and select the ARM compilers and libraries there, as they do NOT
appear in the default Workloads screen:
Additional Notes
This is a pure GPLv3+ implementation of EFI drivers. Great care was taken not to
use any code from non GPLv3 compatible sources, such as rEFInd's fsw_efi
(GPLv2 only) or Intel's FAT driver (requires an extra copyright notice).
Note however that some files (the non grub_#### sources under ./src/) are
licensed under GPLv2+ rather than GPLv3+ and that, just like the GPLv3+ sources,
we took great care of ensuring that we are fully compliant with any licensing
or relicensing matters, so that they can legally be reused into GPLv2+ works.
Bonus: Commands to compile EfiFs using EDK2 on a vanilla Debian GNU/Linux 10.x
sudo apt install nasm uuid-dev gcc-multilib gcc-aarch64-linux-gnu gcc-arm-linux-gnueabi gcc-riscv64-linux-gnu
git clone --recurse-submodules https://github.com/tianocore/edk2.git
cd edk2
make -C BaseTools
git clone --recurse-submodules https://github.com/pbatard/EfiFs.git EfiFsPkg
cd EfiFsPkg/grub
git apply ../0001-GRUB-fixes.patch
cd -
export GCC5_ARM_PREFIX=arm-linux-gnueabi-
export GCC5_AARCH64_PREFIX=aarch64-linux-gnu-
export GCC5_RISCV64_PREFIX=riscv64-linux-gnu-
source edksetup.sh --reconfig
./EfiFsPkg/set_grub_cpu.sh X64
build -a X64 -b RELEASE -t GCC5 -p EfiFsPkg/EfiFsPkg.dsc
./EfiFsPkg/set_grub_cpu.sh IA32
build -a IA32 -b RELEASE -t GCC5 -p EfiFsPkg/EfiFsPkg.dsc
./EfiFsPkg/set_grub_cpu.sh AARCH64
build -a AARCH64 -b RELEASE -t GCC5 -p EfiFsPkg/EfiFsPkg.dsc
./EfiFsPkg/set_grub_cpu.sh ARM
build -a ARM -b RELEASE -t GCC5 -p EfiFsPkg/EfiFsPkg.dsc
./EfiFsPkg/set_grub_cpu.sh RISCV64
build -a RISCV64 -b RELEASE -t GCC5 -p EfiFsPkg/EfiFsPkg.dsc
Yes — pbatard/EfiFs ships under the GPL-3.0 license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/pbatard/EfiFs.
What else is in the Backend space?
pbatard/EfiFs is tracked by TopGit under the Backend category, alongside 19 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What is pbatard/EfiFs?
pbatard/EfiFs (pbatard/EfiFs) is a C project on GitHub. From the project's own README: EFI FileSystem drivers
What license does pbatard/EfiFs use?
pbatard/EfiFs is released under the GPL-3.0 license. Always verify the LICENSE file directly on GitHub for the authoritative terms — license strings can be edited out of sync with a project's actual stance.
Where can I see pbatard/EfiFs in action?
The project maintains a homepage at https://efi.akeo.ie. The README tab on this page also usually contains screenshots and a quickstart.
Where do I read more about pbatard/EfiFs?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/pbatard/EfiFs is the definitive source.
Why is pbatard/EfiFs categorized under Backend?
TopGit places pbatard/EfiFs in the Backend category based on its GitHub topics and description (tagged: "aarch64", "arm", "c"). Categories are assigned from real repository metadata, not editorial guesswork.
Read full README in the tab above.
Curious whether EfiFs is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about EfiFs.