Comment by NobodyNada
4 years ago
The changes are in macOS’s bootloader. Previously, the bootloader was only designed to load a macOS kernel executable, which was stored on disk as a Mach object file with some particular constraints. The Asahi project had to use a rather ugly linker script to generate an executable that “looks like like” a macOS kernel but is actually a first-stage Linux bootloader [1].
In macOS 12.1, Apple engineers changed the format of the kernel image, which broke the Asahi install process. However, they also added a “raw image mode” which allows the bootloader to load things that don’t look like macOS kernels — it’s an officially-supported boot flow for the Asahi project to use going forwards without fear of macOS updates breaking it again. (Plus, it makes that linker script much simpler [2]).
[1]: https://github.com/AsahiLinux/m1n1/blob/84acf60c24b8c9e28e60... [2]: https://github.com/AsahiLinux/m1n1/blob/92aca22119a0afda9799...
Ok, but nothing stops them from removing it. It might allow for a raw image to boot in 12.1, but there are no guarantees it won't go away in 12.2. Why is there no concern about that?
Because it isn't a new problem? Apple could have locked out Asahi at any time, but have shown no inclination of doing so. There's no reason for them to build a feature that facilitates this specific use case and then remove it in a future version.
Assuming for the sake of argument that they did, what you're left with is what you had before: having to build the process around format changes to Apple's supported process. The Asahi devs went into this project knowing that they were working around Apple's internal needs, and having to revert back to their original solution and its tradeoffs at some undefined future point isn't an existential threat to the project.
It is a huge assumption that Apple is explicitly doing anything for the benefit of Asahi Linux. Apple likely has their own reasons for doing whatever they are doing.
1 reply →