I have a Macbook Air 13" (2017 model, base 1.8Ghz) and I wanted to see if I could run Mavericks on it. The 2017 model is identical to the 2015 save the upgraded processor and different Board-ID (Mac-937CB26E2E02BB01). Its Board-ID isn't whitelisted until Sierra 10.12.4 or something. I could go as far back as 10.10.3 (added support for 2015 macbook airs) and run fully supported with just a platformsupport.plist patch, but I wanted to go further. Keep in mind that Yosemite and Mavericks are very similar in terms of architecture (very few changed kernel functions) AppleIntelBDWGraphics is the driver for Broadwell Intel HD 6000.
It has a Broadwell chip, and of course the 10.9.5 kernel does not whitelist it and so it would refuse to start. Using this helpful post (https://pikeralpha.wordpress.com/2013/06/11/xnu-10-8-3-haswell-compatibility/) I found the files I needed to edit to add support for Broadwell. I downloaded the OS X xnu source from here: opensource.apple.com/tarballs/xnu/xnu-2422.115.4.tar.gz
and got to work. I added the relevant information, and finally compiled a kernel and Mavericks booted. (Of course after also editing PlatformSupport.plist and whitelisting my board-id) mavericks-on-mba2017
However, virtually everything didn't work. The keyboard backlight worked, the Broadcom bcm4360 worked, and that was it. The keyboard and trackpad are spi, and after simply copying the relevant kexts (applehsspihidriver, etc) from 10.10.3 (the first os to include them) and kextloading them, the keyboard and trackpad worked as if they were native to Mavericks. The AppleIntelBDWGraphics and related drivers didn't work, however. (Also pulled from 10.10.3) AppleIntelBDWGraphicsFramebuffer did load, and that gave me CI (CoreImage) support, but not the much sought-after translucent menubar (Quartz Extreme-related) and so I got to work. Just invoking kextutil immediately gave me what went wrong:
$ sudo kextutil AppleIntelBDWGraphics.kext
Diagnostics for /System/Library/Extensions/AppleIntelBDWGraphics.kext:
Code Signing Failure: code signature is invalid
WARNING - Invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext "/System/Library/Extensions/AppleIntelBDWGraphics.kext"
(kernel) kxld[com.apple.driver.AppleIntelBDWGraphics]: The following symbols are unresolved for this kext:
(kernel) kxld[com.apple.driver.AppleIntelBDWGraphics]: _IOLockWakeup_darwin14
(kernel) kxld[com.apple.driver.AppleIntelBDWGraphics]: _gpu_accumulate_time
(kernel) kxld[com.apple.driver.AppleIntelBDWGraphics]: _gpu_describe
(kernel) Can't load kext com.apple.driver.AppleIntelBDWGraphics - link failed.
I could easily fix IOLockWakeup_darwin14, as a quick google search confirmed my suspicions that IOLockWakeup is identical and that truncating darwin14 would cause no harm. I hex edited the executable, and that reduced my unresolved symbols to just _gpu_accumulate_time and _gpu_describe. After going back to the source and tracking down the relevant code to osfmk/kern/energy_perf.c in Darwin 14.0.0 (Yosemite) I then painstakingly copied all necessary files to resolve those 2 symbols and then by hand corrected compiler errors. Once the kernel (finally) compiled, I immediately tested it and indeed the symbols were resolved, as the kext loaded:
$ sudo kextutil AppleIntelBDWGraphics.kext
Diagnostics for /System/Library/Extensions/AppleIntelBDWGraphics.kext:
Code Signing Failure: code signature is invalid
WARNING - Invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext "/System/Library/Extensions/AppleIntelBDWGraphics.kext"
$ kextstat | grep AppleIntel
14 0 0xffffff7f808e7000 0x2b000 0x2b000 com.apple.driver.AppleIntelCPUPowerManagement (217.92.1) <7 6 5 4 3 1>
24 0 0xffffff7f809a3000 0x3000 0x3000 com.apple.driver.AppleIntelCPUPowerManagementClient (217.92.1) <7 6 5 4 3 1>
36 1 0xffffff7f80a58000 0x8000 0x8000 com.apple.driver.AppleIntelLpssDmac (2.0.57) <11 10 5 4 3>
37 1 0xffffff7f80a60000 0xa000 0xa000 com.apple.driver.AppleIntelLpssGspi (2.0.57) <11 10 7 5 4 3>
43 1 0xffffff7f80b28000 0x14000 0x14000 com.apple.driver.AppleIntelLpssSpiController (2.0.57) <37 36 10 5 4 3>
78 0 0xffffff7f81248000 0x54000 0x54000 com.apple.driver.AppleIntelBDWGraphicsFramebuffer (10.0.6) <77 76 75 18 11 10 7 6 5 4 3 1>
111 0 0xffffff7f81689000 0x79000 0x79000 com.apple.driver.AppleIntelBDWGraphics (10.0.6) <110 76 75 11 7 6 5 4 3 1>
I won't go into too much detail of how and what files I edited in the source code yet, because there is still one problem: QE (Quartz Extreme) still doesn't work in the GUI. Quickly checking Console.app reveals why:
10/2/17 9:19:36.687 PM WindowServer[523]: _CGXGLDisplayContextForDisplayDevice: No matching context for device (0x7ff91241e030) - disabling OpenGL
Another google search doesn't reveal anything helpful. All links relate to simply silencing the messages, and they have to do with those USB DisplayLink monitors that obviously don't have QE/CI drivers written for them. However, I am using a supported graphics card with a loaded kext, and I wanted to see if it was possible to binary patch WindowServer or something like that to manually enable support for my device. Thank you.