-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Kernel Extension Won't Load on macOS Sequoia #129
Comments
Awesome, we shouldn't be calling sprintf anyway, I've been frustrated with Linux devs adding more of them. I'll grab the beta, and roll out a build with a fix and see if other things break. |
While I wait for VM to install, I produced: I have not yet tested it, but all I did was change sprintf() calls into snprintf() should you feel interested in testing it. If you get a boot-loop, just run the --trigger-panic-medic |
Excellent. Sadly, I won't get back to a machine where I can test it for a few hours, but I'll try it when I do (unless your VM reveals other problems first). |
Hmm remotely I can only do i386 VMs (thanks apple!) but I can at least check sprintf is fixed. |
Well, I actually got away for a couple of minutes to try it, and the kext seems to load fine. Of course I have no ZFS pools on this machine yet so I don't know what'll happen when I try to actually use one, but at least no boot loop. |
create an empty file: |
Assuming /var/tmp is still writable, not sure if macOS made them all readonly |
That seems to work fine. I copied some disk images to it, mounted them, they seemed to work. That bodes well. Don't have time for any more detailed testing right now, though, I'm afraid. |
Awesome, thanks for your report |
@lundman Just for information, do you have an ETA in mind for a full release of 2.2.3? Using an rc isn't a dealbreaker by any stretch, but it is convenient to be able to count on Homebrew to pull the latest release for me. |
Ah that is a fair point, I'll roll out a version, don't think there are any major issues with it. |
Fortunately macOS kexts have been highly forward-compatible, i.e., they work reasonably across major system upgrades. (Reasonably in that you can still use existing pools, filesystems, and zvols reliably). Any recent macOS will tend to alert you if there are any kernel extensions disabled at boot / across an upgrade. A panic (including, annoyingly, a watchdog panic tripped by slow I/O) at shutdown in some circumstances will also caues macOS to require you to visit System Settings > Privacy & Security to reauthorize one or more extensions. Even for unprivileged users, "zpool version" will report the userland and kernel extension ("kmod" in that case) versions; they should match. "sysctl zfs" will also report the kernel extension version. If those work, then the zfs kernel extension is active. When upgrading across macOS versions and keeping the same kernel extension (& userland), I tend to do: (in one window, to watch what the kext is doing)
And in another, things like this (most recently looked-at options preserved in cut-and-paste from shell history):
More complicated testing involves fio, for example:
varying options. Typically I do this on an M1 mini that doesn't normally do zfs, before deploying a new kernel extension onto anything that relies on zfs working. (Likewise, if an Apple software update breaks that M1 mini, it won't hurt too much). And of course, one can also run the full zfs test suite in the source tree (although probably not the best idea to do it on a system where one is normally running zfs). |
System information
Type | Version/Name
macOS | Sequoia Developer Beta 1 (24A5264n)
ZFS Version | 2.2.3 rc1 (Apple Silicon)
Describe the problem you're observing
The kernel extension does not load on macOS Sequoia, because it can't link to an implementation of
_sprintf
. Here's what it says when trying to manuallykextload
it on the command line:I can't imagine that it's going to be too hard to make the jump to Sequoia in general - they didn't announce any major changes to kernel extensions as far as I've been able to find - but clearly there are some minor issues, at least.
Describe how to reproduce the problem
Install OpenZFS on Sequoia and try to load the kernel extension.
The text was updated successfully, but these errors were encountered: