Kernel Utilities (Mac OS X for Unix Geeks)
8.2. Kernel Utilities
Mac
OS X includes various utilities that interact with the kernel. With
these utilities, you can debug a running kernel, load and unload
kernel modules or extensions, or set kernel variables.
8.2.1. ddb
The ddb utility can debug a running kernel. It
is not included with the current version of Mac OS X. If you want to
use ddb, you can find its source code in the
xnu (Darwin kernel) source code. For details on
building the kernel or obtaining source code from CVS, see Chapter 7.
8.2.2. Kernel Module Utilities
The following list describes utilities for manipulating kernel
modules. For more information, see the kernel extension tutorials
available at
http://www.opensource.apple.com/projects/documentation/howto.
These utilities must be run by root or by
someone with superuser privileges.
kextload
Loads an extension bundle.
kextunload
Unloads an extension bundle.
kextstat
Displays the status of currently loaded kernel extensions. Table 8-5 describes this utility's
output.
Table 8-5. Information displayed by kextstat
Item number
Column
Description
1
Index
Index number of the loaded extension. Extensions are loaded in
sequence; gaps in this sequence signify extensions that have been
unloaded.
2
Refs
Number of references to this extension from other extensions.
3
Address
Kernel space address of the extension.
4
Size
Amount of kernel memory (in bytes) used by the extension.
5
Wired
Amount of wired kernel memory (in bytes) used by
the extension.
6
Name (Version)
Name and version of the extension.
7
<Linked Against>
Index of kernel extensions to which this extension refers.
Figure 8-5 shows sample output.
Figure 8-5. Partial output of kextstat
8.2.3. sysctl
sysctl is a standard BSD facility for
configuring kernel state variables. Use sysctl
name to display a variable
name, as in sysctl kern.ostype. Use
sysctl -a to display all variables. You can set
a variable with sysctl -w
name=value.
You must have superuser privileges to set a variable.
Table 8-6 lists the sysctl
variables on Mac OS X. See the sysctl(3) manpage
for a description of the sysctl system call and
more detailed information on the kernel state variables.
Table 8-6. sysctl's kernel state variables
Name
Type
Writable
Description
hw.busfrequency
int
no
Bus frequency in hertz. Divide by one million to get a megahertz
figure.
hw.byteorder
int
no
Variable that returns 4321, showing the ordering of four bytes on the
PowerPC platform.
hw.cachelinesize
int
no
The cache line size in bytes.
hw.cpufrequency
int
no
CPU frequency in hertz. Divide by one million to get a megahertz
figure.
hw.epoch
int
no
Variable that indicates whether your hardware is in the New World or
the Old World. Old World Macintoshes (pre-G3) will have a value of
0.
hw.l1dcachesize
int
no
Level 1 data cache size in bytes.
hw.l1icachesize
int
no
Level 1 instruction cache size in bytes.
hw.l2cachesize
int
no
Level 2 cache size in bytes.
hw.l2settings
int
no
Level 2 cache settings.
hw.l3cachesize
int
no
Level 3 cache size in bytes.
hw.l3settings
int
no
Level 3 cache settings.
hw.machine
string
no
Machine class (Power Macintosh on most systems).
hw.model
string
no
Machine model.
hw.ncpu
int
no
Number of CPUs.
hw.pagesize
int
no
Software page size in bytes.
hw.physmem
int
no
Physical memory in bytes.
hw.usermem
int
no
Non-kernel memory.
hw.vectorunit
int
no
Variable that indicates whether you are running on an AltiVec-enabled
CPU.
kern.argmax
int
no
Maximum number of arguments supported by exec( ).
kern.boottime
struct timeval
no
The time when the system was booted.
kern.clockrate
struct clockinfo
no
System clock timings.
kern.dummy
n/a
n/a
Unused.
kern.hostid
int
yes
Host identifier.
kern.hostname
string
yes
Hostname.
kern.job_control
int
no
Variable that indicates whether job control is available.
kern.maxfiles
int
yes
Maximum number of open files.
kern.maxproc
int
yes
Maximum number of simultaneous processes.
kern.maxvnodes
int
yes
Maximum number of vnodes.
kern.ngroups
int
no
Maximum number of supplemental groups.
kern.netboot
int
no
Variable that indicates whether the system booted via NetBoot.
kern.nisdomainname
string
yes
NIS domain name.
kern.osrelease
string
no
Operating system release version.
kern.osrevision
int
no
Operating system revision.
kern.ostype
string
no
Operating system name.
kern.posix1version
int
no
The version of POSIX 1003.1 with which the system attempts to comply.
kern.saved_ids
int
no
This is set to 1 if saved set-group and set-user
IDs are available.
kern.securelevel
int
increment only
The system security level.
kern.symfile
string
no
The kernel symbol file.
kern.sysv.shmmax
int
yes
The maximum number of shared memory pages.
kern.sysv.shmmin
int
yes
The maximum number of shared memory segments per process.
kern.sysv.shmmni
int
yes
The maximum number of shared memory segments.
kern.sysv.shmseg
int
yes
The minimum size of a shared memory segment.
kern.sysv.shmall
int
yes
The maximum size of a shared memory segment.
kern.version
string
no
The kernel version string.
net.inet.*
various
n/a
IPv4 settings.
net.key.*
various
n/a
IPSec key management settings.
net.inet6.*
various
n/a
IPv6 settings.
user.bc_base_max
int
no
Maximum ibase/obase available in the bc
calculator.
user.bc_dim_max
int
no
Maximum array size available in the bc
calculator.
user.bc_scale_max
int
no
Maximum scale value available in the bc
calculator.
user.bc_string_max
int
no
Maximum string length available in the bc
calculator.
user.coll_weights_max
int
no
Maximum number of weights that can be used with
LC_COLLATE in the locale definition file.
user.cs_path
string
no
Value for PATH that can find all the standard
utilities.
user.expr_nest_max
int
no
Maximum number of expressions you can nest within parentheses using
expr.
user.line_max
int
no
Maximum length in bytes of an input line used with a text-processing
utility.
user.posix2_c_bind
int
no
Variable that returns 1 if the C development
environment supports the POSIX C Language Bindings Option; otherwise,
the result will be 0.
user.posix2_c_dev
int
no
Variable that returns 1 if the C development
environment supports the POSIX C Language Development Utilities
Option; otherwise, the result will be 0.
user.posix2_char_term
int
no
Variable that returns 1 if the systems supports at
least one terminal type specified in POSIX 1003.2; otherwise, the
result will be 0.
user.posix2_fort_dev
int
no
Variable that returns 1 if the system supports the
POSIX FORTRAN Development Utilities Option; otherwise, the result
will be 0.
user.posix2_fort_run
int
no
Variable that returns 1 if the system supports the
POSIX FORTRAN Runtime Utilities Option; otherwise, the result will be
0.
user.posix2_localedef
int
no
Variable that returns 1 if the system allows you
to create locale; otherwise, the result will be 0.
user.posix2_sw_dev
int
no
Variable that returns 1 if the system supports the
POSIX Software Development Utilities Option; otherwise, the result
will be 0.
user.posix2_upe
int
no
Variable that returns 1 if the system supports the
POSIX User Portable Utilities Option; otherwise, the result will be
0.
user.posix2_version
int
no
Variable that returns the POSIX 1003.2 version with which the system
attempts to comply.
user.re_dup_max
int
no
Maximum repeated occurrences of a regular expression when using
interval notation.
user.stream_max
int
no
Maximum number of streams a process may have open.
user.tzname_max
int
no
Maximum number of types supported for a time
zone name.
8. System Management Tools8.3. System Configuration
Copyright © 2003 O'Reilly & Associates. All rights reserved.
Wyszukiwarka
Podobne podstrony:
ch08ch08ch08ch08ch08ch08ch08CH08ch08ch08 (17)ch08ch08ch08ch08ch08ch08CH08więcej podobnych podstron