2014-06-30

So I built an NTFS EFI driver...

It's Free Software of course, and it only took me about two weeks to do so.

Since I've been doing it in my limited spare time, I might as well brag about it and say that, had I been able to work on this full time (which I sure wouldn't mind), it probably wouldn't have taken more than 7 days... Can't help but wonder how much a proprietary/non-free software development workflow would have had to budget, or outsource, to try to achieve the same thing, within the same amount of time. At the very least, this demonstrates that, if you start with the right people, the right resource set and, more importantly, stop being irrational about how using the GPLv3 will be the death knell of your software revenue stream, a project such as this one can easily and cheaply be completed in a matter of days.


Anyway, the driver itself is read-only (which is all I need for Rufus, as my intent is to use it there) and it could probably use some more polishing/cleanup, but it is stable enough to be used right now.

So, if you are interested in a redistributable and 100% Free Software read-only NTFS EFI driver, you should visit:
http://efi.akeo.ie (the link includes pre-built binaries).

Alternatively, you can also visit the github project page at:
https://github.com/pbatard/efifs

Now, I'd be ungrateful if I didn't mention that the main reason I was able to get something off the ground this quickly is thanks to the awesome developers of the GRUB 2.0 project, who abstracted their file system driver framework enough, to make reusing their code in an EFI implementation fairly straightforward.
And I also have to thank the iPXE developers, who did most of the back-breaking work in figuring out a GPL friendly version of an EFI FS driver, that I could build on.
Finally, I was also able to reuse some of the good work from the rEFInd people (the GPLv3 compatible parts), which was big help!

But the lesson is: Don't waste your time with proprietary/non-free software. If you are both interested in being productive and budget-conscious, Free Software is where it's at!

6 comments:

  1. Hi, there some APi to be able to read NTFS files/directories?
    I'm in this situation, I have a code that, using your driver, is able to load an efi image on a ntfs driver from the bootloader image.
    Now I need to be able to read the partition to load file in memory. There is any solution, API to do so or I need as you have done use grub?

    ReplyDelete
    Replies
    1. Please do not post the same comment 3 times. This GREATLY diminishes the willingness for anybody to help you out.
      There Is no API, but what is being done in UEFI:NTFS project (https://github.com/pbatard/uefi-ntfs) might be of interest to you.

      Delete
  2. So sorry but I reall can't get how tha driver work.
    So now I have loaded the driver an launch another efi image. Can I acess the driver from my code? And If how?
    I'm really new to uefi and cannot get informations. Thanks

    ReplyDelete
  3. Was wondering how you were able to build the driver? I'm interested in building an Intel raid driver if possible. Thanks

    ReplyDelete
    Replies
    1. @davidm671 - Please see the Compilation steps in the README from the project. It gives you all the details on how you should build the driver.

      Delete