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