Skip to content

franzageek/WinEFIMounter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WinEFIMounter

Mount your Hackintosh EFI partition from Windows.

winefimounter

[a.k.a. MountEFI for Windows]

Introduction - Usage - Problems - Credits

Introduction

WinEFIMounter is a simple, standalone C++ program designed to make mounting the EFI partition on your Hackintosh drive directly from Windows easy. While it can mount any EFI partition (including those from Windows and Linux), its primary purpose is to allow you to access your Hackintosh EFI without having to boot into macOS.

It's hard to believe but in reality there isn't any simple software such as Corpnewt's MountEFI (for Mac) that lets you do it from Windows: you would have to download third-party programs. You might as well try WinEFIMounter instead: it's lightweight and easy to use!

Usage

Supported actions

WinEFIMounter is very easy to use. It features a simple CLI that makes everything very straightforward.

WinEFIMounter allows you to:

  • Mount an EFI partiton
  • Browse the content of the partition:
    • Via Command Prompt
    • Via File Explorer
  • Unmount the EFI partition

    i tell you no shit

It can currently perform very basic actions, but it will get more and more advanced later in time.

Required tools

WinEFIMounter relies on a bunch of pre-installed Windows tools, such as:

  • PowerShell

    Used for mounting and unmounting the EFI partition.

  • XCopy

    Used for cloning the entire EFI partition to the "C:\EFIPartition" directory. This is done to make the EFI partition accessible by GUI as it would be impossible to access it just by opening the partition in File Explorer (due to admin rights-related reasons).

Use cases

WinEFIMounter is the perfect solution for a variety of problems, including:

  • Fixing your Hackintosh if it's not booting and you have no way to access the EFI partition

    If you fuck up with your kexts, SSDTs or drivers (like I did) you will likely need a quick way to fix them in order to make your Hackintosh boot again.

  • Cleaning up your EFI

    OpenCore leaves log files all over your EFI partition every time you boot macOS. WinEFIMounter allows you to get rid of them in the blink of an eye.

  • Adding files to your EFI

    Like fixing issues, accessing your EFI from Windows with WinEFIMounter is now easier than ever before.

  • Managing Windows or Linux EFI partitions

    That's right, WinEFIMounter can mount all kinds of EFI partitions you can think of! The program might often refer to the EFI partition as "the Hackintosh EFI partition" or to the drive as "your Hackintosh disk", but you can use it for other ESPs too.

Application behavior

When you start WinEFIMounter, a welcome screen greets you: image Press any key to skip the intro and move to the main menu:

image

The main menu allows you to:

  • Choose a partition to mount
  • Quit the program

To choose the action to perform, just type 1 (to mount a partition) or E (to exit WinEFIMounter) and then hit Enter.

If you want to mount a partition, press 1. You'll get to the point where you need to select the drive and the partition to mount. Screenshot 2023-07-16 202956 First, locate in the list the drive you want to mount the EFI partition of, then type its number and hit Enter.

Screenshot 2023-07-16 203527
Do the same thing for the EFI partition you need to mount.

image Once you selected your drive and EFI partition, type M to confirm. The mounting process will begin instantly.

image Congrats! Your EFI Partition is now mounted to "Z:\" (or, if it's taken, to another letter at the very end of the alphabet). You'll get to this screen, which basically tells you that you have two ways of editing your EFI partition's content:

  • By browsing files and folders using the Command Prompt (via cd, del, move and copy)

    Although it might seem pretty straightforward, this is the most complicated route you can take. Yk, it's always a smarter idea to do things in a GUI when you're able to.

  • By opening an EFI partition's clone in File Explorer

    This is achieved by copying the entire directory tree of the EFI partition onto a directory that can be accessed with standard privileges. Because yeah, the EFI partition itself it cannot be accessed by TrustedInstaller either, which is the highest authority in your system. The fun fact is that despite all that it can be easily accessed by an elevated Command Prompt, and you can use it to copy the content over to a folder that you can access with standard-user rights. So, when you run WinEFIMounter as administrator it will be able to copy the entire partition tree over to a standard directory, which will be then flushed back to the EFI partition once you're done modifying your files.

    FYI, the directory that will host the clone of the EFI partition is "C:\EFIPartition\".

Anyway, just press any key to skip it.

