public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [RFC PATCH 0/6] OVMF: HFS+ (and Mac OS X boot)
@ 2017-03-07  3:14 Gabriel L. Somlo
  2017-03-07  3:14 ` [RFC PATCH 1/6] FswHfsPlus: add File System Wrapper (FSW) interface code Gabriel L. Somlo
                   ` (7 more replies)
  0 siblings, 8 replies; 12+ messages in thread
From: Gabriel L. Somlo @ 2017-03-07  3:14 UTC (permalink / raw)
  To: edk2-devel; +Cc: lersek, jordan.l.justen, reza.jelveh, agraf, kraxel

This series is intended to restart the conversation re. adding
boot support for Mac OS X to QEMU via OVMF.

The *last* three patches represent what's left of Reza's excellent
work on getting OVMF to support booting OS X. They are rebased to
the point where they still apply cleanly and work, but I haven't
made any significant changes to them beyond that.

The *first* three patches (1-3 of 6) provide the BSD-licensed HFS+
filesystem support required by Reza's work:

    - patch 1/6: After a bit of archaeology, I managed to isolate
                 the original EFI "File System Wrapper" (FSW) files
                 released under the BSD by the "rEFIt" project; One
                 additional file, also BSD-licensed, was imported
                 from the "rEFInd" project.
                 The FSW is an abstraction layer that facilitates
                 the creation of a file system driver by providing
                 a set methods for mount/unmount/readdir/etc.

    - patch 2/6: fix a few compiler errors and other discrepancies to
                 facilitate integrating FSW into EDK2/OVMF.

    - patch 3/6: A BSD-licensed implementation of an FSW HFS+ driver.
                 Based on Apple's HFS+ specification (TN1150), this is
                 a minimalistic, bare-bones set of FSW methods capable
                 of locating and loading files from an HFS+ volume.
                 Lots of functionality (e.g. stat, readdir, hard/sym
                 links, or accessing files with more than 8 fragments)
                 is unimplemented at this time. I only implemented the
                 methods necessary to support loading Apple's boot.efi
                 and kernel.

                 For any extra features (such as stat, readdir, etc.)
                 I'd need to figure out how to navigate around on a
                 mounted volume (e.g. from the UEFI shell ?) to cause
                 the rest of the methods to be called, so I could test
                 whether they work or not. Particularly support for
                 fragmented files -- I'd have to create one somehow
                 (against OS X and HFS's best efforts to prevent it),
                 then cause it to be accessed from the UEFI shell to
                 test that whatever I'm implementing actually works.
                 Any "EDK2 filesystem developer's primer" on how to
                 do those things would be immensely helpful at this point.

Also, I would like some feedback and advice on where to go from here.

At this time, neither the FSW wrapper nor the HFS+ driver I wrote comply
with EDK2's coding standards. Before I start working on that, it would
be helpful to find out whether the FSW layer is of any interest to EDK2
as a way to facilitate adding support for arbitrary new filesystems.

If not, it might be worth factoring out the common bits and roll the
the whole thing up into a standalone HFS+ driver, which would be a
significantly different direction to go.

The series is also available on GitHub, in my "macboot" branch:

	https://github.com/gsomlo/edk2/tree/macboot

A set of instructions on how to get things working is available here:

	http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/

Thanks in advance for any feedback, advice, etc.
  --Gabriel

Gabriel L. Somlo (6):
  FswHfsPlus: add File System Wrapper (FSW) interface code
  FswHfsPlus: connect FSW code to EDK2, fix compile discrepancies
  FswHfsPlus: implement FSW driver for the HFS+ file system
  EdkCompatibilityPkg: allow ConsoleControl protocol to be used
  OvmfPkg: add Apple boot support
  OvmfPkg: enable AppleSupport library for Ovmf firmware

 EdkCompatibilityPkg/EdkCompatibilityPkg.dec        |    2 +
 OvmfPkg/FswHfsPlus/FswHfsPlus.inf                  |   57 ++
 OvmfPkg/FswHfsPlus/fsw_base.h                      |  158 +++
 OvmfPkg/FswHfsPlus/fsw_core.c                      |  929 +++++++++++++++++
 OvmfPkg/FswHfsPlus/fsw_core.h                      |  517 ++++++++++
 OvmfPkg/FswHfsPlus/fsw_efi.c                       | 1040 ++++++++++++++++++++
 OvmfPkg/FswHfsPlus/fsw_efi.h                       |  102 ++
 OvmfPkg/FswHfsPlus/fsw_efi_base.h                  |   81 ++
 OvmfPkg/FswHfsPlus/fsw_efi_edk2_base.h             |   76 ++
 OvmfPkg/FswHfsPlus/fsw_efi_lib.c                   |  129 +++
 OvmfPkg/FswHfsPlus/fsw_hfsplus.c                   |  535 ++++++++++
 OvmfPkg/FswHfsPlus/fsw_hfsplus.h                   |  238 +++++
 OvmfPkg/FswHfsPlus/fsw_lib.c                       |  294 ++++++
 OvmfPkg/FswHfsPlus/fsw_strfunc.h                   |  453 +++++++++
 OvmfPkg/Include/Library/AppleSupportLib.h          |   28 +
 OvmfPkg/Library/AppleSupportLib/AppleSupport.c     |  107 ++
 .../Library/AppleSupportLib/AppleSupportLib.inf    |   50 +
 OvmfPkg/Library/AppleSupportLib/Bds.c              |  151 +++
 OvmfPkg/Library/AppleSupportLib/Bds.h              |   21 +
 OvmfPkg/Library/AppleSupportLib/Common.h           |   24 +
 OvmfPkg/Library/AppleSupportLib/Console.c          |   86 ++
 OvmfPkg/Library/AppleSupportLib/Console.h          |   28 +
 OvmfPkg/Library/AppleSupportLib/Datahub.c          |  104 ++
 OvmfPkg/Library/AppleSupportLib/Datahub.h          |   32 +
 .../Library/PlatformBootManagerLib/BdsPlatform.c   |   10 +
 .../Library/PlatformBootManagerLib/BdsPlatform.h   |    1 +
 .../PlatformBootManagerLib.inf                     |    1 +
 OvmfPkg/OvmfPkgIa32.dsc                            |    8 +
 OvmfPkg/OvmfPkgIa32.fdf                            |    3 +
 OvmfPkg/OvmfPkgIa32X64.dsc                         |    8 +
 OvmfPkg/OvmfPkgIa32X64.fdf                         |    3 +
 OvmfPkg/OvmfPkgX64.dsc                             |    8 +
 OvmfPkg/OvmfPkgX64.fdf                             |    3 +
 33 files changed, 5287 insertions(+)
 create mode 100644 OvmfPkg/FswHfsPlus/FswHfsPlus.inf
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_base.h
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_core.c
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_core.h
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_efi.c
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_efi.h
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_efi_base.h
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_efi_edk2_base.h
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_efi_lib.c
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_hfsplus.c
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_hfsplus.h
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_lib.c
 create mode 100644 OvmfPkg/FswHfsPlus/fsw_strfunc.h
 create mode 100644 OvmfPkg/Include/Library/AppleSupportLib.h
 create mode 100644 OvmfPkg/Library/AppleSupportLib/AppleSupport.c
 create mode 100644 OvmfPkg/Library/AppleSupportLib/AppleSupportLib.inf
 create mode 100644 OvmfPkg/Library/AppleSupportLib/Bds.c
 create mode 100644 OvmfPkg/Library/AppleSupportLib/Bds.h
 create mode 100644 OvmfPkg/Library/AppleSupportLib/Common.h
 create mode 100644 OvmfPkg/Library/AppleSupportLib/Console.c
 create mode 100644 OvmfPkg/Library/AppleSupportLib/Console.h
 create mode 100644 OvmfPkg/Library/AppleSupportLib/Datahub.c
 create mode 100644 OvmfPkg/Library/AppleSupportLib/Datahub.h

-- 
2.7.4



^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-03-31 20:02 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-07  3:14 [RFC PATCH 0/6] OVMF: HFS+ (and Mac OS X boot) Gabriel L. Somlo
2017-03-07  3:14 ` [RFC PATCH 1/6] FswHfsPlus: add File System Wrapper (FSW) interface code Gabriel L. Somlo
2017-03-07  3:14 ` [RFC PATCH 2/6] FswHfsPlus: connect FSW code to EDK2, fix compile discrepancies Gabriel L. Somlo
2017-03-07  3:14 ` [RFC PATCH 3/6] FswHfsPlus: implement FSW driver for the HFS+ file system Gabriel L. Somlo
2017-03-07  3:14 ` [RFC PATCH 4/6] EdkCompatibilityPkg: allow ConsoleControl protocol to be used Gabriel L. Somlo
2017-03-07  3:14 ` [RFC PATCH 5/6] OvmfPkg: add Apple boot support Gabriel L. Somlo
2017-03-07 16:14   ` Laszlo Ersek
2017-03-07  3:14 ` [RFC PATCH 6/6] OvmfPkg: enable AppleSupport library for Ovmf firmware Gabriel L. Somlo
2017-03-07 16:21   ` Laszlo Ersek
2017-03-07 15:41 ` [RFC PATCH 0/6] OVMF: HFS+ (and Mac OS X boot) Laszlo Ersek
2017-03-29 23:22 ` Phil Dennis-Jordan
2017-03-31 20:01   ` Gabriel L. Somlo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox