On 08/06/14 09:40, Reza Jelveh wrote: > Hello, > > EDK2 integrates FAT as a binary driver. What is the license of the FAT driver?
https://svn.code.sf.net/p/edk2/code/trunk/edk2/FatBinPkg/License.txt > What are the guidelines for use of binary drivers with EDK2? Specifically if > you want to bundle an OVMF firmware with qemu? I'm not a lawyer. You should consult a lawyer. That said, the binary or source code nature of the FAT driver is inconsequential in this instance. You can actually find the source code for the FAT driver, and build it yourself, you just need to import it in the edk2 tree, and patch OvmfPkg*.{dsc,fdf) slightly. https://svn.code.sf.net/p/edk2/code/trunk/edk2/FatBinPkg/ReadMe.txt https://github.com/tianocore/edk2-FatPkg/ The main issue is that the FAT driver is not free software. It doesn't satisfy the four freedom requirements listed here: https://www.gnu.org/philosophy/free-sw.html [...] The freedom to run the program as you wish, for any purpose (freedom 0). [...] The FAT driver license does not give you this freedom. The FAT driver's license is more restrictive than the 3-clause BSDL that it is based upon. The 3-clause BSDL is GPL compatible: http://en.wikipedia.org/wiki/BSD_licenses#3-clause_license_.28.22Revised_BSD_License.22.2C_.22New_BSD_License.22.2C_or_.22Modified_BSD_License.22.29 But the additional restriction in the FAT driver's license makes it incompatible with the GPLv2 (which QEMU as a whole us released under, see LICENSE). The additional restriction most likely originates from <http://msdn.microsoft.com/en-us/gg463080.aspx>, the Microsoft EFI FAT32 File System Specification: Note: The download license agreement permits you to use the Microsoft EFI FAT32 File System Specification only in connection with a firmware implementation of the Extensible Firmware Initiative Specification, v. 1.0. If you plan to implement the FAT32 File System specification for other purposes, you must obtain an additional license from Microsoft. For example, you must obtain an additional license in order to create a file system for reading or reading and writing FAT32 in digital cameras recording to flash media, in computer operating systems reading and writing internal/external hard disks or flash media, or in set-top boxes reading FAT-formatted media. (This is precisely what freedom 0 would be about.) So no, you can't ship an OVMF binary (or source tarball) that contains the FAT driver, bundled as part of the GPLv2 (+compatible) QEMU distribution, either in source or in binary form. Linux distributions have moved OVMF to their non-free channels accordingly. https://packages.debian.org/sid/ovmf https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=745698 http://packages.ubuntu.com/trusty/misc/ovmf What you can do is build an OVMF binary that doesn't include the FAT driver. The result will be then covered by 3-clause BSDL (further restricted by the OpenSSL license, if you include -D SECURE_BOOT), and that one you can bundle with QEMU. However, such an OVMF binary will be useless, unless users themselves can augment it somehow at build time or at runtime with some FAT driver. (The UEFI specification requires FAT32 support.) UEFI should have standardized a preexistent, but unencumbered, file system. That horse is out of the barn. Disclaimer: I am not a lawyer, and this is my personal opinion only, not necessarily my employer's. Laszlo