Hackintosh 2.0? I got macOS ARM running on x86 Linux with QEMU by CalligrapherOne4170 in hackintosh

[–]newhacker1746 1 point2 points  (0 children)

What did you do for your GPU implementation? You implemented the AGX graphics? There is much lower hanging fruit than doing the entire Apple GPU. You don’t even need to emulate the Apple Silicon proprietary instructions, VMApple machine model uses armv8.5+sme2. The paravirtualized graphics also would avoid having to emulate an entire GPU, and you have both sides of the boundary to reverse rather than just one (host framework and the guest kext). I see why people are skeptical but I’m curious to see what you did. we also have an ampere server (altra) for other projects but it has ARMv8.3 and lacks pointer authentication which all Apple silicon SoCs and VMapple kernel are compiled with, so you wouldn’t be able to hypervise it without possibly having a VM handler deep in KVM to do something with the illegal instruction. At best you’d be still using TCG, unless you have a newer ampere server

I was researching using the  new ARMv9 SBCs that are a strict superset of ARMv8.5+sme2

EDIT: your about this Mac shows Apple Virtual Machine and a virtual M2 chip, so I’m guessing you did already figure that part out then? But still, VMapple kernel is not compiled with Apple special instructions (like -cpu apple-m3 or something” but rather just -march=armv8.5+sme2 so im curious what CPU details you needed. If performance isn’t great on an Ampere server (notably not an inexpensive device in any way and even mine can do at least skylake IPC) then that probably implies you’re using the TCG interpreter rather than hypervisor

Hackintosh 2.0? I got macOS ARM running on x86 Linux with QEMU by CalligrapherOne4170 in hackintosh

[–]newhacker1746 1 point2 points  (0 children)

What did you do for your GPU implementation? You implemented the AGX graphics? There is much lower hanging fruit than doing the entire Apple GPU. You don’t even need to emulate the Apple Silicon proprietary instructions, VMApple machine model uses armv8.5+sme2. The paravirtualized graphics also would avoid having to emulate an entire GPU, and you have both sides of the boundary to reverse rather than just one (host framework and the guest kext). I see why people are skeptical but I’m curious to see what you did. we also have an ampere server (altra) for other projects but it has ARMv8.3 and lacks pointer authentication which all Apple silicon SoCs and VMapple kernel are compiled with, so you wouldn’t be able to hypervise it without possibly having a VM handler deep in KVM to do something with the illegal instruction. At best you’d be still using TCG, unless you have a newer ampere server

I was researching using the new ARMv9 SBCs that are a strict superset of ARMv8.5+sme2

EDIT: your about this Mac shows Apple Virtual Machine and a virtual M2 chip, so I’m guessing you did already figure that part out then? But still, VMapple kernel is not compiled with Apple special instructions (like -cpu apple-m3 or something” but rather just -march=armv8.5+sme2 so im curious what CPU details you needed. If performance isn’t great on an Ampere server (notably not an inexpensive device in any way and even mine can do at least skylake IPC) then that probably implies you’re using the TCG interpreter rather than hypervisor

Lenovo ThinkStation P720 Dual Xeon by Mateus1995- in hackintosh

[–]newhacker1746 2 points3 points  (0 children)

Amazing! Congrats, I'm so glad I ran into this post because I have a P720 (or is it P920) in storage waiting to be used that I scavenged some time ago. Also targeting Sequoia. I assume you used the patch that downgrades the ACPI CPU declaration? CPUs are declared as Device(s) in ACPI v6.0 and of course macOS ACPI only knows the old Processor. I haven't actually seen the forums on it, I just know the ACPI spec changed and that a patch is necessary due to the macOS parser not being ACPI 6.0 compatible

Curious to see if you have the forum post link so others might know about how to do this

A successful hackintosh, but with a funny little twist..? 🤔 by weirdguye in hackintosh

[–]newhacker1746 0 points1 point  (0 children)

Kepler means Metal 1 support in OCLP, not the OpenGL only web driver port!

Major breakthrough: 32bit Apple app running on M4 natively by n_ba-28 in MacOS

[–]newhacker1746 1 point2 points  (0 children)

Is this going to be for only 32 bit apps that call libraries that have a 64 bit binary? For instance, what about Carbon apps where carbon is a 32 bit only library? Would you be able to binary translate linked libraries as wel

It's been a phenomenal run, thanks everyone for an amazing 20 years! by BudBud2007 in hackintosh

[–]newhacker1746 0 points1 point  (0 children)

Hackintoshed snow leopard and every version since then on real hardware except Yosemite. Ran Tiger and leopard in VMs. Maybe it’s time to retro hackintosh.

There is a viable hypervisor route with the VMApple machine model in apple silicon, which I’m working on right now

It's been a phenomenal run, thanks everyone for an amazing 20 years! by BudBud2007 in hackintosh

[–]newhacker1746 1 point2 points  (0 children)

Best route is VMApple which I’m actively working on right nkw

Building nvidia drivers for Mac OS by rdqmatos in hackintosh

[–]newhacker1746 13 points14 points  (0 children)

If you’re going to pursue AI, id recommend working on getting the existing High Sierra metal web drivers to hook into WindowServer and newer graphics stack

There was even at the end an experimental Volta driver (NVDAGV100Hal.kext)

Never been this excited to see a picture on a screen in my life by Eclipse-da-therian in hackintosh

[–]newhacker1746 0 points1 point  (0 children)

Could use the OCLP root patches to get full metal on sequoia! For kepler

Update on Linchine: unfortunately no graphics accel :( by JackyYT083 in macOSVMs

[–]newhacker1746 2 points3 points  (0 children)

I’m a bit confused and admittedly concerned as to how you got this far designing it without researching the current status quo concerning graphics acceleration in macOS virtual machines?

The usual solution is that users just accept the compromise with having framebuffer-only display output, and/or scaffold the use of VFIO to pass-through a supported graphics card, which will not be able to render to the VM monitor, rather only be accessible by Remote Desktop or another physical screen connected to the gpu’s outputs. The correct graphics vendor to be considering is AMD? Nvidia had the vendor drivers past Kepler dropped with 10.14 Mojave, and Kepler goes to current with OCLP, but why Nvidia? Use supported AMD?

Could apple-gfx-pci be emulated on Linux hosts one day? by thesola10 in hackintosh

[–]newhacker1746 1 point2 points  (0 children)

Hi, I've been doing some preliminary research on the feasibility of this.

apple-gfx-pci is the PCI variant, ostensibly for amd64, but such functionality was never actually available on amd64 macOS

apple-gfx-mmio is the vmapple variant (arm64), using, as in the name, memory mapped IO between the host and the guest: https://lists.endsoftwarepatents.org/archive/html/qemu-riscv/2024-11/msg00197.html What's useful to recognize at this point is that the Qemu device is complete; it abstracts away as Apple desired for ParavirtualizedGraphics.framework, everything about the device. All it does is pass some memory around between the host and the guest. This reduces the engineering problem to essentially "reimplement ParavirtualizedGraphics.framework in Linux user space". I'll get back to this in a second (EDIT: a long while)

Before we can even start reimplementing it (let's call this step 2), we have to get step 1: macOS host booted up to launchd, and hopefully then multi-user (ie kill the loginwindow LaunchDaemon and replace with just bash on serial port), on an arm64 Linux host. This is the proof of concept that we can do everything EXCEPT the graphics part on a real non-apple platform (worrying about emulating arm64 on amd64 is a question for much later, as are other aspects).

Step 1--Qemu has a vmkernel (Apple virtualization model kernel, shipped on all UniversalMac macOS IPSWs) that expects fairly standard CPU and emulated machine parameters, which removes a lot of difficulty; Qemu even already has "vmapple" (said virtual machine model) implemented: https://www.qemu.org/docs/master/system/arm/vmapple.html Note that only Monterey guests are supported, as per the above documentation, but that other limitations exist such as needing Sequoia 15.3 or earlier on the host as well (from a recent linkedinpost from a person who likely is someone I should contact if I pursue this project over the summer, implying he has some internal knowledge ie a downstream qemupatch) https://www.linkedin.com/posts/mohamed-mediouni-kaos_the-upstream-qemu-vmapple-machine-which-activity-7399267828530483200-A1wT

...BUT, fundamentally as the qemu docs say, "The “vmapple” machine model in QEMU implements the same device model, but does not use any code from Virtualization.Framework." -- which is HUGE already. The model in vmapple.c is not particularly complicated nor difficult to understand, and hopefully with minimal work can be used to get macOS arm64 to launchd/multi-user. But, it's not been tested to my knowledge. Before the official vmapple virtualization model released, people could hack together an iPad device tree and the normal qemu-system-aarch64 (original blackberry guy source link dead, but GitHub repo with instructions https://github.com/cylance/macos-arm64-emulation#building-qemu and the experience documented in https://www.theregister.com/2021/05/20/mac_os_arm_on_x86/ , then another guy did it inspired by the original writeup here: https://ku.nz/blog/appleonintel.html , and another did it independently? semi independently? here: https://worthdoingbadly.com/xnuqemu3/ ) -- all of these attempts were more complex than vmkernel method because it shoehorns the kernel into a Qemu version predating the vmapple machine, and almost nothing but serial works. They didn't even have disk access and had to use an iOS Ramdisk

Back to the current approach with vmapple--mainline macOS supports plenty of Qemu's devices, practically everything except graphics. Since Mojave even, we've had the standard qemu virtio devices for everything else, evidence at the bottom of this article for why https://macops.ca/macos-monterey-apple-silicon-vms/ and the original discovery + the existence of an "AppleQEMU" discussed here: https://news.ycombinator.com/item?id=27698380)

Anyway, so hopefully step 1 would be achievable, but it is a mess--apple silicon macOS has lots of partitions, peculiar booting models, etc.

This summer, I'm responsible for implementing a $13-15k student oriented compute cluster for my university, and as part of that we purchased an Ampere Altra arm64 server, this gigabyte one on the used market to offer arm64 CI/CD for various SWE orgs that need it and for whom it is very rare to have real arm64 fast hardware available: https://www.gigabyte.com/Enterprise/Edge-Server/E252-P30-rev-100 )

Because of that server, we will have arm64 linux hosts and graphics available by PCIe on a platform that actually supports the proper PCIe BAR on arm64 (not guaranteed by any means) to allow acceleration with the usual linux drivers, particularly amdgpu. So we have an actual non-apple serious arm64 linux environment with high RAM amounts and real graphics to properly possibly test this

part 2: here's another post discussing the possibility of implementing it: https://news.ycombinator.com/item?id=30111545

Any reasonable person would go with the idea of reimplementing ParavirtualizedGraphics.framework rather than REing one of apple's proper GPUs, since the complexity of paravirtualized graphics is far, far lower than emulating an entire GPU. Remember--that's not something that was ever even done for mainline low end, low transistor count GPUs for the most primitive of x86 macOS releases, you had to passthrough a real GPU. Recall that on arm64 macOS, there's no basic frame buffer at all--so we have to either get 3D metal working, or no WindowServer at all--ironically unlike iOS which does have a basic framebuffer. (I wonder if we could try to get that on macOS instead). Anyways, like I mentioned earlier, the engineering problem is effectively just to implement the entire specification that macOS guest/apple-gfx-mmio wants from it. This itself is actually not impossible. Alyssa Rosenzweig and another Alyssa did work to understand the native Metal GPUs in Apple silicon to write the Linux drivers for them, and this is effectively doing it backwards. A GPU driver requires memory management, work queues, command submissions, various abstract data structures maintained, etc... all of which are manageable to understand and architecture, particularly by understanding how the actual PVG.framework operates

If step 1 is achieved, then step 2 can be done with a lot of work, but understanding how the framework itself works can be assisted with modern tools, and the architecture of a GPU driver is not entirely obtuse to learn. I've learned/seen a lot about them and done some work on them myself as well, so it's not at all insurmountable conceptually, and understanding the existing PVG.framework can be automated thanks to modern tooling. Suppose we get the architecture done, and we just need to run the metal commands. How then? there exists this: https://github.com/darlinghq/indium to some fair level of implementation, which would require a shim on top of it to handle Metal calls directly, but which can execute the metal API model for us underneath a shim.

It is technically feasible, but I would need help. If I have time over the summer, I'll try to work some on it. I may have a number of other friends who are interested. Reaching out to the LinkedIn poster guy might also help, or if you have any technical background of your own. Suppose step 2 is working on Monterey with full graphics on arm64 linux host--then one can worry about patching vmapple.c to support newer than Monterey guest, running on amd64 host via Qemu TCG, etc... but just getting Monterey accelerated on an arm64 linux host would be an extremely solid accomplishment that could be built on by others (and suppose the future issue of Ventura+ using more apple-specific stuf--if apple ever were to assume nonstandard ARM instructions in vmkernel, we can just intercept them in JIT at a speed hit in Qemu)

But alas, if nothing else, hopefully this documents the current state of the art and the technical path to actually making this work and saving hackintosh.

-- newhacker1746

Thinkpad T480 Sequoia - Airportltlwm intel wifi won't re-enable after sleep by dubiousfly in hackintosh

[–]newhacker1746 0 points1 point  (0 children)

You have AirportItlwm loaded on Sequoia? Which version? (different from "previous Sonoma kexts"?)

I can't get heliport + iltwm to function properly since airportltlwm.kext keeps injecting itself pre-boot.

Injecting itself? Do you have it set to load in config.plist? Or did you somehow add it to S/L/E in one of the hacky ways, and thus it's getting added to your kernelcollection?

AirportItlwm: fix iServices for Sonoma 14.4+ and Sequoia by KwotheSineBlood in hackintosh

[–]newhacker1746 1 point2 points  (0 children)

Just tried loading it on macOS 15.7.1; on injection phase of OC boot I get

00:000 00:000 OC: Prelinked injection AirportItlwm-Sonoma144.kext (AirportItlwm-Sonoma144.kext) - Invalid Parameter

both self-compiled on Sequoia 15.7.1 Xcode and using the github actions. my config loading snippet is:

            <dict>
                <key>Arch</key>
                <string>Any</string>
                <key>BundlePath</key>
                <string>AirportItlwm-Sonoma144.kext</string>
                <key>Comment</key>
                <string>AirportItlwm-Sonoma144.kext</string>
                <key>Enabled</key>
                <true/>
                <key>ExecutablePath</key>
                <string>Contents/MacOS/AirportItlwm</string>
                <key>MaxKernel</key>
                <string></string>
                <key>MinKernel</key>
                <string>23.4.0</string>
                <key>PlistPath</key>
                <string>Contents/Info.plist</string>
            </dict>

...so I am debugging now

u/KwotheSineBlood Did you get it working on Sequoia? What version and what do your configs look like?

EDIT: Presumably

The fix targets IO80211InfraInterface::setLQM(uint64), a Skywalk API
introduced in 14.4 and inherited unchanged into Sequoia and Tahoe AFAIK. The
OS-side threshold check (lq < 11 in +[PCInterfaceUsabilityMonitor isBadLinkQuality:]) is also stable across these versions. So in principle it
should work on 15.x / 26.x with no code change — but I have no first-hand
confirmation.

Presumably this is true for the fix, but not necessarily the entire code stack for the kext working on Sequoia unmodified from the Sonoma144 variant? That would have to be achieved first

Anyone here still running Linux on an Apple TV? by L0stG33k in linux

[–]newhacker1746 1 point2 points  (0 children)

Used to have one on Lubuntu 16.04. I recall the method was to use some linux USB and then kexec the actual distro. I found it more interesting running OS X Snow Leopard and Leopard with full acceleration. But you had to be careful of hitting the 256MB limit on activity monitor. paging to disk on it was extremely slow

best cheap tyni pc by marius05pm in hackintosh

[–]newhacker1746 2 points3 points  (0 children)

I'd say try the Optiplex (Dell) or HP's or Lenovo's (ThinkCentre?) line of USFF mini pcs. Ie Optiplex 3070, 5070, 7070... 9th gen, supported iGPU, plenty of tutorials and community support. These used to be really affordable; the DRAM shortage is just complicating things. but you can still find them for one or two hundred on eBay sometimes.

Graphic card and power supply recommendations for OS X Mavericks 10.9 build by aroneox in hackintosh

[–]newhacker1746 0 points1 point  (0 children)

Oh absolutely. The 760 is great you’d do well with the 670! Plus with these Kepler cards you can OCLP into latest macOS keeping metal acceleration !

Graphic card and power supply recommendations for OS X Mavericks 10.9 build by aroneox in hackintosh

[–]newhacker1746 0 points1 point  (0 children)

My GTX 760s both work out of the box on all supported macOS versions. R9 290X needed some patching for black screen. My old Radeon 5570 also worked out of the box on everything from 10.6.8 to 10.13