*topic = *subtopic = *desc = NULL;
cp = line + 2;
- while((cp != NULL) && (*cp != 0)) {
+ while ((cp != NULL) && (*cp != 0)) {
ep = strchr(cp, ' ');
if ((*cp == 'T') && (*topic == NULL)) {
if (ep != NULL)
/* Scan the helpfile looking for help matching the request */
pager_open();
- while(help_getnext(hfd, &t, &s, &d)) {
+ while (help_getnext(hfd, &t, &s, &d)) {
if (doindex) { /* dink around formatting */
help_emitsummary(t, s, d);
} else if (strcmp(topic, t)) {
/* topic mismatch */
- if(matched) /* nothing more on this topic, stop scanning */
+ if (matched) /* nothing more on this topic, stop scanning */
break;
} else {
if (((subtopic == NULL) && (s == NULL)) ||
((subtopic != NULL) && (s != NULL) && !strcmp(subtopic, s))) {
/* exact match, print text */
- while((fgetstr(buf, 80, hfd) >= 0) && (buf[0] != '#')) {
+ while ((fgetstr(buf, 80, hfd) >= 0) && (buf[0] != '#')) {
if (pager_output(buf))
break;
if (pager_output("\n"))
* substitution happening.
*/
-COMMAND_SET(show, "show", "show variable(s)", command_show);
+COMMAND_SET(show, "show", "show kenv variable(s)", command_show);
static int
command_show(int argc, char *argv[])
return(CMD_OK);
}
-COMMAND_SET(set, "set", "set a variable", command_set);
+COMMAND_SET(set, "set", "set a kenv variable", command_set);
static int
command_set(int argc, char *argv[])
return(CMD_OK);
}
-COMMAND_SET(unset, "unset", "unset a variable", command_unset);
+COMMAND_SET(unset, "unset", "unset a kenv variable", command_unset);
static int
command_unset(int argc, char *argv[])
return(CMD_OK);
}
-COMMAND_SET(echo, "echo", NULL, command_echo);
+COMMAND_SET(echo, "echo", "print text ($VAR is kenv variable)", command_echo);
static int
command_echo(int argc, char *argv[])
* A passable emulation of the sh(1) command of the same name.
*/
-COMMAND_SET(read, "read", NULL, command_read);
+COMMAND_SET(read, "read", "read to kenv variable", command_read);
static int
command_read(int argc, char *argv[])
argv += (optind);
argc -= (optind);
+ if (argc > 1) {
+ command_errmsg = "wrong number of arguments";
+ return(CMD_ERROR);
+ }
name = (argc > 0) ? argv[0]: NULL;
if (prompt != NULL)
If needed, disable the ACPI driver with:
- unset acpi_load
+ lunset acpi_load
set hint.acpi.0.disabled=1
If needed, disable the AHCI driver with:
- unset ahci_load
+ lunset ahci_load
set hint.ahci.0.disabled=1
If needed, disable the EHCI driver with:
- unset ehci_load
+ lunset ehci_load
set hint.ehci.0.disabled=1
For more information on ACPI, AHCI and EHCI use `help' on these topics.
Assign value to variable. The value is always assigned to local
variable <variable>. If <variable> is in the list of known kernel
- environment variables or is a kernel tunable, the value is also
+ environment (kenv) variables or is a kernel tunable, the value is also
assigned to the kernel environment variable of the given name.
+ If the variable name contains a `.' it is considered a kernel tunable.
Local variables are unset if <value> is empty. Kernel environment
- variables may have empty values.
+ variables will have empty value.
- Two kinds of variables are maintained by this program (loader(8)):
+ Two kinds of variables are maintained by loader(8) (this program):
local variables, that is for loader(8) use only, and kernel
environment variables, that kernel will have access to when it starts.
- The assignment described above, will assign to a local variable and, if
- it is applicable, also snoop assignment to kernel environment variable.
+ The assignment described above, will assign to a local variable and,
+ if applicable, also snoop assignment to kernel environment variable.
+
+ <value> can be a string or a string expressions containing literal
+ text and kernel environment variables, like `$VAR' or `${VAR}'. E.g.:
+
+ VAR="Current device is $currdev"
+
+ Escape sequences like `\n' (newline) and `\OOO' (character with number
+ given in octal) can also be used. This is actually a general facility
+ of loader(8) which can be used for arguments of all commands.
################################################################################
# TAHCI DControl AHCI module behaviour
If the ahci_load variable is set, the AHCI module will be loaded.
The AHCI driver can be disabled with:
- unset ahci_load
+ lunset ahci_load
set hint.ahci.0.disabled=1
A link speed of 1.5Gb/s can be enforced with:
arguments for the kernel. If <kernelname> is specified, and a kernel
has not already been loaded, it will be booted instead of the default
kernel. <flag> values include:
+
-a Same as `set boot_askname'
-C Same as `set boot_cdrom'
-c Same as `set boot_userconfig'
echo [-n] [<message>]
- Emits <message>, with no trailing newline if -n is specified. This is
- most useful in conjunction with scripts and the '@' line prefix.
+ Emits <message>, with no trailing newline if -n is specified.
- Variables are substituted by prefixing them with $, e.g.
+ Kernel environment variables are substituted by prefixing them with
+ `$', like `$VAR'; another variant is `${VAR}'. E.g.:
echo Current device is $currdev
The EHCI driver provides support for the USB Enhanched Host Controller
Interface, which is used by USB 2.0 controllers.
+ The EHCI kernel module is by default loaded automatically.
+
If the ehci_load variable is set, the EHCI module will be loaded.
The EHCI driver can be disabled with:
- unset ehci_load
+ lunset ehci_load
set hint.ehci.0.disabled=1
See ehci.4 man page (on booted system) for full description.
################################################################################
# Tset DSet a kernel environment variable
- set <env_variable>
- set <env_variable>=<value>
+ set <kenv_variable>
+ set <kenv_variable>=<value>
The set command is used to set kernel environment variables.
Selects the default device. See `lsdev' for available devices.
################################################################################
-# Tset Sinit_path DSet the list of init candidates
+# Tset Sinit_chroot DSet directory that init(8) will chroot() to
+
+ set init_chroot=<path>
+
+ If set, init(8) will chroot() to <path> on startup. By setting this
+ variable DragonFly can be run from a subdirectory of the root file
+ system.
+
+################################################################################
+# Tset Sinit_path DSet the list of init(8) candidates
set init_path=<path>[:<path>...]
Sets the list of binaries which the kernel will try to run as initial
process.
-
################################################################################
# Tset Smodule_path DSet the module search path
when the kernel is booted. This can be overridden by setting
$rootdev explicitly.
+ See also vfs.root.mountfrom variable, under `set tunables' help item.
+
################################################################################
# Tset Stunables DSet kernel tunable values
Various kernel tunable parameters can be overridden by specifying new
values in the environment.
+ set hw.ioapic_enable=<value>
+
+ Set to 0 to disable use of I/O APIC. Default value is 1.
+
+ set hw.irq.X.dest=<value>
+
+ Set irqX's destination to the given CPUID, which starts from 0.
+ This variable should not be used if I/O APIC use is disabled.
+
set hw.pci.allow_unsupported_io_range=<value>
Allow the PCI Bridge to pass through an unsupported
memory range assigned by the BIOS.
- value is 0 (default) or non-zero to enable.
+ Value is 0 (default) or non-zero to enable.
set hw.pci.enable_io_modes=<value>
Enable PCI resources which are left off by some BIOSes
or are not enabled correctly by the device driver.
- value is 1 (default), but this may cause problems with
+ Value is 1 (default), but this may cause problems with
some peripherals. Set to 0 to disable.
set hw.physmem=<value> MAXMEM
Disable VT switching on suspend.
- value is 0 (default) or non-zero to enable.
+ Value is 0 (default) or non-zero to enable.
+
+ set hw.usb.hack_defer_exploration=<value>
+
+ The USB keyboard will sometimes not attach properly unless
+ you set this variable to 0.
- set kern.emergence_intr_enable=<value>
+ set kern.emergency_intr_enable=<value>
Setting this to 1 enables emergency interrupt polling. All
interrupt handlers are executed periodically. This mode is
accessible when interrupt routing is otherwise broken. It
is primarily used by kernel developers to debug new systems.
- set kern.emergence_intr_freq=<value>
+ set kern.emergency_intr_freq=<value>
Set the polling rate for the emergency interrupt polling
code. The default is 10 (hz) to dissuade causual use. If
Specify root file system. <value> is a semicolon separated
list of file systems. File system format is file system type
- and disk store, separated by colon. This variable needs to be
- set when using boot-only partition, which is typically mounted
- on root file system as /boot.
+ and disk store, separated by colon.
+
+ This variable needs to be set when using boot-only partition,
+ which is typically mounted on root file system as /boot.
One file system example:
- hammer:da8se1a
+
+ "hammer:da8se1a"
One file system HAMMER multi volume examples:
- hammer:da8s1a:da9s1a
+
+ "hammer:da8s1a:da9s1a"
Several file systems, boot list, example:
- ufs:da0s1a;hammer:ad1s1d
+
+ "ufs:da0s1a;hammer:ad1s1d"
Each file system in the list will be tried in the order
specified until the mount succeeds. If all fail, the
You may not specify devtab labels here but you can specify
paths available to devfs such as:
- hammer:serno/L41JYE0G.s1d
+
+ "hammer:serno/L41JYE0G.s1d"
+
+ set vfs.root.realroot=<value>
+
+ Specify root file system and extra options for initrd.
+
+ Format of <value> is below, TYPE is `local' or `crypt',
+ arg's depend on TYPE:
+
+ "TYPE:arg1:arg2:...:argN"
+
+ Examples of <value>:
+
+ Use UFS file system on lvm(8) volume group `vg00' logical
+ volume `lv0' as real root:
+
+ "local:ufs:/dev/vg00/lv0"
+
+ Use UFS file system on encrypted volume `secvolume', managed by
+ cryptsetup(8), on device `/dev/ad0s0a' as real root:
+
+ "crypt:ufs:/dev/ad0s0a:secvolume"
+
+ See mkinitrd.8 man page (on booted system) for full description.
################################################################################
# Tshow DShow values of kernel environment variable
- show [<env_variable>]
+ show [<kenv_variable>]
- Displays the value of <env_variable>, or all kernel environment
+ Displays the value of <kenv_variable>, or all kernel environment
variables if not specified.
See also `<variable>=<value>' command for distinction on local and
kernel environment variables.
################################################################################
-# Tlunsetif DUnset local variables if envvar true
+# Tlunsetif DUnset local variable if kenv variable true
- lunsetif <local_variable> <env_variable>
+ lunsetif <local_variable> <kenv_variable>
- Unset <local_variable> if <env_variable> is true, i.e. set to 1 or YES.
+ Unset local variable <local_variable> if kernel environment variable
+ <kenv_variable> is true, i.e. set to 1 or YES.
See also `<variable>=<value>' command for distinction on local and
kernel environment variables.
################################################################################
# Tifset DConditional kenv variable present
- ifset <env_variable>
+ ifset <kenv_variable>
- Conditional <env_variable> exists.
+ Conditional kernel environment variable <kenv_variable> exists.
################################################################################
# Telseifexists DConditional file/dir present
Run menu system.
################################################################################
-# Tread DRead input from the terminal
+# Tread DRead input from terminal to kenv variable
- read [-t <value>] [-p <prompt>] [<env_variable>]
+ read [-p <prompt>] [-t <value>] [<kenv_variable>]
- The read command reads a line of input from the terminal. If the
- -t argument is specified, it will return nothing if no input has been
- received after <value> seconds. (Any keypress will cancel the
- timeout).
+ The read command reads a line of input from the terminal.
If -p is specified, <prompt> is printed before reading input. No
newline is emitted after the prompt.
- If a variable name is supplied, the variable is set to the value read,
- less any terminating newline.
+ If -t is specified, it will return nothing if no input has been
+ received after <value> seconds. Any keypress will cancel the timeout.
+
+ If <kenv_variable> is supplied, the kernel environment variable is set
+ to the value read, less any terminating newline.
################################################################################
# Tunload DRemove all modules from memory
################################################################################
# Tunset DUnset a kernel environment variable
- unset <env_variable>
+ unset <kenv_variable>
If allowed, the named kernel environment variable's value is discarded
and the variable is removed.
.\"
.\" $FreeBSD: src/sys/boot/common/loader.8,v 1.57 2003/06/29 20:57:55 brueffer Exp $
.\"
-.Dd October 6, 2010
+.Dd October 16, 2011
.Dt LOADER 8
.Os
.Sh NAME
is in the list of known kernel environment variables or is a kernel tunable,
the value is also assigned to the kernel environment variable of the
given name.
+If the variable name contains a
+.Ql .\&
+it is considered a kernel tunable.
Local variables are unset if
.Ar value
is empty.
-Kernel environment variables may have empty values.
+Kernel environment variable will have empty value.
.Pp
In other words, the assignment above will set a local variable and
-if it is applicable, also assign
+if applicable, also assign
.Ar value
to the kernel environment variable, even if
.Ar value
is empty.
See also
-.Sx ENVIRONMENT VARIABLES AND LOCAL VARIABLES .
+.Sx KERNEL ENVIRONMENT VARIABLES AND LOCAL VARIABLES .
+.Pp
+.Ar Value
+can be a string or a string expression containing literal text and
+kernel environment variables, like
+.Dq $VAR
+or
+.Dq ${VAR} .
+Escape sequences like
+.Ql \en
+(newline),
+.Ql \et
+(TAB) and
+.Ql \eOOO
+(character with number given in octal)
+can also be used.
+This is actually a general facility of
+.Nm
+which can be used for arguments of all commands.
.Pp
.It Ic autoboot Op Ar delay Op Ar prompt
Proceeds to bootstrap the system after a number of seconds, if not
A new line will be printed unless
.Fl n
is specified.
+See description of assignment
+.Pq Ar variable Ns = Ns Ar value
+.Ar value
+for use of kernel environment variables and escape sequences in
+.Ar message .
.Pp
.It Ic else
Conditional if/else/endif.
.Pp
.It Ic ifexists Ar path
Conditional
-Ar path
+.Ar path
exists, i.e.\& file/dir present.
.Pp
-.It Ic ifset Ar env_variable
-Conditional
-.Ar env_variable
+.It Ic ifset Ar kenv_variable
+Conditional kernel environment variable
+.Ar kenv_variable
exists.
.Pp
.It Ic include Ar
format.
Any arguments passed after the name of the file to be loaded
will be passed as arguments to that file.
-Currently, argument passing does not work for the kernel.
.Pp
.It Ic loadall
Load the kernel and all modules specified by MODULE_load variables.
.It Ic ls Oo Fl l Oc Op Ar path
Displays a listing of files in the directory
.Ar path ,
-or the root directory if
+or the current directory if
.Ar path
is not specified.
If
Unset a local variable.
Discards the value and removes the variable.
.Pp
-.It Ic lunsetif Ar local_variable env_variable
-Unset
+.It Ic lunsetif Ar local_variable kenv_variable
+Unset local variable
.Ar local_variable
-if
-.Ar env_variable
+if kernel environment variable
+.Ar kenv_variable
is true, i.e.\& set to 1 or
.Ql YES .
.Pp
.It Ic pwd
Prints the working directory.
.Pp
-.It Ic read Oo Fl t Ar seconds Oc Oo Fl p Ar prompt Oc Op Ar env_variable
-Reads a line of input from the terminal, storing it in
-.Ar env_variable
+.It Ic read Oo Fl p Ar prompt Oc Oo Fl t Ar seconds Oc Op Ar kenv_variable
+Reads a line of input from the terminal,
+storing it in kernel environment variable
+.Ar kenv_variable
if specified.
+A prompt may be displayed through the
+.Fl p
+flag.
A timeout can be specified with
.Fl t ,
though it will be canceled at the first key pressed.
-A prompt may also be displayed through the
-.Fl p
-flag.
.Pp
.It Ic reboot
Immediately reboots the system.
.Pp
-.It Ic set Ar env_variable
-.It Ic set Ar env_variable Ns = Ns Ar value
-Set
-.Nm Ns 's
-environment variables.
+.It Ic set Ar kenv_variable
+.It Ic set Ar kenv_variable Ns = Ns Ar value
+Set kernel environment variable
+.Ar kenv_variable
+to the given value,
+if no
+.Ar value
+is given, the empty string is the value.
.Pp
-.It Ic show Op Ar env_variable
+.It Ic show Op Ar kenv_variable
Displays the specified kernel environment variable's value,
or all variables and their values if
-.Ar env_variable
+.Ar kenv_variable
is not specified.
.Pp
.It Ic unload
Removes all modules from memory.
.Pp
-.It Ic unset Ar env_variable
+.It Ic unset Ar kenv_variable
Removes
-.Ar env_variable
-from the environment.
+.Ar kenv_variable
+from the kernel environment.
.Pp
.It Ic \&?
Lists most available commands with a short help text for each.
.El
-.Ss ENVIRONMENT VARIABLES AND LOCAL VARIABLES
+.Ss KERNEL ENVIRONMENT VARIABLES AND LOCAL VARIABLES
The
.Nm
-has actually two different kinds of variables.
-There are
-kernel environment variables, which are visible to the kernel when it is run,
+actually has two different kinds of variables.
+These are
+kernel environment variables,
+which are visible to the kernel when it is started,
and a separate space of local variables used by
.Nm ,
which are not available to the kernel.
.Pp
-Environment variables can be set and unset through the
+Both local variable and kernel environment variable
+of the same name are changed by assignment
+.Pq Ar variable Ns = Ns Ar value .
+.Pp
+Kernel environment variables can be set and unset through the
.Ic set
and
.Ic unset
-builtins, and can have their values interactively examined through the
-use of the
+builtins, and can have their values examined through the
.Ic show
+and
+.Ic ifset
+builtins.
+Variables in command arguments or
+.Ar value
+in assignments
+.Dq ( $VAR
+and
+.Dq ${VAR} )
+refers to kernel environment variables.
+.Pp
+Local variables can be unset with
+.Ic lunset
+and
+.Ic lunsetif
+builtin, and can have their values examined through the
+.Ic local
builtin.
.Pp
Notice that these environment variables are not inherited by any shell
after the system has been booted, but can be examined by
.Xr kenv 1 .
.Pp
+Note that a variable can have two instances with differnet values:
+both a local variable instance and a kernel environment variable instance
+can exist for the same name and with different values.
+This can cause confusion and is seldom done on purpose.
+.Pp
A few variables are set automatically by
.Nm .
Others can affect the behavior of either
Both types of variables are described below.
.Bl -tag -width indent
.It Va acpi_load
-Unset this to disable automatic loading of the ACPI module.
+Used for handling automatic loading of the
+.Xr acpi 4
+module.
+To disable automatic loading of the ACPI module use:
+.Pp
+.Dl lunset acpi_load
+.Dl set hint.acpi.0.disabled=1
.It Va autoboot_delay
Number of seconds
.Ic autoboot
Selects default kernel loaded by
.Ic menu
command.
+Defaults to
+.Pa kernel .
+.It Va dumpdev
+The name of a device where the kernel can save a crash dump in case
+of a panic.
+This automatically sets the
+.Va kern.dumpdev
+.Xr sysctl 3
+.Tn MIB
+variable.
.It Va ehci_load
-Unset this to disable automatic loading of the EHCI module.
+Used for handling automatic loading of the
+.Xr ehci.4
+module.
+To disable automatic loading of the EHCI module use:
+.Pp
+.Dl lunset ehci_load
+.Dl set hint.ehci.0.disabled=1
+.It Va init_chroot
+Directory
+.Xr init 8
+will
+.Fn chroot
+to on startup.
+By setting this variable
+.Dx
+can be run from a subdirectory of the root file system.
.It Va init_path
Sets the list of binaries which the kernel will try to run as the initial
process.
prompt.
Defaults to
.Dq Li OK .
+Kernel environment variables can be used in
+.Va prompt
+by including
+.Dq Li ${VAR} .
+E.g. (note that
+.Ql $
+must be escaped with
+.Ql \e
+to be included in
+.Va prompt ) :
+.Pp
+.Dl "set prompt=\*q\e${currdev} OK\*q"
.It Va root_disk_unit
If the code which detects the disk unit number for the root disk is
confused, e.g.\& by a mix of
disks with
gaps in the sequence (e.g.\& no primary slave), the unit number can
be forced by setting this variable.
+.Pp
+See also
+.Va vfs.root.mountfrom
+variable.
.It Va rootdev
By default the value of
.Va currdev
This can be overridden by setting
.Va rootdev
explicitly.
-.It Va dumpdev
-The name of a device where the kernel can save a crash dump in case
-of a panic.
-This automatically sets the
-.Va kern.dumpdev
-.Xr sysctl 3
-.Tn MIB
+.Pp
+See also
+.Va vfs.root.mountfrom
variable.
.El
.Pp
.Nm
tunables are available:
.Bl -tag -width indent
+.It Va hw.ioapic_enable
+Control use of
+.Tn I/O APIC .
+Set to 1 to enable, 0 to disable.
+Default is 1.
.It Va hw.irq.X.dest
Set irqX's destination to the given
.Tn CPUID ,
.Tn CPUID
will be used.
This variable should not be used if
-.Tn IO/APIC
-support is not compiled into kernel.
+.Tn I/O APIC
+use is disabled.
.It Va hw.physmem
Limit the amount of physical memory the system will use.
By default the size is in bytes, but the
.Xr devfs 5
such as:
.Dl hammer:serno/L41JYE0G.s1d
+.It Va vfs.root.realroot
+Root file system and extra options for
+.Nm initrd .
+See
+.Xr mkinitrd 8 .
.El
.Sh FILES
.Bl -tag -width /boot/defaults/dloader.menu -compact
.It Pa /boot/boot.conf
.Nm
bootstrapping script.
-Deprecated.
-.It Pa /boot/loader
-.Nm
-itself.
+Deprecated
.It Pa /boot/defaults/dloader.menu
.Nm
-menu setup commands -- do not change this file.
+menu setup commands -- do not change this file
.It Pa /boot/defaults/loader.conf
.Nm
configuration file, see
.Xr loader.conf 5
--- do not change this file.
+-- do not change this file
.It Pa /boot/dloader.menu
.Nm
-menu setup commands.
+menu setup commands
.It Pa /boot/dloader.rc
.Nm
-bootstrapping script.
+bootstrapping script
+.It Pa /boot/loader
+.Nm
+itself
.It Pa /boot/loader.conf
.It Pa /boot/loader.conf.local
.Nm
configuration files, see
-.Xr loader.conf 5 .
+.Xr loader.conf 5
.It Pa /boot/loader.help
help messages, used by the
.Ic help
-command.
+command
.El
.Sh EXAMPLES
Boot in single user mode:
boot kernel
.Ed
.Sh SEE ALSO
+.Xr kenv 1 ,
.Xr libstand 3 ,
+.Xr acpi 4,
+.Xr ehci 4,
.Xr loader.conf 5 ,
.Xr tuning 7 ,
.Xr boot 8 ,
.Xr btxld 8 ,
+.Xr cryptsetup 8 ,
+.Xr lvm 8 ,
.Xr pxeboot 8 ,
.Xr pxeboot_tftp 8 ,
.Xr sysctl 8
.Nm dloader
was written by
.An Matthew Dillon Aq dillon@backplane.com .
+.Sh BUGS
+A variable can have two instances: local & kernel environment,
+this can cause confusion.
}
/*
- * This intercepts lines of the form 'a=b'
+ * "local" intercepts assignments: lines of the form 'a=b'
*/
COMMAND_SET(local, "local", "List local variables", command_local);
COMMAND_SET(lunset, "lunset", "Unset local variable", command_lunset);
-COMMAND_SET(lunsetif, "lunsetif", "Unset local if envvar set to 1 or YES", command_lunsetif);
+COMMAND_SET(lunsetif, "lunsetif", "Unset local variable if kenv variable is true", command_lunsetif);
COMMAND_SET(loadall, "loadall", "Load kernel + modules", command_loadall);
COMMAND_SET(menuclear, "menuclear", "Clear all menus", command_menuclear);
COMMAND_SET(menuitem, "menuitem", "Add menu bullet", command_menuitem);
static char *kenv_vars[] = {
"LINES",
+ "acpi_load",
"autoboot_delay",
"boot_askname",
"boot_cdrom",
"bootfile",
"console",
"currdev",
- "dumpdev",
"default_kernel",
+ "dumpdev",
+ "ehci_load",
+ "interpret",
+ "init_chroot",
"init_path",
"kernel_options",
"kernelname",
"loaddev",
"module_path",
+ "num_ide_disks",
+ "prompt",
+ "rootdev",
"root_disk_unit",
NULL
};
The ACPI driver provides support for the Advanced Configuration and
Power Management standard.
+ The ACPI kernel module is by default loaded automatically.
+
If the acpi_load variable is set, the ACPI module will be loaded.
The ACPI driver can be disabled with:
- unset acpi_load
+ lunset acpi_load
set hint.acpi.0.disabled=1
Note that the ACPI autodetection sets a number of hints to
gaps in the sequence (i.e. no primary slave), the unit number can be
forced by setting this variable.
+ See also vfs.root.mountfrom variable, under `set tunables' help item.
+
################################################################################