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 the right resource set and, more importantly, if you stop being irrational about how "using the GPLv3 means 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:
https://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 behind the GRUB 2.0 project, who abstracted their file system 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!
Showing posts with label rEFInd. Show all posts
Showing posts with label rEFInd. Show all posts
2014-06-30
2014-05-31
Restoring EFI NVRAM boot entries with rEFInd and Rufus
So, you reinstalled Windows, and it somehow screwed the nice EFI entry you had that booted your meticulously crafted EFI system partition? You know, the one you use with rEFInd or ELILO or whatever, to multiboot Linux, Windows, etc., and that has other goodies such as the EFI shell...
Well, here's how you can sort yourself out (shamelessly adapted from the always awesome and extremely comprehensive Arch Linux documentation):
Well, here's how you can sort yourself out (shamelessly adapted from the always awesome and extremely comprehensive Arch Linux documentation):
- Download the latest rEFInd CD-R image from here.
- Extract the ISO and use Rufus to create a bootable USB drive. Make sure that, when you create the USB, you have "GPT partition scheme for UEFI computer" selected, under "Partition scheme and target system type".
- Boot your computer in UEFI mode, and enter the EFI BIOS to select the USB as your boot device
- On the rEFInd screen select "Start EFI shell".
- At the
2.0 Shell >prompt type:bcfg boot dump
This should confirm that some of your old entries have been unceremoniously wiped out by Windows. - Find the disk on which your old EFI partition resides by issuing something like:
dir fs0:\efi
NB: you can use themapcommand to get a list of all the disks and partitions detected during boot. - Once you have the proper
fs#information (and provided you want to add an entry that boots into a rEFInd installed on your EFI system partition underEFI\refind\refind_x64.efi), issue something like:bcfg boot add 0 fs0:\EFI\refind\refind_x64.efi rEFInd
Note: If needed you can also usebcfg boot rm #to remove existing entries. - Confirm that your entry has been properly installed as the first option, by re-issuing
bcfg boot dump. Then remove the USB, reset your machine, and you should find that everything is back to normal.
Subscribe to:
Posts (Atom)