What is a kext and how do you install and patch it? What is a kext?
Kext is an abbreviation for kernel extension; it is basically the Mac OS equivalent to a Windows driver. Where can I find these kexts?
Kexts are normally placed in /System/Library/Extensions. However, if you have Snow Leopard or earlier (and some custom Lion systems), kexts are also placed in /Extra/Extensions. How do I install a kext, and which Extensions folder should I use?
For the most part, the choice of Extensions folders is yours; unless the user/developer got the kext from specifically states which folder, basically kexts can go in either, with the following considerations: for kexts in /Extra/Extensions that are supposed to override duplicates in /System/Library/Extensions (i.e. IOATAFamily), the kext in /Extra/Extensions must have a higher version number than the kext in /System/Library/Extensions (this can be checked in a kext's Info.plist, which I' ll show you how to access in a bit); kexts with a ton of dependencies (that is, they require a lot of other kexts to already be present for it to load) need to be in /System/Library/Extensions, and for kexts that could be replaced in software updates by Apple's originals (for example, IONetworkingFamily) should probably be in /Extra/Extensions. If you are confused by this, just experiment and see what works for you. As for installing a kext, the method depends on where you place it. For /System/Library/Extensions, the OS is SUPER specific about what the permissions are in order for it to load; if it's not just right it won't load at all. So, if you are installing a kext manually, drag it in /System/Library/Extensions, open the Terminal (/Applications/Utilities), and type the following commands:
cd /System System/ /Library Library/ /Extensions chmod 775 [yourkext]. yourkext].kext kext chown root: root:wheel [yourkext]. yourkext].kext kext
Then your permissions are correct.
If you don't want to worry about Terminal commands you can use
a third-party utility to install the kext (I recommend Kext Utility). If you are installing in /Extra/Extensions, good news: there are no permissions issues here.
Just drag
the kext in and it should work. Once you install a kext, you have to update the kext caches (for instructions see this FAQ) FAQ), then you can reboot. How do I patch a kext?
Well,
first
you
need
to
determine
where
your
kext
is;
is
it
in
/Extra/Extensions
or
/System/Library/Extensions? Once you find that out you open Terminal (/Applications/Utilities (/Applications/Utilities), ), and type one of the following commands depending on where your kext is:
sudo nano /System/Library/Extensions/[yourdriverhere].kext/Contents/Info.plist sudo nano /Extra/Extensions/[yourdriverhere].kext/Contents/Info.plist
If you need to patch a plugin inside a kext, you would type the same command with a twist:
sudo nano /System/Library/Extensions/[yourdriverhere].kext/Contents/PlugIns/[yourplugin].kext/Contents/I nfo.plist sudo nano /Extra/Extensions/[yourdriverhere].kext/Contents/PlugIns/[yourplugin].kext/Contents/Info.plist
Under normal conditions what we do when we patch a kext we are inserting your PCI ID into the kext (for info on PCI IDs, see this FAQ) Scroll with the arrow keys and look for IOPCIPrimaryMatch or IOPCINameMatch (If there happens to be a IOPCIClassMatch instead of the other two mentioned above, change IOPCIClassMatch to IOPCIPrimaryMatch). Below it you should see at least one string of numbers (and letters) preceded by 0x (unless it says IOPCINameMatch; then in that case it will say pci instead of 0x). Delete all the strings (including any that say & before them) and type in your ID in the order 0x[deviceID][vendorID] (for IOPCINameMatch, it would be pci[vendorID], [deviceID]). So, for example, if you have an Intel (vendor ID 8086) Ethernet card with the device ID 27dc, you would type 0x27dc8086 (or pci8086, 27dc if it is IOPCINameMatch). Once you're done, press Control-O and then Control-X. Reboot, at the boot prompt type -f, and that should do the trick.
How To Use Single User Mode And How To Use It To Uninstall Kexts about: The following guide will allow you to uninstall a kext using Single User Mode during boot when a kext that you have recently installed is causing your system to not boot. The installation VodooHDA.kext on some systems is a example of a kexts that may make your system to not boot. Accreditation: Giorgio Multi post found here Wiki post found here Edited by p.H and Rampage Dev Method 1: Mac OS X Using Single User Mode Part 1: What Is Single User Mode Single User Mode is different from a Safe Mode boot in that the system goes directly to the console instead of starting up the core elements of Mac OS X (items in /System/Library/, ignoring /Library/, ~/Library/, et al.). From there users are encouraged by a prompt to run fsck or other command line utilities as needed (or installed). Part 2: How To Boot Into Single User Mode 1. Record the kext you wish to remove 2. At the boot loader prompt screen type in the following: -S
3. Press Enter 4. After the system loads a blinking cursor will appear. This indicates that you m ay start typing in commands. 5. Replace name_of_the_kext.kext with the name of your kext you wish to remove 6. Type the commands below, press enter after finish entering each line:
mount - uw / cd /System/Library/Extensions rm -rf name_of_the_kext.kext sudo rm -rf /System/Library/Caches/* shutdown -r now
Note Make Sure That The Spaces And Casing In The Text Is Correct
7. The kext should now be removed Method 2: Using Windows Or Other Operating System You can remove a kext by using macdrive or other programs which allow you to access the OS X partition. All you need to do is just delete the entire folder of the kext. (kexts are displayed as folders on windows or other OS)
Comandi da Terminale
La riga di comando di Mac OS X dispone di migliaia di programmi che l’utente medio di Mac non conosce. Sulla base di anni di duro lavoro da parte della fondazione GNU e di altre nella comunità open source, Apple ha progettato un meraviglioso sistema operativo che non ha “bisogno” della riga di comando per essere usato. Nonostante l’uso della riga di comando in Mac OS X non è necessario per l’uso quotidiano di un Macintosh, se usata correttamente può far risparmiare molto tempo!
Indice dalla A alla Z dell'interfaccia a riga di comando di OS X della Apple
A alias Create an alias • alloc List used and free memory apropos Search the whatis database for strings awk Find and Replace text within file(s)
b basename Convert a full pathname to just a filename bash Bourne-Again SHell bg Send to background • bind Display readline key and function bindings • bless Set volume bootability and startup disk options. break Exit from a For, While, Until or Select loop • builtin Execute a shell builtin • bzip Compress or decompress files
c
cal Display a calendar caller Return the context of a subroutine call • case Conditionally perform a command • cat Display the contents of a file cd (che significa Change Directory, cioe' cambia directory) chflags Change a file or folder's flags chgrp Change group ownership chmod Change access permissions chown Change file owner and group chroot Run a command with a different root directory cksum Print CRC checksum and byte counts clear Clear terminal screen cmp Compare two files comm Compare two sorted files line by line command Run a command (not a function) • complete Edit a command completion [word/pattern/list] • continue Resume the next iteration of a loop • cp Copy one or more files to another location cron Daemon to execute scheduled commands crontab Schedule a command to run at a later date/time curl Transfer data from or to a server cut Divide a file into several parts
d date Display or change the date & time dc Desk Calculator dd Data Dump - Convert and copy a file declare Declare variable & set attributes • defaults Set preferences, show hidden files df Display free disk space diff Display the differences between two files diff3 Show differences among three files dig DNS lookup dirname Convert a full pathname to just a path dirs Display list of remembered directories • diskutil Disk utilities - Format, Verify, Repair disown Unbind a job from the current login session • ditto Copy files and folders dot_clean Remove dot-underscore files drutil Interact with CD/DVD burners dscacheutil Query or flush the Directory Service/DNS cache dscl Directory Service command line utility du Estimate file space usage
e echo Display message on screen • ed A line-oriented text editor (edlin) enable Enable and disable builtin shell commands • env Set environment and run a utility eval Evaluate several commands/arguments • exec Execute a command • exit Exit the shell • expand Convert tabs to spaces
expect Programmed dialogue with interactive programs
Also see AppleScript export Set an environment variable • expr Evaluate expressions
f false Do nothing, unsuccessfully fc Fix command (history) fdisk Partition table manipulator for Darwin UFS/HFS/DOS fg Send job to foreground • file Determine file type find Search for files that meet a desired criteria fmt Reformat paragraph text fold Wrap text to fit a specified width for Loop command • fsck Filesystem consistency check and repair fsaclctl Filesystem enable/disable ACL support fs_usage Filesystem usage (process/pathname) ftp Internet file transfer program
g GetFileInfo Get attributes of HFS+ files getopt Parse positional parameters getopts Parse positional parameters • goto Jump to label and continue execution grep Search file(s) for lines that match a given pattern groups Print group names a user is in gzip Compress or decompress files
h hash Refresh the cached/remembered location of commands • head Display the first lines of a file hdiutil Manipulate iso disk images history Command History • hostname Print or set system name
i id Print user and group names/id's if Conditionally perform a command • info Help info install Copy files and set attributes
j jobs List active jobs • join Join lines on a common field
k kextfind List kernel extensions kickstart Configure Apple Remote Desktop kill Stop a process from running
l l List files in long format (ls -l) last Indicate last logins of users and ttys launchctl Load or unload daemons/agents ll List files in long format, showing invisible files (ls -la) less Display output one screen at a time let Evaluate expression •
lipo Convert a universal binary ln Make links between files (hard links, symbolic links) local Set a local (function) variable • locate Find files logname Print current login name login log into the computer logout Exit a login shell (bye) • lpr Print files lprm Remove jobs from the print queue lpstat Printer status information ls (che significa List, cioe' elenca) per elencare i file contenuti all'interno della directory corrente lsregister Reset the Launch Services database lsbom List a bill of materials file lsof List open files
m man nome_di_un_comando (che significa MANual, cioe' manuale, ed e' il m anuale in linea che spiega
qualsiasi comando Unix) mdfind Spotlight search mdutil Manage Spotlight metadata store mkdir Create new folder(s) mkfifo Make FIFOs (named pipes) more Display output one screen at a time mount Mount a file system mv Move or rename files or directories
n net Manage network resources netstat Show network status networksetup Network and System Preferences nice Set the priority of a command nohup Run a command immune to hangups ntfs.util NTFS file system utility
o onintr Control the action of a shell interrupt open Open a file/folder/URL/Application opensnoop Snoop file opens as they occur osacompile Compile Applescript osascript Execute AppleScript
p passwd Modify a user password paste Merge lines of files pbcopy Copy data to the clipboard pbpaste Paste data from the Clipboard pico Simple text editor ping Test a network connection pkgutil Query and manipulate installed packages plutil Property list utility pmset Power Management settings popd Restore the previous value of the current directory • pr Convert text files for printing printenv Print environment variables printf Format and print data •
ps Process status pushd Save and then change the current directory pwd (che significa Print Working Directory, cioe' stampa la directory corrente) per sapere il nome della
directory corrente
q quota Display disk usage and limits
r rcp Copy files between machines read Read one line from standard input • readonly Mark a variable or function as read-only • reboot Stop and restart the system return Exit a function • rev Reverse lines of a file rm Remove files rmdir Remove folder(s) rpm Remote Package Manager rsync Remote file copy - Sync file tree (also RsyncX)
s say Convert text to audible speech screen Multiplex terminal, run remote shells via ssh screencapture Capture screen image to file or disk sdiff Merge two files interactively security Administer Keychains, keys, certificates and the Security framework sed Stream Editor select Generate a list of items • set Set a shell variable = value • setfile Set attributes of HFS+ files shift Shift positional parameters • shopt Set shell options • shutdown Shutdown or restart OS X sips Scriptable image processing system sleep Delay for a specified time softwareupdate System software update tool sort Sort text files source Execute commands from a file • split Split a file into fixed-size pieces stop Stop a job or process su Substitute user identity sudo Execute a command as another user sum Print a checksum for a file suspend Suspend execution of this shell • sw_vers Print Mac OS X operating system version system_profiler Report system configuration systemsetup Computer and display system settings
t tail Output the last part of files tar Tape ARchiver tee Redirect output to multiple files test Condition evaluation • textutil Manipulate text files in various formats (Doc,html,rtf) time Measure Program Resource Use
times Print shell & shell process times • top Display process information touch Change file timestamps tr Translate, squeeze, and/or delete characters trap Execute a command when the shell receives a signal • traceroute Trace Route to Host true Do nothing, successfully tty Print filename of terminal on stdin type Describe a command •
u ufs.util Mount/unmount UFS file system ulimit limit the use of system-wide resources • umask Users file creation mask umount Unmount a device unalias Remove an alias • uname Print system information unexpand Convert spaces to tabs uniq Uniquify files units Convert units from one scale to another unset Remove variable or function names • until Loop command • users Print login names of users currently logged in uuencode Encode a binary file uudecode Decode a file created by uuencode uuidgen Generate a Unique ID (UUID/GUID) uucp Unix to Unix copy
v vi Text Editor
w wait Wait for a process to complete • wc Print byte, word, and line counts whatis Search the whatis database for complete words where Report all known instances of a command which Locate a program file in the user's path while Loop command • who Print all usernames currently logged on whoami Print the current user id and name (`id -un') write Send a message to another user
x xargs Execute utility - passing arguments yes Print a string until interrupted !! Run the last command again Vediamo alcuni esempi di utilizzo dei comandi piu' comuni. ssh Questa piccola pietra preziosa è inclusa in ogni versione di Mac OS X. Inizialmente sviluppata come rimpiazzo per i comandi rsh/rlogin, ssh è diventata il collante della comunità Linux/Unix (e adesso di Mac OS X). L’utilizzo principale di Openssh è l’amministrazione remota in sicurezza. Se volete abilitare il server SSH incluso in Mac OS X potete farlo dalle Preferenze di Sistema, cliccate su “Condivisione” e spuntate l’opzione “Login remoto”. Adesso se vi trovate in giro e volete accedere al vostro computer
potete usare un client come PuTTY (da un sistema windows) oppure “ssh” dal terminale di Mac OS X e collegarvi all’indirizzo IP del vostro Mac. Dopo esservi autenticati con il vostro username e la vostra password avrete completo accesso alla riga di comando di Mac OS X. Openssh ha molti, molti altri usi e alcuni di questi sono molto avanzati. Il mio preferito è usare ssh come un server SOCKS per navigare sicuro in internet quando mi collego da postazioni pubbliche. top Top è un’altra utility classica che è stata a lungo usata dalla comunità Linux/Unix. Per usare top, aprite il terminale e digitate “top”. In un istante vi troverete di fronte ad una finestra piena di testo. Quello che vedete è una lista di ogni processo attualmente in esecuzione sul vostro Macintosh. Quando il mio Mac ha dei rallentamenti, top è la prima risorsa che utilizzo per controllare quello che sta succedendo. lsbom lsbom è utile per curare quella paranoia che vi assale prima di provare ad installare qualche utility carina che avete trovato su qualche sito internet . Con lsbom potete esaminare il contenuto di un installer Mac OS X (i file .pkg) e ottenere una lista molto dettagliata di cosa verrà installato sul prezioso filesystem del vostro Mac. Per usare lsbom, aprite il terminale e navigate fino alla posizione in cui si trova il file .pkg. Se il vostro installer si trova in un file .dmg, sarà utile copiare il file .pkg sulla scrivania, e successivamente digitare “cd ~/Desktop” (quel carattere si ottiene con alt+5). Una volta che vi trovate nel punto dove si trova il file .pkg, digitate “lsbomfile.pkg/Contents/Archive.bom|more” e vedrete una lista completa dei file che il vostro nuovo programma intende installare. say Questo comando è unico di Mac OS X, ed è uno dei più divertenti. Provatelo aprendo il terminale e digitando “say hello”. softwareupdate Il comando “softwareupdate” è un modo veloce e facile per installare gli aggiornamenti software di Apple. Per usarlo, aprite il terminale e digitate “softwareupdate -i -a” per installare tutti gli aggiornamenti disponibili per il vostro Macintosh. Se volete installare solamente gli aggiornamenti “raccomandati” digitate “sofwareupdate -i -r”. ifconfig Il modo più veloce e facile per verificare quale indirizzo IP il vostro Mac sta usando, è decisamente “ifconfig”. Per usare ifconfig, aprite il terminale e digitate “ifconfig”. Vedrete una moltitudine di informazioni, incluso il MAC address della vostra scheda di rete. Io di solito uso “ifconfig|grep inet” per ottenere solo le informazioni relative all’IP del mio computer. Potete disabilitare una interfaccia di rete (ad esempio “en0″) digitando “ifconfig en0 down”. Potete riabilitarla con “ifconfig en0 up”. Questo modo è molto più veloce che usare le preferenze di sistema. lipo lipo è una utility che manipola gli universal binary di Mac OS X. Molti (quasi tutti) i programmi adesso vengono commercializzati o scaricati come “Universal”, cioè hanno al loro interno codice binario che può essere interpretato sia dai chip PowerPC che dai chip Intel. Ma visto che probabilmente vi interessa solo uno dei due, potete usare lipo per “snellire” i vostri file binari. Per esempio se volete snellire l’applicazione “Stickies” (promemoria) in modo che contenga solo codice intel (i386) fate così: cd /Applications lipo Stickies.app/Contents/MacOS/Stickies -thin i386 -output Stickies.app/Contents/MacOS/Stickies.i386 (su un’unica riga) cd Stickies.app/Contents/MacOS/ rm Stickies mv Stickies.i386 Stickies screencapture screencapture offre un modo più sofisticato (rispetto a comando-maiusc-3) per fare fotografie allo schermo. Per usarlo, aprite il terminale e provate a digitare “screencapture -iW ~/Desktop/screen.jpg”. Apparirà l’icona di una macchina fotografica che attende di essere cliccata su una finestra. Una volta fatto clic, verrà creato un file sulla vostra scrivania chiamato “screen.jpg” che conterrà un’immagine di qualunque finestra abbiate cliccato. Potete ovviamente anche creare un’immagine del vostro intero schermo digitando “screencapture -S ~/Desktop/screen.jpg”. Se vi sentite particolarmente creativi potete fotografare solo una parte del vostro schermo digitando “screencapture -ic”.
Let's see some more examples of using the command ' areas. ssh This little gem is included in every version of Mac OS X. Initially developed as a replacement for rsh / rlogin, ssh has become the glue of the Linux / Unix ( and now Mac OS X). The main use of remote administration Openssh is safe . If you want to enable SSH server included in Mac OS X you can do it from the System Preferences, click on the "Sharing" and check the " Remote Login " . Now if you're around and want to access your computer , you can use a client such as PuTTY (from a windows system ) or " ssh " from the terminal in Mac OS X and log the IP address of your Mac after you log with your username and password you will have full access to the command line in Mac OS X. Openssh has many, many other uses and some of these are very advanced . My favorite is to use ssh as a SOCKS server to surf safely on the Internet when I connect from public locations . top Top utility is another classic that has long been used by the Linux / Unix. To use the top , open the terminal and type "top" . In an instant, you 'll be presented with a window full of text. What you see is a list of all processes currently running on your Macintosh . When my Mac slowdowns , top is t he first resource I use to check what 's going on. lsbom lsbom is useful to cure the paranoia that attacks you before you try to install some nice utility that you found on some website . With lsbom you can examine the contents of a Mac OS X installer ( the . Pkg file ) and get a very detailed list of what will be installed on your Mac's filesystem valuable lsbom To use , open a terminal and navigate to the location where you find the file . pkg . If your installer is in a . Dmg file , it will be useful to copy the . Pkg file on your desktop, and then type "cd ~ / Desktop" ( the character you get with alt +5) . Once you are at the point where the fil e is located . Pkg , type " lsbom file.pkg / Contents / Archive.bom | more" and you'll see a complete list of files you want to install your new program . say This command is only for Mac OS X, and is one of the funniest . Try opening a terminal and typing "say hello" . softwareupdate The command " softwareupdate " is a fast and easy way to install software updates from Apple. To use it, open a terminal and type " softwareupdate -i -a" to install all available updates for your Mac. If you want to install the updates merely "recommended" type " sofwareupdate -i- r" . ifconfig The quickest and easiest way to check what IP address your Mac is using , is definitely " ifconfig" . To use ifconfig, open the terminal and type " ifconfig" . You will see a multitude of information, including the MAC address of your network card. I usually use "ifconfig | grep inet " to get only the information related to the IP of my computer. You can disable a network interface (such as " en0 " ) by typing "ifconfig en0 down" . You can enable it with "ifconfig en0 up" . This way is much faster than using the system preferences. lipo lipo is a utility that manipulates universal binary for Mac OS X. Many (almost all) of the programs now are sold or transferred as " Universal ", ie they have inside the binary code that can be interpreted by both the PowerPC chip from Intel . But since you probably only care about one of them, you can use lipo to " streamline " your binary files. For example, if you want to streamline the application " Stickies " (reminder) so that it contains only code intel (i386 ) do this:
cd / Applications lipo Stickies.app / Contents / MacOS / Stickies.app/Contents/MacOS/Stickies.i386 ( on one line) Stickies.app cd / Contents / MacOS / rm Stickies mv Stickies.i386 Stickies
Stickies
-thin
i386
-output
screenCapture ScreenCapture offers a more sophisticated way (as opposed to command - shift -3) to take pictures of the screen. To use it, open a terminal and try typing " screencapture - iW ~ / Desktop / screen.jpg ." You will see an icon of a camera waiting to be clicked on a window. Once clicked , it will create a file on your desktop called " screen.jpg " that will contain an image of any window you clicked. You can of course also create an image of your entire screen by typing " screencapture -S ~ / Desktop / screen.jpg ." If you are feeling creative you can photograph just a portion of your screen by typing " screencapture - ic ."