This version is now deprecated, consult the downloads page for a link to the latest version.
This is a complete rewrite of the pfix utility and the beginning of something more. pfix 3.1 was a solid performer, I received no bug reports, but truth is it was a little messy. I had seen many issues with the way kextd/kextcache functions in Snow Leopard and users rebooting prior to the system prelinked kernel caches being completely built. So to ensure fail proof operation I coded it to build all of the caches manually, not just the Extensions.mkext. This wasn’t the ideal way to do things, but it required minimal time on my part to simply fix bugs in 3.0/2.x rather than rewrite it in a new format.
That said, with OS X 10.7 about to be officially released to the wild it was time for a rewrite, not only to clean up the old code but to expand functionality to the new version of OS X.
One of the biggest complaints I received about pfix 3.1 was that it took so long to execute… Why wait so long when you can just chown/chmod and then touch /System/Library/Extensions? Well the reason is simple really – it is not the fault of pfix – it is the fault of Snow Leopard’s kextcache. It takes a ridiculously long time to rebuild the system prelinked kernel caches if there is a problem with them or they don’t exist after having been deleted. If you were to simply touch /System/Library/Extensions and then reboot imediately, kextcache would not be finished and it will take you up to 15 minutes to boot your system, if it boots at all. Good news is, Lion doesn’t have this problem.
So what have I changed? Well not only will myFix detect the OS version it is running on, but it also detects the OS version of the target and adjusts the functions and syntax for mkext creation accordingly. I have extended support for it to run on Leopard and Lion. I have dropped support for running it on Tiger. I have also added full support for Leopard and Lion as target’s. So now you can use myFix from Leopard, Snow Leopard, and Lion to repair any Leopard, Snow Leopard, or Lion volumes.
Additionally instead of running all the commands manually I let kextd/kextcache do it’s job – after the initial permission repair (and optional diskutil repairPermissions) it will simply touch /System/Library/Extensions – and then it will WAIT until kextcache is finished. In some cases it will still take a while for kextcache to finish, but by waiting it will let you, the user, know when it’s safe to reboot so that you do not reboot your system prematurely and have a problem. In most cases however it will actually finish quite quickly. By adding the optional flag to skip the diskutil repairPermissions step it will go even faster, however, I do suggest you let diskutil repairPermissions run as chmod 0755 is *NOT* the correct permissions for many of the files in /System/Library/Extensions.
What did I mean by “and the beginning of something more”?
myFix will be more than simply a Permissions & Caches utility. In the future I will be adding additional functions to myFix, backup/restore functions, kernelcache support via bundled SLE extension, chameleon repair/updating, and more are all on the todo list…. Stay tuned…
So without further adieu let me present you with myFix 1.0
Basic Usage: myfix [option]
Example Usage: myfix -v 1 -t /Option GNU long option Meaning
-h –help Show this message
-s –skipsystem Don’t repair /system/library/extensions
-d –skipdiskutil Don’t repair permissions with diskutil
-v <level> –verbose <level> Set kextcache output’s verbosity level
-t <path> –target <path> Path to target partition to run myfix on
A complete list of the changes to the pfix functions from pfix v3.1 are as follows:
- -Completely re-written from scratch with much cleaner syntax and improved functionality
- -Target OS version detection
- -Added skip diskutil repairPermissions flag
- -Added support for OS X 10.5 Leopard and OS X 10.7 Lion targets
- -Improved support for OS X 10.6 Snow Leopard
- -Removed support for OS x 10.4 completely
Conti, just to give you more info about my hardware and the sound card, I found this site with more info : http://www.computerbase.de/forum/showthread.php?t=522519
In other sites they do not give info about the soundcard, here is the dirst time I see talking about Realtek. In this case what do you think is better to use as kext ? On my SL10.6.2 to 10.6.8 myHack, it is for sure VoodooHDA.kext that I have, as well as AppleHDA.kext, and it works ! I don’t see anything as Realtek kext … Why doesn’t work in Lion 10.7, I cannot see …
Hi,
Actually I am on a Lion 10.7, update over a SL10.6.8, and by chance yesterday I saw in my /S/L/E folder, among all kexts, another /Extension forder – the same as this one in /E/E
Is it necessary there, or I could by mistake move or copy it to a new place (have it in double !)
I tryed to delete it (changet the name with a weird extension), but the system paniced after reboot and I replaced the folder.
Any suggestion ? Otherwise LIon works well (no sound ! – grrrrr!) Thanks a lot !
Popeto I have no idea how or why that directory got there, it should not be… myHack certainly didn’t put it there – did you use migration assistant?
If it won’t let you remove things like this from the running OS you can boot to the Installation disk and open up Terminal from “Utilities” menu, and remove it there. Remember to run myfix to repair permissions or boot with -v -f at chameleon boot prompt.
I also suggest you move it to somewhere it will not get loaded at first, before you delete it, just in case.
OK, what I did – deleted this folder and passed myFix in terminal. Worked! And I foundd that myFix adds pmVersion=102. Till now I used =0 and worked, but probably 102 is the good and right figure… Trying to copy VoodooHDA.kext in /E/E also (it is in /S/L/E already, but no sound!
While there may be a build of VoodooHDA that works in lion somewhere, I personally have not seen it actively developed since about two years ago, at least not publicly. Most users on IRC are reporting that it does not work. I personally use a dsdt edit and LegacyHDA + version bumped 10.6.2 AppleHDA.kext (binpatching is another option but I was feeling lazy and it still works) for my audio.
As far as pmVersion=102 – yes that is the correct setting for 10.7.0 – you will however need to be using the latest build of SleepEnabler.kext (bundled with myHack 2) for it to work.
pmVersion=0 disables SleepEnabler
Yes, I’m using your set of kexts and pmVersion=102 works for me.
Could you elaborate more about dsdt edit and LegacyHDA + version bumped 10.6.2 AppleHDA.kext, please ??
hi good day Scott please tell me where can i put this myfix v1.0? thanks before :)
@MARKSMART: You may put it anywhere you want it to be, my preference is to place it in /usr/bin so that it is available from any path in the terminal. This is where the myHack installer placed pfix in the past (and will place myFix in the future).
I have a question.. when I try to run this on a fresh install of 10.6.3 I get the message invalid cpu type..
what am I doing wrong..
Dear Conti how are you since long time i waited for your welcome back :) we are 10.7
for now. Truly many thanks for your best work in clean hack world
Go ahead Friend with best greetings
Thanks, great work as always!
cheers mate =]]
myhack to update it?
Please! his work has always been the best!
You are great!!
Nice to see you again
Huzzah!