image Once the EFI partition is mounted, you can:

  • Browse the partition via Command Prompt
  • Access a cloned version of the EFI partition in File Explorer
  • Unmount the partition when you're done

Screenshot 2023-07-17 050930 Option 1 will simply open a Command Prompt window in the EFI partition directory.

Screenshot 2023-07-17 051300 Option 2 will show this message. To start cloning, type C and hit Enter.

Screenshot 2023-07-17 051401 After you typed C, all the files in your EFI folder get copied inside of "C:\EFIPartition". WinEFIMounter will automatically open an Explorer window in that directory for you.

You can now access your files like you normally would, and you won't even notice the fact that you're actually outside of your EFI partition.

But how can you make the changes made to your files in "C:\EFIPartition" effective on the EFI partition itself?

Well, there's a simple yet slightly complex solution, but we'll talk about it later in this ReadMe.

Just press F and hit Enter to start flushing the updated files back to the EFI.

Screenshot 2023-07-17 053408

The files you modified are now in your EFI partition, without the need for you to worry about anything!

image Choosing Option 3 in the main menu will result in this screen. Type U and press Enter to continue.

Always save your work and close any file that belongs to the EFI partition before you unmount it.

image And here you have your success screen. Pressing a key will show the first main menu.

image Choosing Option E from the main menu while your partition is still mounted will take you to this warning screen, which basically reminds you to unmount your EFI partition before you leave WinEFIMounter.

If you closed the window, WinEFIMounter would have had to mount the (already mounted) partition, resulting in a general mess where the Z letter is taken by the already mounted EFI partition and WinEFIMounter would be forced to assign the Y letter to a partition which is already mounted to "Z:\"... a bit annoying if you asked me.

TL;DR: Just unmount your partition as you leave WinEFIMounter.
NOTE: v1.0.2 is capable of detecting already mounted EFI partitions at startup. This should not be that much of a concern anymore.

Problems

v1.0.1: Cannot mount an external EFI partition

As noted by 1dolla, WinEFIMounter has trouble assigning a letter to EFI partitions on external USB drives. There is however a PowerShell command that will allow you to assign it a letter, which you can find here: #3. There are a few side effects though, such as the fact that the EFI will be mounted every single time Windows detects it is unmounted.
I've released a C++ update (v1.0.2) that fixes this bug.

v1.0.0: Flushing procedure failed

WinEFIMounter is a simple script of about 400 lines of code, with basic mounting and unmounting handled by DiskPart. The most complex part is the cloning and flushing process, which copies files between the EFI partition and "C:\EFIPartition\".

This is the step-by-step description of what happens at the moment of cloning:

  • "C:\EFIPartition" folder gets created
  • The whole directory tree of the EFI partition is copied over to the destination folder

And this is what happens when you flush the files back to the EFI partition:

  • New files from the destination directory are copied over to the EFI partition
  • Old files and folders are deleted
  • "C:\EFIPartition" directory is deleted

Yeah, I agree, that's not a lot of stuff whatsoever. But this is exactly the reason for which I decided to take extra-precautions and make the whole program even safer: at the end of the day it's just a simple script, and adding an extra part to prevent file loss shouldn't be too difficult.

So here's what I did: the part where errors are most likely to occur is when flushing updated files back to the EFI. So I added an ERRORLEVEL check after the XCopy command. This means that if something goes wrong during the XCopy command the ERRORLEVEL value will be different from 0, making the program show this error screen: image

One of the cases this error is supposed to occur is if the destination directory cannot be found.

The way I managed to test the error (just to check if everything was working fine) is by mounting and cloning the partition using WinEFIMounter, then unmounting it from outside WinEFIMounter and start flushing back the files with WinEFIMounter. This will restult in XCopy Error 4: Destination cannot be found.

I'm planning to add the same ERRORLEVEL check when cloning the files from the EFI to the destination folder, to check if the files have been successfully copied to the destination directory or if an error has occurred along the way. I'll do that in a future version.

Credits

This project began out of necessity when I needed to repair my Hackintosh EFI but couldn't find a version of MountEFI for Windows. I hope WinEFIMounter helps save you time and effort by offering a lightweight, easy-to-use alternative to third-party programs.

Thanks to all of ya that decided to star, clone & download WinEFIMounter! Really appreciate it <3