21 May 2009

Addendum to Lessons Learned

Stuff that are most often taken for granted but are important nonetheless to survive hackintoshing:

1) Know how to interrupt Darwin, the bootloader (as if you didn't know it's a bootloader, hey? Just wanted to clear out that that's not my boyfriend's name or something ;))

> by default, you've got  a five second countdown before OS X actually starts booting up. During that time, hit any key on your keyboard and you'll get to the boot prompt.



2) Know your flags! United Nations member countries not included - haha, so not funny and a desperate attempt at humor.

"-v" : verbose mode - OS X normally uses graphical boot mode, so you get that screen with a grey apple and a spinning wheel at the bottom. But with verbose mode, you only get text flashing across your screen - especially useful when you want to see what's going on as OS X boots up for problem diagnosis.

"-f" : not exactly sure that this mode's officially called but I use it to force OS X to load kexts. Sometimes it happens that you've installed a kext alright but it isn't recognized by the system, you just gotta make OS X to load it against its will.

"-x": safe boot mode - when the system refuses to boot properly and you wanna go in fix stuff but want to do so in GUI, this would be the way to go.

"-s" : single user mode - when all else fails, use this. It'll boot up the system in command line mode and this is the time when you need to...

3) Know your Terminal commands - I'm a total noob when it comes to Mac OS X but I've been dabbling with Linux for quite sometime now, being weened on Mandrake Linux run computer labs in college (I studied in a state university, which, for a third world country, means no sufficient funds coming in from the government, hence the need to go open source), I've a fairly good amount of basic bash knowledge. And OS X being Unix essentially underneath the glossy Aqua exteriors, that knowledge has proven to be indispensible.

Here are some basic commands I find myself using time and again:



"sudo passwd root" : for enabling and creating a password for the root account (super user)

"/sbin/fsck -fy" : for making modifications to the files in your OS X drive. followed by:

"/sbin/mount -uw /"

"sudo rm -R </path-to-directory-to-be-deleted>" : for deleting directories and whole folders. Kexts, as I learned, are actually directories.

"sudo rm </path-to-file-to-be-deleted>" : for deleting single files.

"sudo cp </path-to-file-to-be-copied></path-to-destination-directotry-or-location/>" : for copying a file to a new directory or, in Mac parlance, location.

"sudo cp -R</path-to-directory-to-be-copied></path-to-destination-directotry-or-location/>" : for copying whole directories or folders to a new location. Again, this works for kexts.

"exit" : to go out of Terminal/command line mode and continue booting into GUI mode.

"reboot" :  reboots computer.

4) Know your paths/locations - clearly this is important, or coupled with the commands above, you could potentially screw up your hackintosh even to the point of no redeem but a fresh re-install.

"/" : this is the main directory, sometimes also calle "root" directory; I prefer calling it "main directory" as "root directory" can be confused with the "root user".

"/System/Library/Extensions/" : where all your kexts reside. By the way, kexts are called "kexts" because the word actually stands for Kernel Extension.

"/System/Library/Extensions.mkext" : this is deleted along with

"/System/Library/Extensions/Caches/" when you want to clear your extensions cache manually; i.e. Kext Helper is doing a crappy job at it.

And finally as an example, here's what happened to me last night when after getting tired of playing mp3's on iTunes and leeching off of a neighbor's unsecure wireless network, I succumbed to the temptation of experimenting with my poor unsuspecting Extensions folder.

I wanted to see if that Natit.kext I installed along with my video kexts was really necessary. So I:

1) copied Natit.kext to a terminal - command line typing friendly location like my / directory (instead of a longish "/Users/my-username/Desktop").

2) deleted Natit.kext from /System/Library/Extensions

3) deleted /System/Librar/Extensions/Caches folder and /System/Library/Extensions.mkext.

4) rebooted the mini, without specifying any flags at first, and got stuck at the "blue screen of comatose"

5) forced shutdown the mini, interrupted Darwin bootloader, booted in single user mode using the -s flag.

6) sudo /sbin/fsck -fy then Enter, waited till I got back to the prompt

7) sudo /sbin/mount -uw / then Enter, waited till I got back to the prompt

8 ) sudo cp -R /Natit.kext/ /System/Library/Extensions/ then Enter, waited till I got back to the prompt

9) reboot then Enter until the mini rebooted

10) interrupted Darwin again and this time forced loaded the kexts via the -f flag.

11) still getting the "blue screen of comatose" so I forced shut the mini and rebooted again into single user mode.

12) ran the "/sbin" commands again to mount and be able to modify the contents of my hard drive.

13) sudo rm -R /System/Library/Extensions/AppleIntelGMA950.kext then Enter,waited till I got back to the prompt.

14) sudo rm -R /System/Library/Extensions/AppleIntelIntegratedFrameBuffer.kext then Enter,waited till I got back to the prompt.

15) reboot then Enter and waited till machine rebooted and let it boot into OS X. As a result of my deleting the AppleIntelGMA950 and AppleIntegratedFrameBuffer kexts,  I had squashed 600 x 480 resolution but I was able to get past that despicable "blue screen of comatose" and into my desktop.

16) reinstalled the AppleIntelGMA950 and AppleIntegratedFrameBuffer kexts with Kext Helper b7, rebooted as prompted - but I still force loaded the kexts just to be sure OS X recognizes them and my 1024 x 600 resolution was restored.

Note: when you type the path, you can just type the first letters and just hit Tab and the rest of the name will be put it automatically. Ex: you can just go "/Sys<Tab>/Lib<Tab>/Ext<Tab>/" and you'll end up with "/System/Library/Extensions/" anyway instead of manually typing the whole "/System/Library/Extensions/" path name.

Tab key is also useful for when you don't know the exact name of a kext, but you know the first part,

Ex.: "sudo rm -R /System/Library/Extensions/AppleIntelGMA<you don't know what comes next>", hit Tab key and you'll get a list of all files within/System/Library/Extensions/ that start with "AppleIntelGMA*".

Makes life easier.

No comments: