Kernel boot options
There are three ways to pass options to the kernel and thus control its behavior:
-
When building the kernel. Most of this book discusses these options.
-
When starting the kernel. Usually, parameters are passed to the kernel when it is invoked from a boot file such as the GRUB or LILO configuration file.
-
At run-time, by writing to files in the
/proc
and/sys
directories.
This chapter describes the second method of passing options. The chapter breaks the boot-time options into different logical sections. A number of architecture-specific and individual driver options are not listed here. For a complete list of all known options, please see the file Documentation/kernel-parameters.txt
in the kernel source tree and the individual architecture-specific documentation files.
Not all of the listed options are always available. Most are associated with subsystems, and work only if the kernel is configured with those subsystems built in. They also depend on the presence of the hardware with which they are associated.
All of these parameters are case-sensitive.
Module-specific options
In addition to the options listed in this chapter, parameters for modules that are built in to the kernel can also be passed on the command line. (Dynamically loaded modules, of course, are not in memory when the kernel boots and therefore cannot be passed parameters at boot time.) The syntax for passing parameters consisting of the module name followed by a dot (.
) and the parameter.
For example, the usbcore
module accepts the parameter blinkenlights
to display flashing lights on all supported USB 2.0 hubs (don't ever say the kernel developers don't have a sense of humor). To set this parameter when loading the module dynamically, you would enter:
$ modprobe usbcore blinkenlights=1
But if the usbcore
module is built into the kernel, you achieve the same effect by invoking the kernel with the following option:
usbcore.blinkenlights=1
Most module options for modules that are built into the kernel can also be changed at run time by writing to files in the subdirectory named after the module under the /sys/module/
directory. Thus, the blinkenlights
option is represented by the file /sys/module/usbcore/blinkenlights
. desired.
Console options
These options deal with the console or kernel log, where kernel debugging and error information are displayed.
Name
console — Output console device and options.
Synopsis
console=
Options
tty
n
-
Use the virtual console device
n
. ttyS
,n
[,options
]ttyUSB0[,
options
]-
Use the specified serial port. The options are of the form
bbbbpnf
, wherebbbb
is the baud rate,p
is parity (n
,o
, ore
),n
is number of bits, andf
is flow control (r
for RTS or omitted). Default is9600n8
.See the file
Documentation/serial-console.txt
for more information on how to use a serial console. If you wish to have access to the kernel console information and do not have a serial port, see thenetconsole
command-line option. uart,io,
,addr
[,options
]uart,mmio,
addr
[,options
]-
Start an early, polled-mode console on the 8250/16550 UART at the specified I/O port or MMIO address, switching to the specified ttyS device later. The options are the same as for ttyS shown earlier.
Name
netconsole — Output console data across the network.
Synopsis
netconsole=
[src-port
]@
[src-ip
]/
[dev
],
[target-port
]@
target-ip
/
[target-mac-address
]
Send kernel console data across the network using UDP packets to another machine. Options are:
src-port
-
Source port for the UDP packets. The default value is 6665.
src-ip
-
Source IP address of the interface to use.
dev
-
Network interface to use.
eth0
is an example. The network interface can also run normal network traffic, because the netconsole data is not intrusive and should cause no slowdown in other network operations. target-port
-
Port that the logging agent will use. The default value is 6666.
target-ip
-
IP address for the logging agent.
target-mac-address
-
Ethernet MAC address for the logging agent.
To listen to this data, the remote machine can use the syslogd program, or run the netcat program as follows:
netcat -u -l -p
port
For more background on how to use this option, see the file Documentation/networking/netconsole.txt
.
Name
debug — Enable kernel debugging.
Cause the kernel log level to be set to the debug level, so that all debug messages will be printed to the console at boot time.
Name
quiet — Disable all log messages.
Synopsis
quiet
Set the default kernel log level to KERN_WARNING (4), which suppresses all messages during boot except extremely serious ones. (Log levels are defined under the loglevel
parameter.)
Name
earlyprintk — Show early boot messages.
Synopsis
earlyprintk=
[vga
|serial
][,ttyS
n
[,baudrate
]][,keep
]
Show kernel log messages that precede the initialization of the traditional console. These messages are typically never seen on the console unless you use this option. Enabling this can be very useful for tracking down hardware issues. Currently, the option can specify either the VGA device or the serial port, but not both at the same time. Also, only the ttyS0
or ttyS1
serial devices will work. Interaction with the standard serial driver is not very good, and the VGA output will eventually be overwritten by the real console.
Append ,keep
in order not to disable the messages shown by this option when the real kernel console is initialized and takes over the system.
Name
loglevel — Set the default console log level.
Synopsis
loglevel=
level
Specify the initial console log level. Any log messages with levels less than this (that is, of higher priority) will be printed to the console, whereas any messages with levels equal to or greater than this will not be displayed.
The console log level can also be changed by the klogd program, or by writing the specified level to the /proc/sys/kernel/printk
file.
The kernel log levels are:
0 (KERN_EMERG)
-
The system is unusable.
1 (KERN_ALERT)
-
Actions that must be taken care of immediately.
2 (KERN_CRIT)
-
Critical conditions.
3 (KERN_ERR)
-
Non-critical error conditions.
4 (KERN_WARNING)
-
Warning conditions that should be taken care of.
5 (KERN_NOTICE)
-
Normal, but significant events.
6 (KERN_INFO)
-
Informational messages that require no action.
7 (KERN_DEBUG)
-
Kernel debugging messages, output by the kernel if the developer enabled debugging at compile time.
Name
log_buf_len — Set the size of the kernel log buffer.
Synopsis
log_buf_len=
n
[KMG
]
Set the size of the kernel's internal log buffer. n
must be a power of 2, if not, it will be rounded up to be a power of two. This value can also be changed by the CONFIG_LOG_BUF_SHIFT
kernel configuration value.
Name
initcall_debug — Debug the initcall functions in the kernel.
Cause the kernel to trace all functions that are called by the kernel during initialization of the system as the kernel boots. This option is useful for determining where the kernel is dying during startup.
Name
kstack — How many words of the stack to print in kernel oopses.
Synopsis
kstack=
n
Specify how many words from the kernel stack should be printed in the kernel oops dumps. n
is an integer value.
Name
time — Show timing data on every kernel log message.
Cause the kernel to prefix every kernel log message with a timestamp.
Interrupt options
Interrupts are a complex aspect of kernel behavior. The boot-time options deal mostly with the interface between the kernel and the hardware that handles interrupts, such as the Intel chip's Advanced Programmable Interrupt Controller (APIC).
Name
apic — Change the verbosity of the APIC subsystem when booting.
Synopsis
apic=
[quiet
(default)|verbose
|debug
]
Control how much information the APIC subsystem generates when booting the kernel.
Name
noapic — Do not use any IOAPICs.
Prevent the kernel from using any of the IOAPICs that might be present in the system.
Name
lapic — Enable the local APIC.
Cause the kernel to enable the local APIC even if the BIOS had disabled it.
Name
nolapic — Do not use the local APIC.
Tell the kernel not to use the local APIC.
Name
noirqbalance — Disable kernel IRQ balancing.
Disable all of the built-in kernel IRQ balancing logic.
Name
irqfixup — Basic fix to interrupt problems.
When an interrupt is not handled, search all known interrupt handlers for it. This is intended to get systems with badly broken firmware running.
Name
irqpoll — Extended fix to interrupt problems.
When an interrupt is not handled, search all known interrupt handlers for it and also check all handlers on each timer interrupt. This is intended to get systems with badly broken firmware running.
Name
noirqdebug — Disable unhandled interrupt detection.
By default, the kernel attempts to detect and disable unhandled interrupt sources because they can cause problems with the responsiveness of the rest of the kernel if left unchecked. This option will disable this logic.
Memory options
The kernel handles memory in many different chunks and categories for different purposes. These options allow you to tweak the sizes and settings.
Name
highmem — Specify the size of the highmem memory zone.
Synopsis
highmem=
n
Force the highmem memory zone to have an exact size of n
bytes. This will work even on boxes that have no highmem zones by default. It can also reduce the size of the highmem zone for machines with a lot of memory.
Name
hugepages — Set the number of hugetlb pages.
Synopsis
hugepages=
n
The hugetlb feature lets you configure Linux to use 4MB pages, one thousand times the default size. If Linux is configured this way, this options sets the maximum number of hugetlb pages to be n
.
Name
ihash_entries — Set the number of inode hash buckets.
Synopsis
ihash_entries=
n
Override the default number of hash buckets for the kernel's inode cache. Recommended only for kernel experts.
Name
max_addr — Ignore memory.
Synopsis
max_addr=
n
Cause the kernel to ignore all physical memory greater than or equal to the physical address n
.
Name
mem — Force memory usage.
Synopsis
mem=
n
[KMG
]
Set the specific ammount of memory used by the kernel. When used with the memmap=
option, physical address space collisions can be avoided. Without the memmap=
option, this option could cause PCI devices to be placed at addresses that belong to unused RAM. n
specifies the amount of memory to force and is measured in units of kilobytes (K
), megabytes (M
), or gigabytes (G
).
Name
mem — Disable the use of 4MB pages for kernel memory.
Synopsis
mem=nopentium
Disable the use of huge (4MB) pages for kernel memory.
Name
memmap — Enable setting of an exact E820 memory map.
Synopsis
memmap=
exactmap
Use a specific memory map. The exactmap
lines can be constructed based on BIOS output or other requirements.
Name
memmap — Force specific memory to be used.
Synopsis
memmap=
n
[KMG
]@
start
[KMG
]
Force the kernel to use a specific memory region. n
is the size of the memory location and start
is the start location in memory of the range. Units can be kilobytes (K
), megabytes (M
), or gigabytes (G
).
Name
noexec — Enable or disable non-executable mappings.
Synopsis
noexec=
[(on
|(off
]
Enable or disable the kernel's ability to map sections of memory as non-executable. By default, the mapping is enabled (on
).
Name
reserve — Reserve some I/O memory.
Synopsis
reserve=
n
[KMG
]
Force the kernel to ignore some of the I/O memory areas.
Name
vmalloc — Force the vmalloc area to have a specific size.
Synopsis
vmalloc=
n
[KMG
]
Force vmalloc to have the exact size specified by n
. This can be used to increase the minimum size of the vmalloc area (which is 128 MB on the x86 processor). It can also be used to decrease the size and leave more room for directly mapped kernel RAM.
Name
norandmaps — Do not use address space randomization.
By default, the kernel randomizes the address space of all programs when they are started. This option disables this feature. It is equivalent to writing 0
to the file /proc/sys/kernel/randomize_va_space
.
Name
vdso — Enable or disable the VDSO mapping.
Synopsis
vdso=
[0
|1
]
Disable (0) or enable (1) the VDSO (Virtual Dynamic Shared Object) mapping option. By default, it is enabled.
Suspend options
These options change the way the kernel handles suspension for power-saving purposes.
Name
resume — Specify the partition device for the suspend image.
Synopsis
resume=
suspend_device
Tell the kernel which disk device contains the suspended kernel image. If the data on the image is a valid kernel image created by the software suspend subsystem, it will be loaded into memory and the kernel will run it instead of continuing on with the normal boot process. suspend_device
is the kernel device name, which might be different from what userspace thinks the device name is, so be careful with this option.
Name
noresume — Disable resume.
Disable the resume functionality of the kernel. Any swap partitions that were being used to hold system images to which the kernel could be restored will revert back to available swap space.
CPU options
These options control a wide range of behavior regarding timing, processor use in multi-processor systems, and other processor issues.
Name
cachesize — Override level 2 CPU cache size detection.
Synopsis
cachesize=
n
Sometimes CPU hardware bugs make them report the cache size incorrectly. The kernel will attempt to work around and fix known problems with most CPUs, but for some CPUs it is not possible to determine what the correct size should be. This option provides an override for these situations. n
is measured in units of bytes.
Name
lpj — Set the loops per jiffy.
Synopsis
lpg=
n
Specify the loops per jiffy that should be used by the kernel, and thus have the kernel avoid the time-consuming boot-time autodetection of this value. If n
is 0
, the value will be autodetected as usual.
Warning
On SMP systems, this value will be set on all CPUs, which might cause problems if the different CPUs need different settings. An incorrect value will cause incorrect delays in the kernel, which can lead to unpredictable I/O errors and other breakage. Although unlikely, in the extreme case this might damage your hardware.
Name
nmi_watchdog — Set the NMI watchdog value.
Synopsis
nmi_watchdog=
[0
|1
|2
|3
]
This is a debugging feature that allows the user to override the default non-maskable interrupt (NMI) watchdog value. 0
specifies that no NMI watchdog should be used. 1
specifies that the APIC should be used if present. 2
specifies that the local APIC should be used if present. 3
means that the NMI watchdog is invalid, so do not use it.
Name
no387 — Always use the 387 emulation library.
Always use the 387 math emulation library, even if a 387 math coprocessor is present in the system.
Name
nofxsr — Disable x86 floating-point save and restore.
Disable the x86 floating-point extended register save and restore. The kernel will save only legacy floating-point registers on a task switch.
Name
no-hlt — Do not use the HLT
instruction.
This option is available because the HLT
instruction does not work correctly for some x86 processors. This option tells the kernel not to use the instruction.
Name
mce — Enable the machine check exception feature.
Some processors can check for machine errors (usually errors in the hardware). This option turns this subsystem on, if it has been built into the kernel configuration.
Name
nomce — Disable the machine check exception feature.
This option turns the subsystem off.
Name
nosep — Disable x86 SYSENTER/SYSEXIT support.
Disable x86 SYSENTER/SYSEXIT support in the kernel. This can cause some system calls to take longer.
Name
nosmp — Run as a single processor machine.
Tell an SMP kernel to act as a uniprocessor kernel, even on a multiprocessor machine.
Name
notsc — Disable the time stamp counter.
Disable the time stamp counter hardware in the system, if present.
Name
max_cpus — Maximum number of CPUs to use.
Synopsis
maxcpus=
n
Specify the maximum number of processors that a SMP kernel should use, even if there are more processors present in the system.
Scheduler options
These options tweak the parameters used to make scheduling decisions. Most depend on an intimate understanding of how scheduling works in Linux.
Name
isolcpus — Isolate CPUs from the kernel scheduler.
Synopsis
isolcpus=
cpu_number
[,
cpu_number
,...]
Remove the specified CPUs, as defined by the cpu_number
values, from the general kernel SMP balancing and scheduler algroithms. The only way to move a process onto or off an "isolated" CPU is via the CPU affinity syscalls. cpu_number
begins at 0
, so the maximum value is 1 less than the number of CPUs on the system.
This option is the preferred way to isolate CPUs. The alternative, manually setting the CPU mask of all tasks in the system, can cause problems and suboptimal load balancer performance.
Name
migration_cost — Override the default scheduler migrations costs.
Synopsis
migration_cost=
level-1-useconds
[level-2-useconds
...]
This is a debugging option that overrides the default scheduler migration cost matrix. The numbers specified by level-N-useconds
are indexed by the "CPU domain distance" and are measured in microseconds.
An example of this option is migration_cost=1000,2000,3000
for a SMT NUMA machine. It sets up an intra-core migration cost of 1 ms, another inter-core migration cost of 2 ms, and another internode migration cost of 3 ms.
Warning
Incorrect values can severely degrade scheduler performance, so this option should be used only for scheduler development, never for production environments.
Name
migration_debug — Verbosity of migration cost auto-detection.
Synopsis
migration_debug=
[0
|1
|2
]
Set the migration cost debug level. If 0
is specified, no extra messages will be printed to the kernel log. This is the default value. 1
prints some information on how the matrix is determined. 2
is very verbose and is useful only if you use a serial console, as the amount of information will overflow the kernel log buffer.
Name
migration_factor — Multiply or divide the migration costs.
Synopsis
migration_factor=
percent
Modify the default migration costs by the specified percentage
. This is a debugging option that can be used to proportionally increase or decrease the auto-detected migration costs for all entries of the migration matrix. For example, migration_factor=150
increases migration costs by 50%, so the scheduler will be less eager to migrate cache-hot tasks. migration_factor=80
decreases migration costs by 20%, thus making the scheduler will be more eager to migrate tasks.
Warning
Incorrect values can severely degrade scheduler performance, so this option should be used only for scheduler development, never for production environments.
Ramdisk options
These options control how the storage of information in memory to imitate disks (Ramdisks) is done, including init ramdisks that hold information necessary at some stages of booting.
Name
initrd — Location of initial ramdisk.
Synopsis
initrd=
filename
Specify where the initial ramdisk for the kernel boot is located.
Name
load_ramdisk — Load a kernel ramdisk from a floppy.
Synopsis
load_ramdisk=
n
If n
is set to 1
, a ramdisk is loaded by the kernel at boot time from the floppy drive.
Name
noinitrd — Do not use any initrd.
Do not load any initial ramdisk, even if it is configured in other options passed to the kernel.
Name
prompt_ramdisk — Prompt for the list of ramdisks.
Synopsis
prompt_ramdisk=1
Prompt the user for the initial ramdisk before attempting to read it from the floppy drive.
Name
ramdisk_blocksize — Blocksize of the ramdisk.
Synopsis
ramdisk_blocksize=
n
Tell the ramdisk driver how many bytes to use per block. The default size is 1024.
Name
ramdisk_size — Size of the ramdisk.
Synopsis
ramdisk_size=
n
Specify the size of the initial RAM disk in kilobytes. The default size is 4096 (4 MB). This option should be used instead of the older ramdisk
command-line option.
Root disk options
These options control how the kernel finds and handles the filesystem that contains the root filesystem.
Name
ro — Mount the root device read-only on boot.
The default for the kernel is to mount the root device as read-only at boot time. This option ensures that this is the mode the kernel uses. It overrides the rw
command-line option, if it had been specified earlier on the boot command line.
Name
root — Specify the root filesystem to boot from.
Synopsis
root=
device
Tell the kernel which disk device the root filesystem image is on. device
can be specified in one of the following ways:
nnnn
-
A device number in hexadecimal represents the major and minor number of the device in the internal format that the kernel expects. This method is not recommended unless you have access to kernel internals.
/dev/nfs
-
Use the NFS disk specified by the
nfsroot
boot option as the root disk. /dev/
<diskname>
-
Use the kernel disk name specified by
<diskname>
as the root disk. /dev/
<diskname><decimal>
-
Use the kernel disk name specified by
<diskname>
and the partition specified by<decimal>
as the root disk. /dev/
<diskname>
p
<decimal>
-
Use the kernel disk name specified by
<diskname>
and the partition specified by<decimal>
as the root disk. This is the same as above, but is needed when<diskname>
ends with a digit.
Name
rootdelay — Time to delay before attempting to mount the root filesystem.
Synopsis
rootdelay=
n
Wait n
seconds before trying to mount the root filesystem. This can be useful if the root filesystem is on a USB or Firewire device, as those disk devices take a bit longer to be discovered by the kernel.
Name
rootflags — The root filesystem mount options.
Synopsis
rootflags=
options
Mount options that the kernel should use in mounting the root filesystem. The options
value depend on the filesystem type; see the documentation for the individual types for details on what is valid.
Name
rootfstype — The root filesystem type.
Synopsis
rootfstype=
type
Try to mount the root filesystem as this type of filesystem. For instance, rootfstype=ext3
.
Name
rw — Mount the root device read-write on boot.
The default for the kernel is to mount the root device as read-only at boot time. This option mounts the root device as read-write instead.
Init options
The init process is the first to be started by the kernel and is the ancestor of all other processes. These options control which program is run and how it is run.
Name
init — Program to run at init time.
Synopsis
init=
filename
Run the specified binary as the init process instead of the default /sbin/init
program.
Name
rdinit — Run the init process from the ramdisk.
Synopsis
rdinit=
full_path_name
Run the program specified by full_path_name
as the init process. This file must be on the kernel ramdisk instead of on the root filesystem.
Name
S — Run init in single-user mode.
The default for the kernel is to run init in multi-user mode. This option runs init in single-user mode instead.
kexec options
The kexec subsystem is a specialized rebooting feature that allows a fast reboot and is usually combined with the kdump facility that enables the previous kernel's memory to be dumped to a safe place for analysis at a later time. These options modify the kexec subsystem's parameters.
Name
crashkernel — Reserve a portion of physical memory for kexec to use.
Synopsis
crashkernel=
n
[KMG
]@start
[KMG
]
The kexec subsystem likes to have a portion of physical memory reserved for it. This option reserves that memory from the rest of the kernel and will switch to use it if the kernel panics. n
specifies the amount of memory to reserve, and start
specifies the location for this memory chunk. Both are measured in units of kilobytes (K
), megabytes (M
), or gigabytes (G
).
Name
elfcorehdr — Start of the kernel core image ELF header.
Synopsis
elfcorhdr=
n
The kernel, like every Linux executable, is stored in ELF format. This option specifies the physical address where the kernel core image's ELF header starts. This is used by kexec to find the kernel when booting the secondary kernel image.
RCU options
Read Copy Update (RCU) is a portion of the kernel that handles mutual exclusion for a variety of subsystems in a lock-less manner. There are a number of options that can be used to tune RCU in different ways:
Name
rcu.blimit — RCU batch limit.
Synopsis
rcu.blimit=
n
Set the maximum number of finished RCU callbacks to process in one batch.
Name
rcu.qhimark — RCU queue high level.
Synopsis
rcu.qhimark=
n
Batch limiting is disabled when the number of queued RCU callbacks rises above n
.
Name
rcu.qlowmark — RCU queue low level.
Synopsis
rcu.qlowmark=
n
Batch limiting is re-enabled when the number of queued RCU callbacks falls below n
.
Name
rcu.rsinterval — RCU callback queue length.
Synopsis
rcu.rsinterval=
n
Set the number of additional RCU callbacks that should bee queued before forcing a reschedule on all CPUs.
ACPI options
These options control parameters that the Advanced Configuration and Power Interface (ACPI) subsystem can use.
Name
acpi — ACPI subsystem options.
Synopsis
acpi=
[force
|off
|noirq
|ht
|strict
]
This is the main option for the Advanced Configuration and Power Interface (ACPI). Values are:
force
-
Force ACPI to be enabled. Can be used to override the kernel configuration option that disabled it.
off
-
Disable ACPI. Can be used to override the kernel configuration option that enabled it.
noirq
-
Prevent ACPI from being used for IRQ routing.
ht
-
run only enough of the ACPI layer to enable HyperThreading on processors that are capable of it.
strict
-
Make the ACPI layer be less tolerant of platforms that are not fully compliant with the ACPI specification.
Name
acpi_sleep — ACPI sleep options.
Synopsis
acpi_sleep=
[s3_bios
],
[s3_mode
]
During S3 resume (which happens after the machine has been suspended to RAM), hardware needs to be reinitialized properly. For most devices this is simple, except for video cards, which are normally initialized by the BIOS. The kernel does not have enough information to restore the video device, because that information is in the BIOS and not accessable at all. This option lets the kernel try to use the ACPI subsystem to restore the video card in two different ways.
See the file Documentation/power/video.txt
for more information on this option and how to find the proper value for your type of hardware.
Name
acpi_sci — ACPI System Control Interrupt trigger mode.
Synopsis
acpi_sci=
[level
|edge
|high
|low
]
Set the ACPI System Control Interrupt trigger mode.
Name
acpi_irq_balance — Enable ACPI IRQ balance.
Cause ACPI to balance the active IRQs. This is the default option when operating in APIC mode.
Name
acpi_irq_nobalance — Disable ACPI IRQ balance.
Cause ACPI not to move the active IRQs. This is the default option when operating in PIC mode.
Name
acpi_irq_isa — Mark the listed IRQs as used by ISA.
Synopsis
acpi_irq_isa=
irq
[,
irq
...]
If the IRQ balance option is enabled, mark the listed IRQs as used by the ISA subsystem.
Name
acpi_irq_pci — Mark the listed IRQs as used by PCI.
Synopsis
acpi_irq_pci=
irq
[,
[irq
...]
If the IRQ balance option is enabled, mark the listed IRQs as used by the PCI subsystem.
Name
acpi_os_name — Fake the operating system name to ACPI.
Synopsis
acpi_os_name=
name
Tell the ACPI BIOS that the name of the running operating system is name
. This can be useful to spoof the BIOS into thinking that Windows is running instead of Linux, which can help solve some ACPI issues for older BIOSes. As an example, use the string Microsoft 2001
to spoof the BIOS into thinking that Windows 2001 is running on the machine.
Name
acpi_osi — Disable the _OSI ACPI method.
Synopsis
acpi_osi=
[n
]
This is actually a binary option despite the integer value. If n
is absent, ACPI will disable the _OSI method. If n
is present, _OSI will not be disabled.
Name
acpi_serialize — Force serialization of AML methods.
Force the serialization of ACPI Machine Language methods.
Name
acpi_skip_timer_override — Skip interrupt override issues.
Allow the ACPI layer to recognize and ignore IRQ0/pin2 Interrupt Override issues for broken nForce2 BIOSes that result in the XT-PIC timer acting up.
Name
acpi_dbg_layer — ACPI debug layer.
Synopsis
acpi_dbg_layer=
n
Set the ACPI debug layers. n
is an integer in which each bit indicates a different ACPI debug layer. After the system has booted, the debug layers can be set via the /proc/acpi/debug_layer
file.
Name
acpi_fake_ecdt — ECDT workaround.
If present, this allows ACPI to workaround BIOS failures when it lacks an Embedded Controller Description Table.
Name
acpi_generic_hotkey — Use generic ACPI hotkey driver.
This allows the ACPI consolidated generic hotkey driver to override the platform-specific driver if one is present.
Name
acpi_pm_good — Override pmtimer bug detection.
Force the kernel to assume that the machine's pmtimer latches its value and always returns good values.
Name
ec_intr — ACPI Embedded Controller interrupt mode.
Synopsis
ec_intr=
n
Specify the ACPI embedded controller interrupt mode. If n
is 0
, polling mode will be used, otherwise interrupt mode will be used. Interrupt mode is the default.
Name
memmap — Mark specific memory as ACPI data.
Synopsis
memmap=
n
[KMG
]#
start
[KMG
]
Marks a specific location and range of memory as ACPI data. n
is the size of the memory location and start
is the start location in memory of the range. Both are measured in units of kilobytes (K
), megabytes (M
), or gigabytes (G
).
Name
memmap — Mark specific memory as reserved.
Synopsis
memmap=
n
[KMG
]$
start
[KMG
]
This marks a specific location and range of memory as reserved. n
is the size of the memory location and start
is the start location in memory of the range.
Name
pnpacpi — Turn PnP ACPI off.
Synopsis
pnpacpi=off
Disable the PnP ACPI functionality.
Name
processor.max_cstate — Limit the processor to a maximum C-state.
Synopsis
processor.max_cstate=
n
Limit the processor to a maximum C-state, no matter what the ACPI tables say it can support. n
is a valid C-state value. A value of 9
overrides any DMI blacklist limit that might be present for this processor.
Name
processor.nocst — Ignore the _CST method for C-states.
Causes the ACPI core to ignore the _CST method of determining the processor C-states and use the legacy FADT method instead.
SCSI options
These options specify different parameters the SCSI subsystem can use. A number of SCSI driver-specific options are also available; please see the different driver documentation files in the kernel directory Documentation/scsi/
for details.
Name
max_luns — Maximum number of SCSI LUNS to probe.
Synopsis
max_luns=
n
Specify the maximum number of SCSI LUNS that the system should probe. n
is an integer from 1 to 4294967295.
Name
max_report_luns — Maximum number of SCSI LUNS received.
Synopsis
max_report_luns=
n
Specifu the maximum number of SCSI LUNs that the system can receive. n
is an integer from 1 to 16384.
Name
scsi_dev_flags — SCSI black/white list.
Synopsis
scsi_dev_flags=
vendor
:
model
:
flags
This option lets the user add entries to the SCSI black/white list for a specific vendor and model of device.
PCI options
These options specify different parameters the PCI subsystem can use.
Name
Synopsis
pci=
option
[,option
...]
Each option
can be one of the following:
off
-
Do not probe for the PCI bus.
bios
-
Force the use of the PCI BIOS by not accessing the hardware directly. This means that the kernel should trust the BIOS, which is not the standard thing to do (as BIOSes are known to lie more than they are known to be valid.) Use this only if your machine has a non-standard PCI host bridge and the normal boot method is not working properly.
nobios
-
Do not use the PCI BIOS, but access the hardware directly instead. This is the default method of probing for PCI devices in all kernels after 2.6.13.
conf1
-
Force use of PCI Configuration Mechanism 1 (a way to access PCI memory on i386 machines.)
conf2
-
Force use of PCI Configuration Mechanism 2 (a way to access PCI memory on i386 machines.)
nommconf
-
Disable use of the ACPI MMCONFIG table for PCI configuration.
nomsi
-
If the PCI_MSI kernel config parameter is enabled, this kernel boot option can be used to disable the use of MSI interrupts system-wide.
nosort
-
Do not sort PCI devices according to order given by the PCI BIOS. This sorting is done to get a device order compatible with much older kernel versions.
biosirq
-
Use PCI BIOS calls to get the interrupt routing table. These calls are known to be buggy on several machines and hang these machine when used, but on other machines they are the only way to get the interrupt routing table. Try this option if the kernel is unable to allocate IRQs or discover secondary PCI buses on your motherboard.
rom
-
Assign address space to expansion ROMs. Use this with caution as certain devices share address decoders between ROMs and other resources.
irqmask=0x
nnnn
-
Set a bit mask of IRQs allowed to be assigned automatically to PCI devices. You can make the kernel exclude IRQs of your ISA cards this way.
pirqaddr=0x
n
-
Specify the physical address of the PIRQ table (normally generated by the BIOS) if it is outside the F0000-100000 (hexadecimal) range.
lastbus=
n
-
Scan all buses through bus
n
. Can be useful if the kernel is unable to find your secondary buses and you want to tell it explicitly which ones they are. assign-busses
-
Always use your own PCI bus numbers, overriding whatever the firmware may have done.
usepirqmask
-
Honor the possible IRQ mask stored in the BIOS $PIR table. This is needed on some systems with broken BIOSes, notably some HP Pavilion N5400 and Omnibook XE3 notebooks. This will have no effect if ACPI IRQ routing is enabled.
noacpi
-
Do not use ACPI for IRQ routing or for PCI scanning.
routeirq
-
Do IRQ routing for all PCI devices. This is normally done in
pci_enable_device()
, so this option is a temporary workaround for broken drivers that don't call it. firmware
-
Do not re-enumerate the bus, but instead just use the configuration from the bootloader. This is currently used on IXP2000 systems where the bus has to be configured a certain way for adjunct CPUs.
PnP BIOS options
Name
noisapnp — Disable the ISA PnP subsystem.
Disable the ISA PnP subsystem, if it has been enabled in the kernel configuration.
Name
pnpbios — PnP BIOS settings.
Synopsis
pnpbios=
[on
|off
|curr
|no-curr
]
Set the main PnP BIOS settings. on
enables the PnP BIOS subsystem. off
disables the PnP BIOS subsystem. curr
tells the PnP BIOS subsystem to use the current static settings and no-curr
tells the subsystem to probe for dynamic settings if possible.
Name
pnp_reserve_irq — PnP BIOS reserved IRQs.
Synopsis
pnp_reserve_irq=
irq1
[,
irq2
...]
List of the IRQs that the PnP BIOS subsystem should not use for autoconfiguration.
Name
pnp_reserve_dma — PnP BIOS reserved DMAs.
Synopsis
pnp_reserve_dma=
dma1
[,
dma2
...]
List of the DMAs that the PnP BIOS subsystem should not use for autoconfiguration.
Name
pnp_reserve_io — PnP BIOS reserved I/O ports.
Synopsis
pnp_reserve_io=
io1
,
size1
[,
io2
,
size2
...]
I/O ports that the PnP BIOS subsystem should not use for autoconfiguration. Each port is listed by its starting location and size.
Name
pnp_reserve_mem — PnP BIOS reserved memory regions.
Synopsis
pnp_reserve_mem=
mem1
,
size1
[,
mem2
,
size2
...]
Memory regions that the PnP BIOS subsystem should not use for autoconfiguration. Each region is listed by its starting location and size.
SELinux options
These options change some fundamental aspects of SELinux startup.
Name
checkreqprot — Set the initial checkreqprot flag value.
Synopsis
checkreqprot=
[0
|1
]
Set the initial checkreqprot flag value. 0
means that the check protection will be applied by the kernel and will include any implied execute protection. 1
means that the check protection is requested by the application. The default value is set by a kernel configuration option.
The value can be changed at runtime via the /selinux/checkreqprot
file.
Name
enforcing — Set the initial enforcing status.
Synopsis
enforcing=
[0
|1
]
Specify whether SELinux enforces its rules upon boot. 0
means that SELinux will just log policy violations but wil not deny access to anything. 1
means that the enforcement will be fully enabled with denials as well as logging. The default value is 0
.
The value can be changed at runtime via the /selinux/enforce
file.
Name
selinux — Enable or disable SELinux at boot time.
Synopsis
selinux=
[0
|1
]
This option allows SELinux to be enabled (1
) or disabled (0
) to boot time. The default value is set by a kernel configuration option.
If SELinux is enabled at boot time, the /selinux/disable
file can be used later to disable it prior to the initial policy load.
Name
selinux_compat_net — Set the network control model.
Synopsis
selinux_compat_net=
[0
|1
]
Set the initial value for the SELinux network control model. 0
uses the new secmark-based packet controls, and 1
uses the legacy packet controls. 0
is the default and preferred value.
This value can be changed at runtime via the /selinux/compat_net
file.
Network options
These options control low-level aspects of the networking subsystem.
Name
netdev — Set various network device parameters.
Synopsis
netdev=
[irq
],[io
],[mem_start
],[mem_end
],[name
]
Specify network device parameters, which are specific to the driver used by the network device. Some drivers' source files document the applicable options. This option does not usually apply to PCI, USB, or other plug-and-play network devices. It is intented for use only on devices that can not discover their own resource assignments.
Name
rhash_entries — Set the number of route cache hash buckets.
Synopsis
dhash_entries=
n
This option lets you override the default number of hash buckets for the kernel's route cache. Recommended only for kernel network experts. are doing.
Name
shapers — Set the maximum number of network shapers.
Synopsis
shapers=
n
This option lets you set the maximum number of network shapers that the kernel can use.
Name
thash_entries — Set the number of TCP connection hash buckets.
Synopsis
thash_entries=
n
This option lets you override the default number of hash buckets for the kernel's TCP connection cache.
NFS options
These options control Network File System startup.
Name
lockd.nlm_grace_period — Assign a grace period to the lock manager.
Synopsis
lockd.nlm_grace_period=
n
Set the NFS lock manager grace period. n
is measured in seconds.
Name
lockd.nlm_tcpport — Assign a TCP port to the lock manager.
Synopsis
lockd.nlm_tcpport=
port
Set the TCP port that the NFS lock manager should use. port
must be a valid TCP port value.
Name
lockd.nlm_timeout — Assign a new timeout value to the lock manager.
Synopsis
lockd.nlm_timeout=
n
Override the default time value for the NFS lock manager. n
is measured in seconds. If this option is not specified the default of 10 seconds will be used.
Name
lockd.nlm_udpport — Assign a UDP port to the lock manager.
Synopsis
lockd.nlm_udpport=
port
Set the UDP port that the NFS lock manager should use. port
must be a valid UDP port value.
Name
nfsroot — Specifies the NFS root filesystem.
Synopsis
nfsroot=
[server-ip
:
]root-dir
[,nfs-options
]
Set the NFS root filesystem for diskless boxes, to enable them to boot properly over NFS. If this parameter is not set, the value /tftpboot/
client_ip_address
will be used as the root filesystem with the default NFS options.
server-ip
-
IP address of the NFS server to connect to.
root-dir
-
Directory on the NFS server to mount as root. If there is a
%s
token in this string, it will be replaced with the ASCII representation of the client's IP address. nfs-options
-
The standard NFS options, such as
ro
, separated by commas.
Name
nfs.callback_tcpport — Set the NFSv4 TCP port for the callback channel.
Synopsis
nfs.callback_tcpport=
port
Specify the TCP port that the NFSv4 callback channel should listen on. port
must be a valid TCP port value.
Name
nfs.idmap_cache_timeout — Set the maximum lifetime for idmapper cache entries.
Synopsis
nfs.idmap_cache_timeout=
n
Specify the maximum lifetime for idmapper cache entries. n
is measured in seconds.
Hardware specific options
These options specify different parameters, depending on the hardware present in the system.
Name
nousb — Disable the USB subsystem.
If this option is present, the USB subsystem will not be initialized.
Name
lp — Parallel port and its mode.
Synopsis
lp=
[0
|port
[,port
...]|reset
|auto
]
Specify the parallel port to use. The lp=port1,port2...
format associates a sequence of parallel ports to devices, starting with lp0
. An example is lp=none,parport0
, which would suppress configuration of the lp0
device and cause the lp1
device to use the first parallel port.
lp=0
disables the printer driver.
lp=reset
causes the attached printers to be reset. This option can be combined with the port specifications.
lp=auto
causes the kernel to examine the device ID from each port to determine whether a IEEE 1284-compatible printer is attached. If so, the kernel will manage that printer.
Name
parport — Specify the parallel port parameters.
Synopsis
parport=[
setting
[,setting
...]
Specify specific settings for parallel port drivers. Parallel ports are assigned in the order they are specified on the command line, starting with parport0
.
auto
forces the driver to use any IRQ/DMA settings detected (the default is to ignore detected IRQ/DMA settings because of possible conflicts). You can also specify the base address, IRQ, and DMA settings in the format 0x
nnnn
[,irq
[,dma
]]. irq
and DMA
can be numbers, auto
to use detected settings on that particular port, or nofifo
to avoid using a FIFO even if it is detected.
Name
parport_init_mode — Parallel port initialization mode.
Synopsis
parport_init_mode=
[spp
|ps2
|epp
|ecp
|ecpepp
]
Specifies the mode that the parallel port should be operated in. This is necessary on the Pegasos computer where the firmware has no options for setting up the parallel port mode. This option works for parallel port chips of type 686a and 8231.
Name
nr_uarts — Maximum number of UARTs to be registered.
Synopsis
nr_uarts=
n
Specifies the maximum number of different UARTs that can be registered in the kernel.
Timer specific options
These options override default kernel behavior to fix problems with certain chips.
Name
enable_timer_pin_1 — Enable pin 1 of the APIC timer.
Enable pin 1 of the APIC timer. This option can be useful to work around chipset bugs (on some ATI chipsets in particular.) The kernel tries to set a reasonable default, but sometimes this option is necessary to override it.
Name
disable_timer_pin_1 — Disable pin 1 of the APIC timer.
Disable pin 1 of the APIC timer. Useful for the same reasons as enable_timer_pin_1
.
Name
enable_8254_timer — Enable interrupt 0 timer routing over the 8254 chip.
Enable interrupt 0 timer routing over the 8254 chip in addition to routing over the IO-APIC. The kernel tries to set a reasonable default but sometimes this option is necessary to override it.
Name
disable_8254_timer — Disable interrupt 0 timer routing over the 8254 chip.
Disable interrupt 0 timer routing over the 8254 chip in addition to routing over the IO-APIC. The kernel tries to set a reasonable default but sometimes this option is necessary to override it.
Name
hpet — Disable HPET and use PIT instead.
Synopsis
hpet=disable
Disable the HPET timer source and tell the kernel to use the PIT timer source instead.
Name
clocksource — Set the specific clocksource.
Synopsis
clocksource=
[hpet
|pit
|tsc
|acpi_pm
|cyclone
|scx200_hrt
]
Override the default kernel clocksource and use the clocksource with the specified name instead.
Miscellaneous options
These options should always be available, and don't depend on any specific subsystem or hardware being present in the system in order to work properly.
Name
dhash_entries — Set the number of dentry hash buckets.
Synopsis
dhash_entries=
n
This option lets you override the default number of hash buckets for the kernel's dentry cache. Recommended only for kernel experts.
Name
elevator — Set the default I/O scheduler elevator.
Synopsis
elevator=
[anticipatory
|cfq
|deadline
|noop
]
Specify the I/O scheduler. See IOSCHED_NOOP for a list of the different I/O schedulers available, and what they do.
Name
hashdist — Distribute large hashes across NUMA nodes.
Synopsis
hashdist=
[0
|1
]
Large hashes that are allocated during the boot process on the IA-64 platform are, by default, distributed across the different NUMA nodes. This option lets the user turn this option on or off.
Name
combined_mode — Specify IDE driver usage.
Synopsis
combined_mode=
[combined
|ide
|libata
]
Control which driver uses the IDE ports in combined mode: the legacy IDE driver, libata, or both. Note that using the ide or libata options may affect your device naming (e.g., by changing hdc
to sdb
).
Name
max_loop — Maximum number of loopback devices.
Synopsis
max_loop=
n
Specify the maximum number of loopback filesystem devices that can be mounted at the same time. n
is an integer from 1 to 256.
Name
panic — Time to wait after panic before rebooting.
Synopsis
panic=
n
Specify the ammount of time in seconds that the kernel should wait after a panic happens before it reboots. If this is set to 0
(the default value) the kernel will not reboot after panicking; it will simply halt.
Name
pause_on_oops — Delay between kernel oopses.
Synopsis
pause_on_oops=
n
Tell the kernel to halt all CPUs after the first oops for n
seconds before continuing. This is useful if oopses keep scrolling off of the screen before you can write them down or take a picture of them.
Name
profile — Control the kernel profiling.
Synopsis
profile=
[schedule
,
][number
]
This option affects how the kernel profiler is calculated. If schedule
is specified, the schedule points are affected by the value set in number
. If schedule
is not specified, number
is the step size as a power of two for statistical time-based profiling in the kernel.
The most common use of this option is profile=2
[14] The majority of this chapter is based on the in-kernel documentation for the different kernel boot command line reference options, which were written by the kernel developers and released under the GPL.
If you enjoyed this excerpt, buy a copy of Linux Kernel in a Nutshell