Debian Installer Kernel Command Line Parameters

Configuring the Linux kernel command line during the boot stage allows administrators to automate, customize, and troubleshoot the Debian installation process. By passing specific parameters to the Debian Installer (debian-installer or d-i), you can suppress interactive prompts, configure network settings before fetching configuration files, select automated installation templates, and dictate hardware behavior. This guide outlines the most effective kernel parameters available to control the Debian installer.

Installation Mode and Automation

These parameters control the installer's operational mode and the visibility of questions asked during installation:

  • auto=true or auto: Enforces automatic installation. It delays certain configuration questions until the network is configured so that a preseed file can be loaded.
  • priority=critical: Sets the minimum priority of debconf questions displayed to the user. Options are low, medium, high, and critical. Setting this to critical skips almost all interactive questions by applying default values.
  • expert: Equivalent to setting priority=low, giving total control over the setup, including partition flags, base system components, and module parameters.
  • rescue/enable=true: Bypasses the standard installation procedure and boots straight into Debian's rescue environment for system recovery.

Preseeding Configurations

Preseeding allows unattended installation by pre-populating answers to debconf questions. The installer can retrieve preseed files via network protocols or local storage:

  • preseed/url=http://example.com/preseed.cfg (or url=http://...): Instructs the installer to download a preseed configuration over HTTP, HTTPS, or FTP.
  • preseed/file=/hd-media/preseed.cfg (or file=/path): Directs the installer to read a configuration file located on a local filesystem or mounted drive.
  • preseed/interactive=false: Ensures the installer halts with an error if a question is not answered by the preseed file instead of prompting the user.

Network Configuration

When using network-based preseed files or performing netboot installations, network parameters must often be configured directly on the kernel command line:

  • netcfg/choose_interface=auto: Automatically selects the first active network interface. You can specify a dedicated device, such as netcfg/choose_interface=eth0 or netcfg/choose_interface=ens3.
  • netcfg/disable_autoconfig=true: Prevents the installer from requesting network information via DHCP, prompting instead for static configuration.
  • netcfg/get_ipaddress=192.168.1.100: Defines the static IP address.
  • netcfg/get_netmask=255.255.255.0: Sets the subnet mask.
  • netcfg/get_gateway=192.168.1.1: Sets the default network gateway.
  • netcfg/get_nameservers=192.168.1.1: Configures the primary DNS server.
  • netcfg/get_hostname=debian-node: Specifies the system hostname.
  • netcfg/get_domain=localdomain: Specifies the domain name.

Localization and Interface Settings

To avoid language and region selection prompts at boot:

  • locale=en_US.UTF-8: Sets the system language and region code simultaneously.
  • keymap=us: Defines the keyboard layout directly without showing selection dialogs.
  • theme=dark: Activates the high-contrast dark theme in the graphical installer.

Hardware and Console Redirection

For headless systems, serial installations, and systems with incompatible graphics hardware:

  • console=ttyS0,115200n8: Directs the installer interface to a serial console, specifying the port (ttyS0), baud rate (115200), parity (n), and bits (8).
  • vga=normal: Disables framebuffer modes and forces standard VGA text output.
  • fb=false: Completely disables the Linux framebuffer driver in the text-mode installer.
  • nomodeset: Prevents the kernel from loading video drivers before the display server starts, fixing blank screen issues on problematic GPUs.

Generic Debconf Parameter Passing

Any Debian configuration parameter handled by debconf can be passed directly via the kernel command line using its question path. The installer checks the command line and applies the values directly:

  • Syntax: [owner/][path/to/variable]=[value]
  • Example: passwd/root-password-crypted=$6$... passes a pre-hashed root password.
  • Example: partman-auto/method=regular configures standard disk partitioning without manual confirmation.