10 boot time parameters you should know about the Linux kernel

The Linux kernel accepts boot time parameters as it starts to boot system. This is used to inform kernel about various hardware parameter. You need boot time parameters:

* Troubleshoot system
* Hardware parameters that the kernel would not able to determine on its own
* Force kernel to override the default hardware parameters in order to increase performance
* Password and other recovery operations

The kernel command line syntax



  • name : Keyword name, for example, init, ro, boot etc

Ten common Boot time parameters


This sets the initial command to be executed by the kernel. Default is to use /sbin/init, which is the parent of all processes.
To boot system without password pass /bin/bash or /bin/sh as argument to init


The most common argument that is passed to the init process is the word ‘single’ which instructs init to boot the computer in single user mode, and not launch all the usual daemons


This argument tells the kernel what device (hard disk, floppy disk) to be used as the root filesystem while booting. For example following boot parameter use /dev/sda1 as the root file system:

If you copy entire partition from /dev/sda1 to /dev/sdb1 then use


This argument tells the kernel to mount root file system as read-only. This is done so that fsck program can check and repair a Linux file system. Please note that you should never ever run fsck on read/write file system.


This argument tells the kernel to mount root file system as read and write mode.


Specify kernel behavior on panic. By default, the kernel will not reboot after a panic, but this option will cause a kernel reboot after N seconds. For example following boot parameter will force to reboot Linux after 10 seconds


Specify maximum number of processors that an SMP kernel should make use of. For example if you have four cpus and would like to use 2 CPU then pass 2 as a number to maxcpus (useful to test different software performances and configurations).


Enable kernel debugging. This option is useful for kernel hackers and developers who wish to troubleshoot problem

selinux [0|1]

Disable or enable SELinux at boot time.

  • Value 0 : Disable selinux
  • Value 1 : Enable selinux


This argument tells kernel howto assembly of RAID arrays at boot time. Please note that When md is compiled into the kernel (not as module), partitions of type 0xfd are scanned and automatically assembled into RAID arrays. This autodetection may be suppressed with the kernel parameter “raid=noautodetect”. As of kernel 2.6.9, only drives with a type 0 superblock can be autodetected and run at boot time.


This is a classic parameter. Force usage of a specific amount of memory to be used when the kernel is not able to see the whole system memory or for test. For example:

The kernel command line is a null-terminated string currently up to 255 characters long, plus the final null. A string that is too long will be automatically truncated by the kernel, a boot loader may allow a longer command line to be passed to permit future kernels to extend this limit (H. Peter Anvin ).

Other parameters

initrd /boot/initrd.img

An initrd should be loaded. 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; afterwards the “real” root file system is mounted, and the initrd file system is moved over to /initrd; finally the usual boot sequence (e.g. invocation of /sbin/init) is performed. initrd is used to provide/load additional modules (device driver). For example, SCSI or RAID device driver loaded using initrd.

hdX =noprobe

Do not probe for hdX drive. For example, disable hdb hard disk:

If you disable hdb in BIOS, Linux will still detect it. This is the only way to disable hdb.




For example, following boot argument force probing for a second Ethernet card (NIC), as the default is to only probe for one (irq=0,iobase=0 means automatically detect them).

How to begin the enter parameters mode?

You need to enter all this parameter at Grub or Lilo boot prompt. For example if you are using Grub as a boot loader, at Grub prompt press ‘e’ to edit command before booting.

1) Select second line
2) Again, press ‘e’ to edit selected command
3) Type any of above parameters.

See an example of “recovering grub boot loader password“, for more information. Another option is to type above parameters in grub.conf or lilo.conf file itself.

