man > bootparam(7)

bootparam(7)                      Miscellaneous Information Manual                      bootparam(7)

NAME
       bootparam - introduction to boot time parameters of the Linux kernel

DESCRIPTION
       The  Linux kernel accepts certain 'command-line options' or 'boot time parameters' at the mo‐
       ment it is started.  In general, this is used to supply the  kernel  with  information  about
       hardware  parameters  that  the  kernel  would  not  be  able  to determine on its own, or to
       avoid/override the values that the kernel would otherwise detect.

       When the kernel is booted directly by the BIOS, you have no opportunity to specify any  para‐
       meters.   So,  in  order  to take advantage of this possibility you have to use a boot loader
       that is able to pass parameters, such as GRUB.

   The argument list
       The kernel command line is parsed into a  list  of  strings  (boot  arguments)  separated  by
       spaces.  Most of the boot arguments have the form:

           name[=value_1][,value_2]...[,value_10]

       where 'name' is a unique keyword that is used to identify what part of the kernel the associ‐
       ated  values  (if any) are to be given to.  Note the limit of 10 is real, as the present code
       handles only 10 comma separated parameters per keyword.  (However, you  can  reuse  the  same
       keyword  with up to an additional 10 parameters in unusually complicated situations, assuming
       the setup function supports it.)

       Most of the sorting is coded in the kernel source file init/main.c.  First, the kernel checks
       to see if the argument is any of the  special  arguments  'root=',  'nfsroot=',  'nfsaddrs=',
       'ro', 'rw', 'debug', or 'init'.  The meaning of these special arguments is described below.

       Then  it  walks  a  list  of setup functions to see if the specified argument string (such as
       'foo') has been associated with a setup function ('foo_setup()') for a particular  device  or
       part  of  the  kernel.   If  you passed the kernel the line foo=3,4,5,6 then the kernel would
       search the bootsetups array to see if 'foo' was registered.  If it was, then  it  would  call
       the setup function associated with 'foo' (foo_setup()) and hand it the arguments 3, 4, 5, and
       6 as given on the kernel command line.

       Anything of the form 'foo=bar' that is not accepted as a setup function as described above is
       then  interpreted as an environment variable to be set.  A (useless?) example would be to use
       'TERM=vt100' as a boot argument.

       Any remaining arguments that were not picked up by the kernel and were not interpreted as en‐
       vironment variables are then passed onto PID 1, which is usually the  init(1)  program.   The
       most  common argument that is passed to the init process is the word 'single' which instructs
       it to boot the computer in single user mode, and not launch all the usual daemons.  Check the
       manual page for the version of init(1) installed on your system to see what arguments it  ac‐
       cepts.

   General non-device-specific boot arguments
       'init=...'
              This  sets  the  initial command to be executed by the kernel.  If this is not set, or
              cannot be found, the kernel will try /sbin/init, then /etc/init, then /bin/init,  then
              /bin/sh and panic if all of this fails.

       'nfsaddrs=...'
              This sets the NFS boot address to the given string.  This boot address is used in case
              of a net boot.

       'nfsroot=...'
              This  sets  the NFS root name to the given string.  If this string does not begin with
              '/' or ',' or a digit, then it is prefixed by '/tftpboot/'.  This root name is used in
              case of a net boot.

       'root=...'
              This argument tells the kernel what device is to be used as the root filesystem  while
              booting.   The  default  of this setting is determined at compile time, and usually is
              the value of the root device of the system that the kernel was built on.  To  override
              this  value,  and  select  the  second  floppy drive as the root device, one would use
              'root=/dev/fd1'.

              The root device can be specified symbolically or numerically.  A  symbolic  specifica‐
              tion  has  the  form  /dev/XXYN,  where  XX designates the device type (e.g., 'hd' for
              ST-506 compatible hard disk, with Y in 'a'–'d'; 'sd' for SCSI compatible disk, with  Y
              in  'a'–'e'), Y the driver letter or number, and N the number (in decimal) of the par‐
              tition on this device.

              Note that this has nothing to do  with  the  designation  of  these  devices  on  your
              filesystem.  The '/dev/' part is purely conventional.

              The  more  awkward  and less portable numeric specification of the above possible root
              devices in major/minor format is also accepted.  (For example, /dev/sda3 is  major  8,
              minor 3, so you could use 'root=0x803' as an alternative.)

       'rootdelay='
              This  parameter  sets  the  delay (in seconds) to pause before attempting to mount the
              root filesystem.

       'rootflags=...'
              This parameter sets the  mount  option  string  for  the  root  filesystem  (see  also
              fstab(5)).

       'rootfstype=...'
              The  'rootfstype'  option tells the kernel to mount the root filesystem as if it where
              of the type specified.  This can be useful (for example) to mount an  ext3  filesystem
              as ext2 and then remove the journal in the root filesystem, in fact reverting its for‐
              mat from ext3 to ext2 without the need to boot the box from alternate media.

       'ro' and 'rw'
              The  'ro'  option tells the kernel to mount the root filesystem as 'read-only' so that
              filesystem consistency check programs (fsck) can do their work on a quiescent filesys‐
              tem.  No processes can write to files on the filesystem in question until it  is  're‐
              mounted' as read/write capable, for example, by 'mount -w -n -o remount /'.  (See also
              mount(8).)

              The 'rw' option tells the kernel to mount the root filesystem read/write.  This is the
              default.

       'resume=...'
              This  tells  the kernel the location of the suspend-to-disk data that you want the ma‐
              chine to resume from after hibernation.  Usually, it is the same as your  swap  parti‐
              tion or file.  Example:

                  resume=/dev/hda2

       'reserve=...'
              This is used to protect I/O port regions from probes.  The form of the command is:

                  reserve=iobase,extent[,iobase,extent]...

              In  some  machines it may be necessary to prevent device drivers from checking for de‐
              vices (auto-probing) in a specific region.  This may be because of hardware  that  re‐
              acts  badly to the probing, or hardware that would be mistakenly identified, or merely
              hardware you don't want the kernel to initialize.

              The reserve boot-time argument specifies an I/O port region that shouldn't be  probed.
              A device driver will not probe a reserved region, unless another boot argument explic‐
              itly specifies that it do so.

              For example, the boot line

                  reserve=0x300,32  blah=0x300

              keeps all device drivers except the driver for 'blah' from probing 0x300-0x31f.

       'panic=N'
              By  default,  the  kernel  will not reboot after a panic, but this option will cause a
              kernel reboot after N seconds (if N is greater than zero).   This  panic  timeout  can
              also be set by

                  echo N > /proc/sys/kernel/panic

       'reboot=[warm|cold][,[bios|hard]]'
              Since  Linux  2.0.22,  a reboot is by default a cold reboot.  One asks for the old de‐
              fault with 'reboot=warm'.  (A cold reboot may be required to reset  certain  hardware,
              but might destroy not yet written data in a disk cache.  A warm reboot may be faster.)
              By  default,  a  reboot  is hard, by asking the keyboard controller to pulse the reset
              line low, but there is at least one type of motherboard where that doesn't work.   The
              option 'reboot=bios' will instead jump through the BIOS.

       'nosmp' and 'maxcpus=N'
              (Only  when __SMP__ is defined.)  A command-line option of 'nosmp' or 'maxcpus=0' will
              disable SMP activation entirely; an option 'maxcpus=N' limits the  maximum  number  of
              CPUs activated in SMP mode to N.

   Boot arguments for use by kernel developers
       'debug'
              Kernel  messages  are  handed off to a daemon (e.g., klogd(8) or similar) so that they
              may be logged to disk.  Messages with  a  priority  above  console_loglevel  are  also
              printed on the console.  (For a discussion of log levels, see syslog(2).)  By default,
              console_loglevel  is  set to log messages at levels higher than KERN_DEBUG.  This boot
              argument will cause the kernel to also print messages logged at level KERN_DEBUG.  The
              console loglevel can also be set on a booted system  via  the  /proc/sys/kernel/printk
              file (described in syslog(2)), the syslog(2) SYSLOG_ACTION_CONSOLE_LEVEL operation, or
              dmesg(8).

       'profile=N'
              It  is possible to enable a kernel profiling function, if one wishes to find out where
              the kernel is spending its CPU cycles.  Profiling is enabled by setting  the  variable
              prof_shift  to  a  nonzero value.  This is done either by specifying CONFIG_PROFILE at
              compile time, or by giving the 'profile=' option.  Now the value that prof_shift  gets
              will be N, when given, or CONFIG_PROFILE_SHIFT, when that is given, or 2, the default.
              The  significance  of this variable is that it gives the granularity of the profiling:
              each clock tick, if the system was executing kernel code, a counter is incremented:

                  profile[address >> prof_shift]++;

              The raw profiling information can be read from /proc/profile.  Probably you'll want to
              use a tool such as readprofile.c to digest it.  Writing to  /proc/profile  will  clear
              the counters.

   Boot arguments for ramdisk use
       (Only  if  the  kernel was compiled with CONFIG_BLK_DEV_RAM.)  In general it is a bad idea to
       use a ramdisk under Linux—the system will use available memory more efficiently itself.   But
       while booting, it is often useful to load the floppy contents into a ramdisk.  One might also
       have  a system in which first some modules (for filesystem or hardware) must be loaded before
       the main disk can be accessed.

              In Linux 1.3.48, ramdisk handling was changed drastically.  Earlier,  the  memory  was
              allocated  statically,  and there was a 'ramdisk=N' parameter to tell its size.  (This
              could also be set in the kernel image at compile time.)  These days ram disks use  the
              buffer  cache,  and grow dynamically.  For a lot of information on the current ramdisk
              setup, see  the  kernel  source  file  Documentation/blockdev/ramdisk.txt  (Documenta‐
              tion/ramdisk.txt in older kernels).

              There are four parameters, two boolean and two integral.

       'load_ramdisk=N'
              If N=1, do load a ramdisk.  If N=0, do not load a ramdisk.  (This is the default.)

       'prompt_ramdisk=N'
              If N=1, do prompt for insertion of the floppy.  (This is the default.)  If N=0, do not
              prompt.  (Thus, this parameter is never needed.)

       'ramdisk_size=N' or (obsolete) 'ramdisk=N'
              Set the maximal size of the ramdisk(s) to N kB.  The default is 4096 (4 MB).

       'ramdisk_start=N'
              Sets  the starting block number (the offset on the floppy where the ramdisk starts) to
              N.  This is needed in case the ramdisk follows a kernel image.

       'noinitrd'
              (Only if the kernel was compiled with CONFIG_BLK_DEV_RAM  and  CONFIG_BLK_DEV_INITRD.)
              These  days  it is possible to compile the kernel to use initrd.  When this feature is
              enabled, the boot process will load the kernel and an initial ramdisk; then the kernel
              converts initrd into a "normal" ramdisk, which is mounted read-write as  root  device;
              then  /linuxrc  is  executed; afterward the "real" root filesystem is mounted, and the
              initrd filesystem is moved over to /initrd; finally the usual boot sequence (e.g., in‐
              vocation of /sbin/init) is performed.

              For a detailed description of the initrd feature, see the kernel source file  Documen‐
              tation/admin-guide/initrd.rst (or Documentation/initrd.txt before Linux 4.10).

              The  'noinitrd'  option  tells  the kernel that although it was compiled for operation
              with initrd, it should not go through the above steps, but leave the initrd data under
              /dev/initrd.  (This device can be used only once: the data is freed  as  soon  as  the
              last process that used it has closed /dev/initrd.)

   Boot arguments for SCSI devices
       General notation for this section:

       iobase -- the first I/O port that the SCSI host occupies.  These are specified in hexadecimal
       notation, and usually lie in the range from 0x200 to 0x3ff.

       irq  --  the hardware interrupt that the card is configured to use.  Valid values will be de‐
       pendent on the card in question, but will usually be 5, 7, 9, 10, 11, 12, and 15.  The  other
       values  are  usually used for common peripherals like IDE hard disks, floppies, serial ports,
       and so on.

       scsi-id -- the ID that the host adapter uses to identify itself on the SCSI bus.   Only  some
       host  adapters  allow  you to change this value, as most have it permanently specified inter‐
       nally.  The usual default value is 7, but the Seagate and Future Domain TMC-950 boards use 6.

       parity -- whether the SCSI host adapter expects the attached devices to supply a parity value
       with all information exchanges.  Specifying a one indicates parity checking is enabled, and a
       zero disables parity checking.  Again, not all adapters will support selection of parity  be‐
       havior as a boot argument.

       'max_scsi_luns=...'
              A  SCSI  device  can  have a number of 'subdevices' contained within itself.  The most
              common example is one of the new SCSI CD-ROMs that handle more  than  one  disk  at  a
              time.   Each  CD  is addressed as a 'Logical Unit Number' (LUN) of that particular de‐
              vice.  But most devices, such as hard disks, tape drives, and such are  only  one  de‐
              vice, and will be assigned to LUN zero.

              Some  poorly  designed  SCSI  devices cannot handle being probed for LUNs not equal to
              zero.  Therefore, if the compile-time flag CONFIG_SCSI_MULTI_LUN  is  not  set,  newer
              kernels will by default probe only LUN zero.

              To  specify  the number of probed LUNs at boot, one enters 'max_scsi_luns=n' as a boot
              arg, where n is a number between one and eight.  To avoid problems as described above,
              one would use n=1 to avoid upsetting such broken devices.

       SCSI tape configuration
              Some boot time configuration of the SCSI tape driver can be achieved by using the fol‐
              lowing:

                  st=buf_size[,write_threshold[,max_bufs]]

              The first two numbers are specified in units of kB.  The default  buf_size  is  32k B,
              and   the  maximum  size  that  can  be  specified  is  a  ridiculous  16384 kB.   The
              write_threshold is the value at which the buffer is committed to tape, with a  default
              value  of  30 kB.   The maximum number of buffers varies with the number of drives de‐
              tected, and has a default of two.  An example usage would be:

                  st=32,30,2

              Full  details  can  be  found  in  the   file   Documentation/scsi/st.txt   (or   dri‐
              vers/scsi/README.st for older kernels) in the Linux kernel source.

   Hard disks
       IDE Disk/CD-ROM Driver Parameters
              The IDE driver accepts a number of parameters, which range from disk geometry specifi‐
              cations, to support for broken controller chips.  Drive-specific options are specified
              by using 'hdX=' with X in 'a'–'h'.

              Non-drive-specific  options  are  specified  with the prefix 'hd='.  Note that using a
              drive-specific prefix for a non-drive-specific option will still work, and the  option
              will just be applied as expected.

              Also  note  that  'hd='  can be used to refer to the next unspecified drive in the (a,
              ..., h) sequence.  For the following discussions, the 'hd=' option will be  cited  for
              brevity.   See  the  file Documentation/ide/ide.txt (or Documentation/ide.txt in older
              kernels, or drivers/block/README.ide in ancient kernels) in the  Linux  kernel  source
              for more details.

       The 'hd=cyls,heads,sects[,wpcom[,irq]]' options
              These  options  are used to specify the physical geometry of the disk.  Only the first
              three values are required.  The cylinder/head/sectors values will  be  those  used  by
              fdisk.  The write precompensation value is ignored for IDE disks.  The IRQ value spec‐
              ified will be the IRQ used for the interface that the drive resides on, and is not re‐
              ally a drive-specific parameter.

       The 'hd=serialize' option
              The dual IDE interface CMD-640 chip is broken as designed such that when drives on the
              secondary  interface  are used at the same time as drives on the primary interface, it
              will corrupt your data.  Using this option tells the driver to make sure that both in‐
              terfaces are never used at the same time.

       The 'hd=noprobe' option
              Do not probe for this drive.  For example,

                  hdb=noprobe hdb=1166,7,17

              would disable the probe, but still specify the drive geometry so that it would be reg‐
              istered as a valid block device, and hence usable.

       The 'hd=nowerr' option
              Some drives apparently have the WRERR_STAT bit stuck on permanently.  This  enables  a
              work-around for these broken devices.

       The 'hd=cdrom' option
              This  tells  the IDE driver that there is an ATAPI compatible CD-ROM attached in place
              of a normal IDE hard disk.  In most cases the CD-ROM is identified automatically,  but
              if it isn't then this may help.

       Standard ST-506 Disk Driver Options ('hd=')
              The  standard  disk  driver can accept geometry arguments for the disks similar to the
              IDE driver.  Note however that it expects only three values (C/H/S); any more  or  any
              less  and  it  will  silently ignore you.  Also, it accepts only 'hd=' as an argument,
              that is, 'hda=' and so on are not valid here.  The format is as follows:

                  hd=cyls,heads,sects

              If there are two disks installed, the above is repeated with the  geometry  parameters
              of the second disk.

   Ethernet devices
       Different  drivers  make  use  of different parameters, but they all at least share having an
       IRQ, an I/O port base value, and a name.  In its most generic form, it looks  something  like
       this:

           ether=irq,iobase[,param_1[,...param_8]],name

       The  first nonnumeric argument is taken as the name.  The param_n values (if applicable) usu‐
       ally have different meanings for each different card/driver.  Typical param_n values are used
       to specify things like shared memory address, interface selection, DMA channel and the like.

       The most common use of this parameter is to force probing for a second ethercard, as the  de‐
       fault is to probe only for one.  This can be accomplished with a simple:

           ether=0,0,eth1

       Note that the values of zero for the IRQ and I/O base in the above example tell the driver(s)
       to autoprobe.

       The  Ethernet-HowTo  has extensive documentation on using multiple cards and on the card/dri‐
       ver-specific implementation of the param_n values where used.  Interested readers should  re‐
       fer to the section in that document on their particular card.

   The floppy disk driver
       There  are  many  floppy  driver  options,  and  they  are all listed in Documentation/block‐
       dev/floppy.txt (or Documentation/floppy.txt in older kernels, or drivers/block/README.fd  for
       ancient kernels) in the Linux kernel source.  See that file for the details.

   The sound driver
       The  sound driver can also accept boot arguments to override the compiled-in values.  This is
       not recommended, as it is rather complex.  It is described in the Linux  kernel  source  file
       Documentation/sound/oss/README.OSS (drivers/sound/Readme.linux in older kernel versions).  It
       accepts a boot argument of the form:

           sound=device1[,device2[,device3...[,device10]]]

       where  each  deviceN value is of the following format 0xTaaaId and the bytes are used as fol‐
       lows:

       T - device type: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401

       aaa - I/O address in hex.

       I - interrupt line in hex (i.e., 10=a, 11=b, ...)

       d - DMA channel.

       As you can see, it gets pretty messy, and you are better off to compile in your own  personal
       values  as recommended.  Using a boot argument of 'sound=0' will disable the sound driver en‐
       tirely.

   The line printer driver
       'lp='
              Syntax:

                  lp=0
                  lp=auto
                  lp=reset
                  lp=port[,port...]

              You can tell the printer driver what ports to use and what ports not to use.  The lat‐
              ter comes in handy if you don't want the printer driver to claim all available  paral‐
              lel ports, so that other drivers (e.g., PLIP, PPA) can use them instead.

              The  format  of  the  argument  is multiple port names.  For example, lp=none,parport0
              would use the first parallel port for lp1, and disable lp0.  To  disable  the  printer
              driver entirely, one can use lp=0.

