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