kextd.8   [plain text]


.Dd February 14, 2002 
.Dt KEXTD 8
.Os Darwin
.Sh NAME
.Nm kextd
.Nd loads kexts on demand from kernel or client processes
.Sh SYNOPSIS
.Nm
.Op Fl c
.Op Fl d
.Op Fl f
.Op Fl h
.Op Fl j
.Op Fl r Ar directory
\&.\|.\|.
.Op Fl v Op 1-6
.Op Fl x
.Sh DESCRIPTION
.Nm
runs as a daemon process to handle requests from the kernel
to load kernel extensions (kexts).
.\" ADD THIS + XREF WHEN CLIENT API GOES ONLINE
.\" as well as to handle other requests from user space processes.
For proper operation
.Nm
must be invoked as the superuser.
.Pp
.Nm
should not be considered a formal interface in the Darwin OS
or in Mac OS X.
Neither its usage nor its presence should be relied on
by any software or software installer.
.Pp
The options available are these:
.Bl -tag -width -indent
.It Fl c
Ignore any repository cache files and scan all kext bundles
to gather information.
If this option is not given,
.Nm
will attempt to use cache files and to create them
if they are out of date or don't exist.
.It Fl d
Debug mode; run in the foreground and print messages to stdout/stderr.
.It Fl f
Don't fork a child task when loading kexts.
This option is present for debugging
.Nm
and should never be used otherwise.
.It Fl h
Print a help message describing each option flag.
.It Fl j
Don't jettison kernel linker; load NDRVs in the kernel and exit,
allowing the kernel to continue handling all load requests.
This option is used in startup scripts for install CDs,
along with a properly built mkext cache,
in order to speed startup from the CD.
.It Fl r Ar directory
Use
.Ar directory
as a repository of known kexts for handling load requests.
This is not recursive; only the directory's immediate
contents are scanned.
By default
.Nm
uses only the kexts in /System/Library/Extensions.
.It Fl v Op 1-6
Verbose mode; print information about the kext scanning and loading
process (note that this is generally not useful when unloading).
See the man page for
.Xr kextload 8
to see what each verbose level prints.
.It Fl x
Run
.Nm
in safe boot mode (indicating startup with the Shift key held down).
Kexts that don't specify a proper value for the OSBundleRequired
info dictionary property will not be loaded.
As of Mac OS X 10.5,
.Nm
determines from the kernel
whether the system has started in safe boot mode,
so this flag is no longer necessary (but may be used for testing).
In safe boot mode,
.Nm
does not use caches
(that is, this option implies the use of the
.Fl c
option).
.El
.Sh RESETTING KEXTD
On Mac OS X 10.3 and later, it is possible to reset
.Nm
without terminating and restarting it, by sending it a HUP signal.  This
causes
.Nm
to rescan the Extensions folder, rebuild all its caches, and
send all driver personalities to the kernel for a new round of driver
matching.  In OS X 10.5,
.Nm
watches
.Pa /System/Library/Extensions
and automatically rebuilds their mkext caches.  It will send new drivers
personalities to the kernel at this time.
.Pp
Installers that add new drivers can signal
.Nm
in these ways instead of requiring the computer to be restarted.
Note that if a hardware device has a driver attached when this is done,
a newly-installed driver will not match on it.
See the Apple Developer Connection's Technical Q&A QA1319 for more information.
.Sh DIAGNOSTICS
.Nm
normally never exits.
If an error occurs it exits with a nonzero status.
If invoked with the
.Fl j
option it exits with a zero status when no error occurs,
or a nonzero status if an error does occur.
.Pp
.Nm
logs all error and verbose messages to the system log,
or to the console if the system log facility isn't available.
When running in debug mode all output is printed
to the standard output and error streams.
.Sh SEE ALSO 
.Xr kextcache 8 ,
.Xr kextload 8 ,
.Xr kextstat 8 ,
.Xr kextunload 8 ,
.Xr syslogd 8