SEE ALSO
       klogd(8), mount(8)

       For up-to-date information, see the kernel source file Documentation/admin-guide/kernel-para‐
       meters.txt.

Linux man-pages 6.7                          2023-10-31                                 bootparam(7)
bootparam(7) □✕
NAME DESCRIPTION
The argument list General non-device-specific boot arguments 'init=...' 'nfsaddrs=...' 'nfsroot=...' 'root=...' 'rootdelay=' 'rootflags=...' 'rootfstype=...' 'resume=...' 'reserve=...' 'panic=N' 'reboot=[warm|cold][,[bios|hard]]' Boot arguments for use by kernel developers 'debug' 'profile=N' Boot arguments for ramdisk use 'load_ramdisk=N' 'prompt_ramdisk=N' 'ramdisk_start=N' 'noinitrd' Boot arguments for SCSI devices 'max_scsi_luns=...' SCSI tape configuration Hard disks IDE Disk/CD-ROM Driver Parameters The 'hd=cyls,heads,sects[,wpcom[,irq]]' options The 'hd=serialize' option The 'hd=noprobe' option The 'hd=nowerr' option The 'hd=cdrom' option Standard ST-506 Disk Driver Options ('hd=') Ethernet devices The floppy disk driver The sound driver The line printer driver 'lp='
SEE ALSO

Generated by phpman v4.11.2-35-gf98a251 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-10-07 15:39 @216.73.217.162
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 Transitional!Valid CSS!

^_top_^