system - system configuration information file
The
system file is used for customizing the operation of the operating
system kernel. The recommended procedure is to preserve the original
system file before modifying it.
It is not recommended to edit the
/etc/system file directly but rather to
deliver configuration fragments into files under
/etc/system.d; files
in this directory are combined in alphabetical order and read by the kernel
before
/etc/system is processed. Directives in
/etc/system
therefore take precedence over any settings delivered in fragment files.
The recommended naming schema for the fragment files is to use the name of the
package which is delivering the file with '
/' characters replaced by '
:'; file names that start with a dot (
.) will be ignored.
If
/etc/system.d/ exists and contains any fragment files, then the
directory must also be writable or it will not be possible to create or update
the system boot archive.
The
system file contains commands which are read by the kernel during
initialization and used to customize the operation of your system. These
commands are useful for modifying the system's treatment of its loadable
kernel modules.
The syntax of the
system file consists of a list of keyword/value pairs
which are recognized by the system as valid commands. Comment lines must begin
with an asterisk (
*) or a hash mark (
#) and end with a newline
character. All commands are case-insensitive except where noted.
Commands that modify the system's operation with respect to loadable kernel
modules require you to specify the module type by listing the module's
namespace. The following namespaces are currently supported on all platforms:
drv
Modules in this namespace are device drivers.
exec
Modules in this namespace are execution format modules.
The following
exec modules are currently provided:
Only on SPARC system:
Only on x86 system:
On SPARC and IA systems:
elfexec
intpexec
javaexec
firmware
Raw firmware images in subdirectories, one for each
device driver module using firmload(9F).
fs
These modules are filesystems.
sched
These modules implement a process scheduling
algorithm.
strmod
These modules are STREAMS modules.
sys
These modules implement loadable system-call
modules.
misc
These modules do not fit into any of the above
categories, so are considered "miscellaneous" modules.
SPARC only:
dacf
These modules provide rules and actions for device
auto-configuration.
tod
These modules provide support for the time of day
hardware.
cpu
These modules provide CPU-specific kernel
routines.
A description of each of the supported commands follows:
exclude: <
namespace>/<
modulename>
Do not allow the listed loadable kernel module to be
loaded. exclude commands are cumulative; the list of modules to
exclude is created by combining every exclude entry in the
system file.
include: <
namespace>/<
modulename>
Include the listed loadable kernel module. This is the
system's default, so using include does not modify the system's
operation. include commands are cumulative.
forceload: <
namespace>/<
modulename>
Force this kernel module to be loaded during kernel
initialization. The default action is to automatically load the kernel module
when its services are first accessed. forceload commands are
cumulative.
rootdev: <
device name>
Set the root device to the listed value instead of using
the default root device as supplied by the boot program.
rootfs: <
root filesystem type>
Set the root filesystem type to the listed value.
moddir: <
first module path>[[{:, }<
second
...>]...]
Set the search path for loadable kernel modules. This
command operates very much like the PATH shell variable. Multiple
directories to search can be listed together, delimited either by blank spaces
or colons.
set [
<module>:]
<symbol> {=, |, &}
[~][-]
<value>
Set an integer or character pointer in the kernel or in
the selected kernel module to a new value. This command is used to change
kernel and module parameters and thus modify the operation of your system.
Assignment operations are not cumulative, whereas bitwise
AND and
OR operations are cumulative.
Operations that are supported for modifying integer variables are: simple
assignment, inclusive bitwise
OR, bitwise
AND, one's complement,
and negation. Variables in a specific loadable module can be targeted for
modification by specifying the variable name prefixed with the kernel module
name and a colon (:) separator. Values can be specified as hexadecimal (0x10),
Octal (046), or Decimal (5).
The only operation supported for modifying character pointers is simple
assignment. Static string data such as character arrays cannot be modified
using the
set command. Use care and ensure that the variable you are
modifying is in fact a character pointer. The
set command is very
powerful, and will likely cause problems if used carelessly. The following
escape sequences are supported within the quoted string:
\n (newline)
\t (tab)
\b (backspace)
Example 1 A sample
system file.
The following is a sample
system file.
* Force the ELF exec kernel module to be loaded during kernel
* initialization. Execution type modules are in the exec namespace.
forceload: exec/elfexec
* Change the root device to /sbus@1,f8000000/esp@0,800000/sd@3,0:a.
* You can derive root device names from /devices.
* Root device names must be the fully expanded Open Boot Prom
* device name. This command is platform and configuration specific.
* This example uses the first partition (a) of the SCSI disk at
* SCSI target 3 on the esp host adapter in slot 0 (on board)
* of the SBus of the machine.
* Adapter unit-address 3,0 at sbus unit-address 0,800000.
rootdev: /sbus@1,f8000000/esp@0,800000/sd@3,0:a
* Set the filesystem type of the root to ufs. Note that
* the equal sign can be used instead of the colon.
rootfs:ufs
* Set the search path for kernel modules to look first in
* /usr/phil/mod_test for modules, then in /kernel/modules (the
* default) if not found. Useful for testing new modules.
* Note that you can delimit your module pathnames using
* colons instead of spaces: moddir:/newmodules:/kernel/modules
moddir:/usr/phil/mod_test /kernel/modules.
* Set the configuration option {_POSIX_CHOWN_RESTRICTED} :
* This configuration option is enabled by default.
set rstchown = 1
* Disable the configuration option {_POSIX_CHOWN_RESTRICTED} :
set rstchown = 0
* Turn on debugging messages in the modules mydriver. This is useful
* during driver development.
set mydriver:debug = 1
* Bitwise AND the kernel variable "moddebug" with the
* one's complement of the hex value 0x880, and set
* "moddebug" to this new value.
set moddebug & ~0x880
* Demonstrate the cumulative effect of the SET
* bitwise AND/OR operations by further modifying "moddebug"
* by ORing it with 0x40.
set moddebug | 0x40
boot(1M),
init(1M),
kernel(1M)
Use care when modifying the
system file; it modifies the operation of the
kernel. If you preserved the original
system file, you can boot using
boot -a, which will ask you to specify the path to the saved file. This
should allow the system to boot correctly. If you cannot locate a
system file that will work, you may specify
/dev/null. This acts
as an empty
system file, and the system will attempt to boot using its
default settings.
The
system files are read only once, at boot time.