Monthly Archives: November 2013

all boot time parameters of the Linux kernel

There are three ways to pass options to the kernel and thus control its behavior:

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
ttyn
Use the virtual console device n.

ttySn[,options], ttyUSB0[,options]
Use the specified serial port. The options are of the form bbbbpnf, where bbbb is the baud rate, p is parity (n, o, or e), n is number of bits, and f is flow control (r for RTS or omitted). Default is 9600n8.

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 the netconsole 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 startis 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/
Use the kernel disk name specified by as the root disk.

/dev/
Use the kernel disk name specified by and the partition specified by as the root disk.

/dev/ p
Use the kernel disk name specified by and the partition specified by as the root disk. This is the same as above, but is needed when 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 startis 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

custom grub splashimage

Grub splash image requirements:
1. xpm.gz file type
2. 640×480
3. 14 colors only

You can use GIMP or just simple convert if image simple.

convert -resize 640×480 -colors 14 orginal.xpm splash.xpm -normalize -verbose -depth 14
gzip splash.xpm

vi /boot/grub/grub.conf
splashimage(hd0,1)/grub/splash.xpm.gz

nice red splash: red_splash.xpm.gz

sexy gril splash: girl_splash.xpm.gz

Hints for Gimp:
Image -> Scale Image
Image -> Canvas Size
Layer -> Layer to Image Size

Filters -> Blur -> Selective Gaussian Blur
Image -> Flatten Image
Colors -> Maps -> Gradient Map

Colors -> Levels (auto)
Colors -> Posterize (14)
Image -> Mode -> Indexed (14)

and etc. 🙂

grub stage1 satge2

GRUB version 1 (GRUB legacy)

The master boot record (MBR) usually contains GRUB stage1, but can contain another bootloader which can chain boot GRUB stage1 from another boot sector such as a partition’s volume boot record. Given the small size of a boot sector (512 Bytes), stage1 can do little more than load the next stage of GRUB by loading a few disk sectors from a fixed location near the start of the disk (within its first 1024 cylinders).
Stage1 can load the stage2 directly, but it is normally set up to load the stage 1.5. GRUB stage 1.5 is located in the first 30 KB of hard disk immediately following the MBR and before the first partition. If this space is not available (unusual partition table, special disk drivers, GPT or LVM disk) the install of stage 1.5 will fail. The stage 1.5 image contains file system drivers. This enables the stage 1.5 to directly load stage 2 from any known location in the filesystem, for example from /boot/grub. Stage 2 will then load the default configuration file and any other modules needed.

GRUB version 2 (GRUB)

boot.img has the exact size of 446 bytes and is written to the MBR (sector 0). core.img is written to the empty sectors between the MBR and the first partition, if available (for legacy reasons the first partition starts at sector 63 instead of sector 1, but this is not mandatory). The /boot/grub directory can be located on an distinct partition, or on the root partition.
Stage 1: boot.img is stored in the master boot record (MBR), or optionally in any of the volume boot records (VBRs), and addresses the next stage by an LBA48 address (the 1024 cylinder boundary of GRUB legacy is omitted); at installation time it is configured to load the first sector of core.img.
Stage 1.5: core.img is by default written to the sectors between the MBR and the first partition, when these sectors are free and available. For legacy reasons, the first partition of a hard drive does not begin at sector 1 (counting begins with 0) but at sector 63, leaving a gap of 63 sectors of empty space. That space is not part of any partition or file system, and therefore not prone to any problems related with it. Once executed, core.img will load its configuration file and any other modules needed, particularly file system drivers; at installation time, it is generated from diskboot.img and configured to load the stage 2 by its file path.
Stage 2: files belonging to the stage 2 are all being held in the /boot/grub directory, which is a subdirectory of the /boot directory specified by the Filesystem Hierarchy Standard (FHS).
Once GRUB stage 2 has loaded, it presents a TUI-based operating system selection (kernel selection) menu, where the user can select which operating system to boot. GRUB can be configured to automatically load a specified kernel after an user-defined timeout. If files or the partition become unavailable, or if the user wishes to take direct control, stage 2 will drop the user to the GRUB command prompt, where the user can then manually specify the boot parameters.
In the operating system selection menu GRUB accepts a couple of commands:
By pressing e, it is possible to edit parameters for the selected operating system before the operating system is started. Typically, this is used for changing kernel parameters for a Linux system. The reason for doing this in GRUB (i.e. not editing the parameters in an already booted system) can be an emergency case: the system has failed to boot. Using the kernel parameters line it is possible, among other things, to specify a module to be disabled (blacklisted) for the kernel. This could be needed, if the specific kernel module is broken and thus prevents boot-up. For example, to blacklist the kernel module nvidia-current, append modprobe.blacklist=nvidia-current at the end of the kernel parameters.[9]
By pressing c, the user enters the GRUB command line. The GRUB command line is not regular Linux shell, like e.g. bash, and accepts only certain GRUB-specific commands, documented by various Linux distibution[10]
Once boot options have been selected, GRUB loads the selected kernel into memory and passes control to the kernel. Alternatively, GRUB can pass control of the boot process to another boot loader, using chain loading. This is the method used to load operating systems such as Microsoft Windows, that do not support the Multiboot Specification or are not supported directly by GRUB.
If the usage of dm-crypt is intended, the contents of /boot, i.e. /boot/grub, the Linux kernel and initramfs respectively initrd need to be on a distinct non-encrypted partition, because the logic to handle encrypted partitions resides inside of the Linux kernel.
Installation