1bootparam(7)           Miscellaneous Information Manual           bootparam(7)
2
3
4

NAME

6       bootparam - introduction to boot time parameters of the Linux kernel
7

DESCRIPTION

9       The  Linux  kernel accepts certain 'command-line options' or 'boot time
10       parameters' at the moment it is started.  In general, this is  used  to
11       supply  the  kernel with information about hardware parameters that the
12       kernel would not be able to determine on its own, or to  avoid/override
13       the values that the kernel would otherwise detect.
14
15       When the kernel is booted directly by the BIOS, you have no opportunity
16       to specify any parameters.  So, in order to take advantage of this pos‐
17       sibility you have to use a boot loader that is able to pass parameters,
18       such as GRUB.
19
20   The argument list
21       The kernel command line is parsed into a list of  strings  (boot  argu‐
22       ments) separated by spaces.  Most of the boot arguments have the form:
23
24           name[=value_1][,value_2]...[,value_10]
25
26       where  'name' is a unique keyword that is used to identify what part of
27       the kernel the associated values (if any) are to be given to.  Note the
28       limit  of  10  is real, as the present code handles only 10 comma sepa‐
29       rated parameters per keyword.  (However, you can reuse the same keyword
30       with  up to an additional 10 parameters in unusually complicated situa‐
31       tions, assuming the setup function supports it.)
32
33       Most of the sorting is coded in the  kernel  source  file  init/main.c.
34       First,  the  kernel checks to see if the argument is any of the special
35       arguments 'root=', 'nfsroot=', 'nfsaddrs=',  'ro',  'rw',  'debug',  or
36       'init'.  The meaning of these special arguments is described below.
37
38       Then  it  walks a list of setup functions to see if the specified argu‐
39       ment string (such as 'foo') has been associated with a  setup  function
40       ('foo_setup()')  for a particular device or part of the kernel.  If you
41       passed the kernel the line foo=3,4,5,6 then the kernel would search the
42       bootsetups  array  to  see if 'foo' was registered.  If it was, then it
43       would call the setup function associated with 'foo'  (foo_setup())  and
44       hand  it  the  arguments  3, 4, 5, and 6 as given on the kernel command
45       line.
46
47       Anything of the form 'foo=bar' that is not accepted as a setup function
48       as described above is then interpreted as an environment variable to be
49       set.  A (useless?) example would be to use 'TERM=vt100' as a boot argu‐
50       ment.
51
52       Any  remaining arguments that were not picked up by the kernel and were
53       not interpreted as environment variables are then passed  onto  PID  1,
54       which is usually the init(1) program.  The most common argument that is
55       passed to the init process is the word 'single' which instructs  it  to
56       boot  the  computer  in  single user mode, and not launch all the usual
57       daemons.  Check the manual page for the version of init(1) installed on
58       your system to see what arguments it accepts.
59
60   General non-device-specific boot arguments
61       'init=...'
62              This  sets the initial command to be executed by the kernel.  If
63              this is not set,  or  cannot  be  found,  the  kernel  will  try
64              /sbin/init,  then  /etc/init,  then  /bin/init, then /bin/sh and
65              panic if all of this fails.
66
67       'nfsaddrs=...'
68              This sets the NFS boot address to the given string.   This  boot
69              address is used in case of a net boot.
70
71       'nfsroot=...'
72              This sets the NFS root name to the given string.  If this string
73              does not begin with '/' or ',' or a digit, then it  is  prefixed
74              by '/tftpboot/'.  This root name is used in case of a net boot.
75
76       'root=...'
77              This  argument tells the kernel what device is to be used as the
78              root filesystem while booting.  The default of this  setting  is
79              determined at compile time, and usually is the value of the root
80              device of the system that the kernel was built on.  To  override
81              this  value,  and select the second floppy drive as the root de‐
82              vice, one would use 'root=/dev/fd1'.
83
84              The root device can be specified symbolically or numerically.  A
85              symbolic  specification  has the form /dev/XXYN, where XX desig‐
86              nates the device type (e.g., 'hd'  for  ST-506  compatible  hard
87              disk,  with  Y in 'a'–'d'; 'sd' for SCSI compatible disk, with Y
88              in 'a'–'e'), Y the driver letter or number, and N the number (in
89              decimal) of the partition on this device.
90
91              Note  that  this has nothing to do with the designation of these
92              devices on your filesystem.  The '/dev/' part is purely  conven‐
93              tional.
94
95              The  more awkward and less portable numeric specification of the
96              above possible root devices in major/minor format  is  also  ac‐
97              cepted.   (For  example,  /dev/sda3  is major 8, minor 3, so you
98              could use 'root=0x803' as an alternative.)
99
100       'rootdelay='
101              This parameter sets the delay (in seconds) to pause  before  at‐
102              tempting to mount the root filesystem.
103
104       'rootflags=...'
105              This  parameter  sets  the  mount  option  string  for  the root
106              filesystem (see also fstab(5)).
107
108       'rootfstype=...'
109              The 'rootfstype' option tells  the  kernel  to  mount  the  root
110              filesystem  as  if  it where of the type specified.  This can be
111              useful (for example) to mount an ext3  filesystem  as  ext2  and
112              then  remove the journal in the root filesystem, in fact revert‐
113              ing its format from ext3 to ext2 without the need  to  boot  the
114              box from alternate media.
115
116       'ro' and 'rw'
117              The 'ro' option tells the kernel to mount the root filesystem as
118              'read-only' so that filesystem consistency check programs (fsck)
119              can  do  their work on a quiescent filesystem.  No processes can
120              write to files on the filesystem in question until  it  is  're‐
121              mounted'  as read/write capable, for example, by 'mount -w -n -o
122              remount /'.  (See also mount(8).)
123
124              The 'rw' option tells the kernel to mount  the  root  filesystem
125              read/write.  This is the default.
126
127       'resume=...'
128              This  tells  the kernel the location of the suspend-to-disk data
129              that you want the machine  to  resume  from  after  hibernation.
130              Usually,  it  is the same as your swap partition or file.  Exam‐
131              ple:
132
133                  resume=/dev/hda2
134
135       'reserve=...'
136              This is used to protect I/O port regions from probes.  The  form
137              of the command is:
138
139                  reserve=iobase,extent[,iobase,extent]...
140
141              In  some  machines it may be necessary to prevent device drivers
142              from checking for devices (auto-probing) in a  specific  region.
143              This  may  be because of hardware that reacts badly to the prob‐
144              ing, or hardware that would be mistakenly identified, or  merely
145              hardware you don't want the kernel to initialize.
146
147              The reserve boot-time argument specifies an I/O port region that
148              shouldn't be probed.  A device driver will not probe a  reserved
149              region,  unless  another boot argument explicitly specifies that
150              it do so.
151
152              For example, the boot line
153
154                  reserve=0x300,32  blah=0x300
155
156              keeps all device drivers except the driver for 'blah' from prob‐
157              ing 0x300-0x31f.
158
159       'panic=N'
160              By  default,  the kernel will not reboot after a panic, but this
161              option will cause a kernel reboot  after  N  seconds  (if  N  is
162              greater than zero).  This panic timeout can also be set by
163
164                  echo N > /proc/sys/kernel/panic
165
166       'reboot=[warm|cold][,[bios|hard]]'
167              Since  Linux  2.0.22, a reboot is by default a cold reboot.  One
168              asks for the old default with 'reboot=warm'.  (A cold reboot may
169              be required to reset certain hardware, but might destroy not yet
170              written data in a disk cache.  A warm reboot may be faster.)  By
171              default,  a reboot is hard, by asking the keyboard controller to
172              pulse the reset line low, but there is  at  least  one  type  of
173              motherboard  where  that doesn't work.  The option 'reboot=bios'
174              will instead jump through the BIOS.
175
176       'nosmp' and 'maxcpus=N'
177              (Only when  __SMP__  is  defined.)   A  command-line  option  of
178              'nosmp'  or 'maxcpus=0' will disable SMP activation entirely; an
179              option 'maxcpus=N' limits the maximum number of  CPUs  activated
180              in SMP mode to N.
181
182   Boot arguments for use by kernel developers
183       'debug'
184              Kernel  messages  are  handed off to a daemon (e.g., klogd(8) or
185              similar) so that they may be logged to disk.   Messages  with  a
186              priority above console_loglevel are also printed on the console.
187              (For a discussion of log levels, see  syslog(2).)   By  default,
188              console_loglevel  is  set  to log messages at levels higher than
189              KERN_DEBUG.  This boot argument will cause the  kernel  to  also
190              print messages logged at level KERN_DEBUG.  The console loglevel
191              can also be set  on  a  booted  system  via  the  /proc/sys/ker‐
192              nel/printk  file  (described  in  syslog(2)), the syslog(2) SYS‐
193              LOG_ACTION_CONSOLE_LEVEL operation, or dmesg(8).
194
195       'profile=N'
196              It is possible to enable a kernel  profiling  function,  if  one
197              wishes  to find out where the kernel is spending its CPU cycles.
198              Profiling is enabled by setting the  variable  prof_shift  to  a
199              nonzero value.  This is done either by specifying CONFIG_PROFILE
200              at compile time, or by giving the 'profile='  option.   Now  the
201              value that prof_shift gets will be N, when given, or CONFIG_PRO‐
202              FILE_SHIFT, when that is given, or 2, the default.  The signifi‐
203              cance  of  this variable is that it gives the granularity of the
204              profiling: each clock tick, if the system was  executing  kernel
205              code, a counter is incremented:
206
207                  profile[address >> prof_shift]++;
208
209              The  raw  profiling  information can be read from /proc/profile.
210              Probably you'll want to use a tool such as readprofile.c to  di‐
211              gest it.  Writing to /proc/profile will clear the counters.
212
213   Boot arguments for ramdisk use
214       (Only  if the kernel was compiled with CONFIG_BLK_DEV_RAM.)  In general
215       it is a bad idea to use a  ramdisk  under  Linux—the  system  will  use
216       available memory more efficiently itself.  But while booting, it is of‐
217       ten useful to load the floppy contents into a ramdisk.  One might  also
218       have  a system in which first some modules (for filesystem or hardware)
219       must be loaded before the main disk can be accessed.
220
221              In Linux 1.3.48, ramdisk handling was changed drastically.  Ear‐
222              lier,  the  memory  was  allocated  statically,  and there was a
223              'ramdisk=N' parameter to tell its size.  (This could also be set
224              in  the kernel image at compile time.)  These days ram disks use
225              the buffer cache, and grow dynamically.  For a lot  of  informa‐
226              tion  on  the  current ramdisk setup, see the kernel source file
227              Documentation/blockdev/ramdisk.txt (Documentation/ramdisk.txt in
228              older kernels).
229
230              There are four parameters, two boolean and two integral.
231
232       'load_ramdisk=N'
233              If  N=1,  do  load  a  ramdisk.   If N=0, do not load a ramdisk.
234              (This is the default.)
235
236       'prompt_ramdisk=N'
237              If N=1, do prompt for insertion of the floppy.  (This is the de‐
238              fault.)   If N=0, do not prompt.  (Thus, this parameter is never
239              needed.)
240
241       'ramdisk_size=N' or (obsolete) 'ramdisk=N'
242              Set the maximal size of the ramdisk(s) to N kB.  The default  is
243              4096 (4 MB).
244
245       'ramdisk_start=N'
246              Sets  the  starting block number (the offset on the floppy where
247              the ramdisk starts) to N.  This is needed in  case  the  ramdisk
248              follows a kernel image.
249
250       'noinitrd'
251              (Only  if  the  kernel  was compiled with CONFIG_BLK_DEV_RAM and
252              CONFIG_BLK_DEV_INITRD.)  These days it is  possible  to  compile
253              the  kernel  to  use  initrd.  When this feature is enabled, the
254              boot process will load the kernel and an initial  ramdisk;  then
255              the  kernel  converts  initrd  into a "normal" ramdisk, which is
256              mounted read-write as root device; then  /linuxrc  is  executed;
257              afterward  the "real" root filesystem is mounted, and the initrd
258              filesystem is moved over to /initrd; finally the usual boot  se‐
259              quence (e.g., invocation of /sbin/init) is performed.
260
261              For a detailed description of the initrd feature, see the kernel
262              source file Documentation/admin-guide/initrd.rst (or  Documenta‐
263              tion/initrd.txt before Linux 4.10).
264
265              The 'noinitrd' option tells the kernel that although it was com‐
266              piled for operation with initrd, it should not  go  through  the
267              above steps, but leave the initrd data under /dev/initrd.  (This
268              device can be used only once: the data is freed as soon  as  the
269              last process that used it has closed /dev/initrd.)
270
271   Boot arguments for SCSI devices
272       General notation for this section:
273
274       iobase  --  the  first I/O port that the SCSI host occupies.  These are
275       specified in hexadecimal notation, and usually lie in  the  range  from
276       0x200 to 0x3ff.
277
278       irq  --  the  hardware  interrupt  that  the card is configured to use.
279       Valid values will be dependent on the card in question, but  will  usu‐
280       ally be 5, 7, 9, 10, 11, 12, and 15.  The other values are usually used
281       for common peripherals like IDE hard disks, floppies, serial ports, and
282       so on.
283
284       scsi-id  -- the ID that the host adapter uses to identify itself on the
285       SCSI bus.  Only some host adapters allow you to change this  value,  as
286       most have it permanently specified internally.  The usual default value
287       is 7, but the Seagate and Future Domain TMC-950 boards use 6.
288
289       parity -- whether the SCSI host adapter expects the attached devices to
290       supply a parity value with all information exchanges.  Specifying a one
291       indicates parity checking is enabled, and a zero disables parity check‐
292       ing.  Again, not all adapters will support selection of parity behavior
293       as a boot argument.
294
295       'max_scsi_luns=...'
296              A SCSI device can have a number of 'subdevices' contained within
297              itself.   The most common example is one of the new SCSI CD-ROMs
298              that handle more than one disk at a time.  Each CD is  addressed
299              as a 'Logical Unit Number' (LUN) of that particular device.  But
300              most devices, such as hard disks, tape drives, and such are only
301              one device, and will be assigned to LUN zero.
302
303              Some poorly designed SCSI devices cannot handle being probed for
304              LUNs not equal to zero.  Therefore,  if  the  compile-time  flag
305              CONFIG_SCSI_MULTI_LUN  is not set, newer kernels will by default
306              probe only LUN zero.
307
308              To specify the  number  of  probed  LUNs  at  boot,  one  enters
309              'max_scsi_luns=n' as a boot arg, where n is a number between one
310              and eight.  To avoid problems as described above, one would  use
311              n=1 to avoid upsetting such broken devices.
312
313       SCSI tape configuration
314              Some  boot  time  configuration  of  the SCSI tape driver can be
315              achieved by using the following:
316
317                  st=buf_size[,write_threshold[,max_bufs]]
318
319              The first two numbers are specified in units of kB.  The default
320              buf_size is 32k B, and the maximum size that can be specified is
321              a ridiculous 16384 kB.  The  write_threshold  is  the  value  at
322              which  the  buffer is committed to tape, with a default value of
323              30 kB.  The maximum number of buffers varies with the number  of
324              drives  detected,  and  has  a default of two.  An example usage
325              would be:
326
327                  st=32,30,2
328
329              Full details can be found in the file  Documentation/scsi/st.txt
330              (or  drivers/scsi/README.st for older kernels) in the Linux ker‐
331              nel source.
332
333   Hard disks
334       IDE Disk/CD-ROM Driver Parameters
335              The IDE driver accepts a number of parameters, which range  from
336              disk  geometry  specifications, to support for broken controller
337              chips.  Drive-specific options are  specified  by  using  'hdX='
338              with X in 'a'–'h'.
339
340              Non-drive-specific  options are specified with the prefix 'hd='.
341              Note that using a drive-specific prefix for a non-drive-specific
342              option  will  still work, and the option will just be applied as
343              expected.
344
345              Also note that 'hd=' can be used to refer to the  next  unspeci‐
346              fied  drive in the (a, ..., h) sequence.  For the following dis‐
347              cussions, the 'hd=' option will be cited for brevity.   See  the
348              file   Documentation/ide/ide.txt  (or  Documentation/ide.txt  in
349              older kernels, or drivers/block/README.ide in  ancient  kernels)
350              in the Linux kernel source for more details.
351
352       The 'hd=cyls,heads,sects[,wpcom[,irq]]' options
353              These  options  are used to specify the physical geometry of the
354              disk.  Only the first three values  are  required.   The  cylin‐
355              der/head/sectors  values will be those used by fdisk.  The write
356              precompensation value is ignored for IDE disks.  The  IRQ  value
357              specified  will be the IRQ used for the interface that the drive
358              resides on, and is not really a drive-specific parameter.
359
360       The 'hd=serialize' option
361              The dual IDE interface CMD-640 chip is broken as  designed  such
362              that when drives on the secondary interface are used at the same
363              time as drives on the primary interface, it  will  corrupt  your
364              data.  Using this option tells the driver to make sure that both
365              interfaces are never used at the same time.
366
367       The 'hd=noprobe' option
368              Do not probe for this drive.  For example,
369
370                  hdb=noprobe hdb=1166,7,17
371
372              would disable the probe, but still specify the drive geometry so
373              that  it  would be registered as a valid block device, and hence
374              usable.
375
376       The 'hd=nowerr' option
377              Some drives apparently have the WRERR_STAT bit stuck  on  perma‐
378              nently.  This enables a work-around for these broken devices.
379
380       The 'hd=cdrom' option
381              This  tells the IDE driver that there is an ATAPI compatible CD-
382              ROM attached in place of a normal IDE hard disk.  In most  cases
383              the  CD-ROM  is  identified  automatically, but if it isn't then
384              this may help.
385
386       Standard ST-506 Disk Driver Options ('hd=')
387              The standard disk driver can accept geometry arguments  for  the
388              disks  similar  to the IDE driver.  Note however that it expects
389              only three values (C/H/S); any more or  any  less  and  it  will
390              silently  ignore  you.   Also, it accepts only 'hd=' as an argu‐
391              ment, that is, 'hda=' and so on are not valid here.  The  format
392              is as follows:
393
394                  hd=cyls,heads,sects
395
396              If there are two disks installed, the above is repeated with the
397              geometry parameters of the second disk.
398
399   Ethernet devices
400       Different drivers make use of different parameters,  but  they  all  at
401       least  share having an IRQ, an I/O port base value, and a name.  In its
402       most generic form, it looks something like this:
403
404           ether=irq,iobase[,param_1[,...param_8]],name
405
406       The first nonnumeric argument is taken as the name.  The param_n values
407       (if  applicable)  usually  have  different  meanings for each different
408       card/driver.  Typical param_n values are used to  specify  things  like
409       shared memory address, interface selection, DMA channel and the like.
410
411       The  most common use of this parameter is to force probing for a second
412       ethercard, as the default is to probe only for one.  This can be accom‐
413       plished with a simple:
414
415           ether=0,0,eth1
416
417       Note  that the values of zero for the IRQ and I/O base in the above ex‐
418       ample tell the driver(s) to autoprobe.
419
420       The Ethernet-HowTo has extensive documentation on using multiple  cards
421       and  on  the  card/driver-specific implementation of the param_n values
422       where used.  Interested readers should refer to  the  section  in  that
423       document on their particular card.
424
425   The floppy disk driver
426       There  are many floppy driver options, and they are all listed in Docu‐
427       mentation/blockdev/floppy.txt  (or  Documentation/floppy.txt  in  older
428       kernels,  or  drivers/block/README.fd for ancient kernels) in the Linux
429       kernel source.  See that file for the details.
430
431   The sound driver
432       The sound driver can also accept boot arguments to  override  the  com‐
433       piled-in values.  This is not recommended, as it is rather complex.  It
434       is   described   in   the   Linux   kernel   source   file   Documenta‐
435       tion/sound/oss/README.OSS  (drivers/sound/Readme.linux  in older kernel
436       versions).  It accepts a boot argument of the form:
437
438           sound=device1[,device2[,device3...[,device10]]]
439
440       where each deviceN value is of the following format  0xTaaaId  and  the
441       bytes are used as follows:
442
443       T   -   device  type:  1=FM,  2=SB,  3=PAS,  4=GUS,  5=MPU401,  6=SB16,
444       7=SB16-MPU401
445
446       aaa - I/O address in hex.
447
448       I - interrupt line in hex (i.e., 10=a, 11=b, ...)
449
450       d - DMA channel.
451
452       As you can see, it gets pretty messy, and you are better off to compile
453       in  your  own personal values as recommended.  Using a boot argument of
454       'sound=0' will disable the sound driver entirely.
455
456   The line printer driver
457       'lp='
458              Syntax:
459
460                  lp=0
461                  lp=auto
462                  lp=reset
463                  lp=port[,port...]
464
465              You can tell the printer driver what ports to use and what ports
466              not  to  use.   The  latter comes in handy if you don't want the
467              printer driver to claim all available parallel  ports,  so  that
468              other drivers (e.g., PLIP, PPA) can use them instead.
469
470              The format of the argument is multiple port names.  For example,
471              lp=none,parport0 would use the first parallel port for lp1,  and
472              disable  lp0.   To  disable the printer driver entirely, one can
473              use lp=0.
474

SEE ALSO

476       klogd(8), mount(8)
477
478       For up-to-date information,  see  the  kernel  source  file  Documenta‐
479       tion/admin-guide/kernel-parameters.txt.
480
481
482
483Linux man-pages 6.05              2023-02-05                      bootparam(7)
Impressum