1.Dd March 6, 2009 
2.Os Darwin
3.Dt KEXTD 8
4.Sh NAME
5.Nm kextd
6.Nd kernel extension server
7.Sh SYNOPSIS
8.Nm
9.Op Ar options
10.Sh DESCRIPTION
11.Nm
12is the kernel extension server.
13It runs as a standalone
14.Xr launchd 8 daemon to handle requests from the kernel
15and from other user-space processes
16to load kernel extensions (kexts) or provide information about them.
17.Sh OPTIONS
18These options are available:
19.Bl -tag -width -indent
20.It Fl c , Fl no-caches
21Ignore any repository cache files and scan all kext bundles
22to gather information.
23If this option is not given,
24.Nm
25attempts to use cache files and to create them
26if they are out of date or don't exist.
27.It Fl d , Fl debug
28Debug mode; print messages to stdout/stderr rather than
29the sysem log.
30.It Fl h , Fl help
31Print a help message describing each option flag and exit with a success result,
32regardless of any other options on the command line.
33.It Fl q , Fl quiet
34Quiet mode; log no informational or error messages.
35.It Fl v Li [ 0-6 | 0x#### Ns Li ] , Fl verbose Li [ 0-6 | 0x#### Ns Li ]
36Verbose mode; print information about program operation.
37Higher levels of verbosity include all lower levels.
38By default
39.Nm
40logs at verbose level 1.
41You can specify a level from 0-6,
42or a hexadecimal log specification
43(as described in
44.Xr kext_logging 8 Ns No ).
45The levels of verbose output are:
46.Bl -tag -width "1 (or none)"
47.It 0
48Print only errors (that is, suppress warnings); see also
49.Fl quiet .
50.It 1 (or none)
51Print basic information about program operation.
52.It 2
53Print information about program operation progress, client requests, and files created.
54.It 3
55Print information about individual kexts with an
56OSBundleEnableKextLogging property set to true.
57.It 4
58Print information about spawned child processes.
59.It 5
60Print debug-level information.
61.It 6
62Identical to level 5 but for all kexts read by the program.
63.El
64.Pp
65See
66.Xr kext_logging 8
67for more information on verbose logging.
68.It Fl x , Fl safe-boot
69Run
70.Nm
71in safe boot mode (indicating startup with the Shift key held down).
72Kexts that don't specify a proper value for the OSBundleRequired
73info dictionary property will not be loaded.
74As of Mac OS X 10.5 (Leopard),
75.Nm
76determines from the kernel
77whether the system has started in safe boot mode,
78so this flag is no longer necessary (but may be used for testing).
79In safe boot mode,
80.Nm
81does not use caches
82(that is, this option implies the use of the
83.Fl no-caches
84option).
85.El
86.Sh RESETTING KEXTD
87On Mac OS X 10.3 and later, it is possible to reset
88.Nm
89without terminating and restarting it, by sending it a HUP signal.  This
90causes
91.Nm
92to rescan the Extensions folder, rebuild all its caches,
93and send all I/O Kit drivers' personalities to the kernel
94for a new round of driver matching.
95As of Mac OS X 10.5 (Leopard),
96.Nm
97watches
98.Pa /System/Library/Extensions/
99and automatically invokes
100.Xr kextcache 8
101to rebuild kext caches when its modification time changes.
102It also sends new drivers'
103personalities to the kernel at this time.
104.Pp
105Installers that add new drivers can signal
106.Nm
107in these ways instead of requiring the computer to be restarted.
108Note that if a hardware device has a driver attached when this is done,
109a newly-installed driver will not match on it.
110For more information, see
111.Dq "Apple Developer Technical Q&A QA1319: Installing an I/O Kit Kext Without Rebooting" .
112.Sh FILES
113.Bl -tag -width "/System/Library/Extensions/"
114.It Pa /System/Library/Extensions/
115The standard system repository of kernel extensions.
116.It Pa /System/Library/Caches/com.apple.kext.caches/
117Contains all kext caches for a Mac OS X 10.6 (Snow Leopard) system: prelinked kernel,
118mkext, and system kext info caches.
119.It Pa /usr/standalone/bootcaches.plist
120Describes specific kext cache files for a Mac OS X volume.
121.It Pa /System/Library/LaunchDaemons/com.apple.kextd.plist
122The
123.Xr launchd.plist 5
124controlling the
125.Nm
126job.
127.El
128.Sh DIAGNOSTICS
129.Nm
130normally never exits.
131If an error occurs it exits with a nonzero status.
132.Pp
133.Nm
134logs all error and verbose messages to the system log,
135or to the console if the system log facility isn't available.
136When running in debug mode all output is printed
137to the standard output and error streams.
138.Sh SEE ALSO 
139.Xr kextcache 8 ,
140.Xr kextload 8 ,
141.Xr kextutil 8 ,
142.Xr kextstat 8 ,
143.Xr kextunload 8 ,
144.Xr kextfind 8 ,
145.Xr syslogd 8 ,
146.Xr launchd.plist 5
147