See the complete list of Linux kernel parameters i.e. /usr/src/linux/Documentation/kernel-parameters.txt file.

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 21 comments so far... add one
CategoryList of Unix and Linux commands
Disk space analyzersncdu pydf
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
21 comments… add one
  • Anonymous Mar 9, 2006 @ 10:57

    Hey, nice list but don’t forget


    It will help if you have problems releated to vga card (change the startup video mode)

  • Anonymous Mar 9, 2006 @ 21:53

    What maybe lack in this article is: “How to begin the enter parameters mode?”
    I guess that, with knoppix, I can enter these in the ‘cheatcodes’ field, at start. But what about a regular lilo or grub boot, and typing this parameters on the fly, without put fingers into lilo.conf or menu.lst?

  • monk Mar 9, 2006 @ 23:03

    >What maybe lack in this article is: “How to begin the enter parameters mode?”

    Thanks, just little info added as per your suggestion 🙂

  • Anonymous Mar 23, 2006 @ 19:35

    If lilo boot screen doesn’t come with the “boot:” prompt is possible to obtain it with the ‘shift’ key, or, in case of framebuffer enabled, ‘tab’ key.

  • Golam Kibria Dec 30, 2007 @ 9:20

    I want to know the details command step by step.

  • Hareesh Jan 1, 2008 @ 3:59

    A few more are there like apm=off, acpi=off, nodma,etc

  • Kresten Hartvig Klit Jan 23, 2008 @ 20:53

    Thank you for a very distinct and clear survey at the kernel parameters. I can use that!

  • Mahnaz Apr 14, 2008 @ 9:12

    thank you for the usefull docs
    my linux is too fast and i am beginner and need too recognize every line during system boot,how can I change the time and have enough time to see every line of system boot!!!??
    Could you add this item to your helpfull site?
    Thank you.


  • fest3er Apr 26, 2008 @ 20:25

    There are two ways to re-view boot messages. First, you can you the command ‘dmesg|less’ to see much of what appears on the console when linux boots. Second, you can ‘cd /var/log’ and look at the contents of the files. Specifically, ‘messages’, ‘daemon’ and ‘syslog’ will contain more information about what the system does during boot and during operation.

  • John May 1, 2008 @ 3:36

    So what is the option to stop it or at least prompt you during the loading of hardware drivers? my ubuntu 8 upgrade is hanging on the broadcom wireless driver. Debug/recovery mode shows me the hang…

  • cepal Jul 4, 2008 @ 11:44

    for disabling selinux you need to use “selinux=0”, the equal sign is “a bit” missing on your site…

  • Veerendra Jonnalagadda Aug 22, 2009 @ 7:14

    how does Linux handle new hardware that we found but not initialised like windows show “New Hardware Found” and also how does it handle their device ID and Vendor Ids…..
    at the boot time
    Veerendra Jonnalagadda

  • darkfader Apr 18, 2011 @ 23:47

    it depends on the filesystem whether you can run fsck while it’s mounted r/w. some can do it[*], the majority can’t.
    I don’t know what makes the technical difference which allows them to do it.

    [*]most notable veritas vxfs, and to less fun extent xfs, zfs of course.

  • Brian Micek May 15, 2011 @ 22:44

    With Redhat and Fedora Linux, the initrd filesystem might pause the system boot forever waiting for a LUKs password if any encrypted LUKs devices are detected. This could include a USB memory stick accidentally plugged into the system. The symptoms of this problem are your computer will not boot unattended which might be undesirable. You can undo this behavior with the kernel command argument: “rd_NO_LUKS”

  • Chris Peterman Oct 11, 2011 @ 18:17

    One more that is useful is just “x” where x is 1-6, lets you boot to a specific runlevel

  • ZackY Dec 11, 2011 @ 15:54

    Dear Linux geeks,

    I am facing this problem, while i started to develop PHP websites using LAMP on Fedora15, i followed the instructions from following link:


    where i skipped the point no 1, as i didnt wanted to go for a cli mode or change the runlevels, instead i skipped this
    1. Stop x, change run level to 3
    The inittab file is gone in fedora 15, we now have to remove a symlink and make a new one using:
    rm /etc/systemd/system/default.target
    ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
    If you need X and Gnome just type – start x to go tu run level 5.

    and continued, using GEDIT i disabled selinux:
    #gedit /etc/selinux/config

    setting: SELINUX=disabled

    and also saw underlying WARNING that doing this could mess up with my booting, as it says in the guide:

    “if you mess up selinux and the machine dosn’t boot, just press F8 at boot time and add selinux=0 to the bootloader parameters”.

    i followed the same, and upon reboot, the system said, could not find policy file at location /etc/selinux/policy blah blah… (the warning comes as a fullstop on boot process and in RED COLOR.

    any ways i hard rebooted pc, and upon boot pressed “f8 key on keyboard” and i got the grub boot menu, there i selected on first line of it, and added the parameter after rhgb quit (i gave a space and added) selinux=0

    but still could not boot properly.

    any suggestions? should i boot from INSTALL DVD and goto rescue mode and then at the same location, re-edit file back from “SELINUX=disabled” to “SELINUX=enforced”

    plesae if someone encountered such scenario do share how to overcome or any one who can help???

    Thnx a lot.

    • 3ED Apr 5, 2016 @ 13:40

      1. To disable GUI login manager, run:
      # systemctl default multi-user.target
      # systemctl disable display-manager.service

      2. Do not disable selinux ever! Set it in permissive mode instead. But if you do this mistake:
      a) disable and reboot
      b) set permissive
      c) touch /.autorelabel
      d) reboot
      e) check if audit don’t complain (or you can temperary enable by run cmd: setenforce 1)
      f) if it works, then set it to enforce mode

      PS. On rh7/centos7 you can set permissive per apps, look at: semenage permissive –help

  • sam Jun 29, 2013 @ 7:02

    “name=value1,value2,value3…” is not complete description the syntax of kernel parameters; the values are optional, and separate name value pairs are separated by spaces.

    Also as far as Im aware the Linux kernel does no have a command line as you imply with the section title “The kernel command line syntax”.

    Please amend.

    • my name is what? Apr 14, 2015 @ 5:31

      sorry guy, but both of those come directly from kernel documentation.

      name[=value1,value2,value3] not all options have values passed to them.

      As for “The kernel command line syntax”, this is what it is referred to as repeatedly in the kernel source, documentation, and even ‘make menuconfig’

      You should find jesus, I think he has probably compiled a kernel before.

  • nauseous Sep 4, 2015 @ 20:40

    Those parameters are misleading and not Linux! It’s another OS, the name is called FreeBSD or related BSD systems.

  • Sumncguy Oct 15, 2015 @ 14:25

    Learning about grub. Understanding how to use init=/bin/bash for root password recovery would be helpful.

    I know that the grub execution needs to interrupted. Enter p to edit if setup. But what I dont know is how and where to enter init=/bin/bash so that grub will load directly to the shell.

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum