内核参数 - Arch Linux 中文维基

跳转到内容

# 内核参数

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Kernel parameters，最近一次同步于 2026-06-26，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

相关文章

- Kernel

共有三种办法向内核传递参数以控制其行为：

1. 在编译内核时：在内核的 `config` 文件中。详见内核#编译。
2. 在内核启动时：通过命令行参数（通常通过启动管理器设置，或在统一内核镜像中设置）。
3. 在运行时：通过 `/proc/sys/`（参见 sysctl）和 `/sys/` 中的文件。

提示：可加载模块的选项可通过 `/etc/modprobe.d/` 中的 .conf 文件设置。参见 内核模块#使用_/etc/modprobe.d/中的文件。

不同的方式有不同的命令名称、是否可见以及设置方式。本文仅说明第二种方式(内核命令行)，并记录适用 Arch linux 内核的常用参数。

大部分参数和某个子系统相关，需要在编译或加载时加入子系统，而且相关硬件需要存在。

内核命令行参数的格式为 `parameter` 或 `parameter=value`，或 `module.parameter=value`。

注意：

- 通过 `cat /proc/cmdline` 可以查看当前使用的命令行参数，验证修改是否生效。
- 所有内核参数均区分大小写。

## 启动管理器配置

注意：Arch Linux 安装镜像 在 UEFI 系统上使用 systemd-boot，在 BIOS 系统上使用 Syslinux。

内核参数可以在启动时临时修改，也可以永久性写到启动管理器的配置文件中，永远起作用。

下面示例：把参数`quiet` 和 `splash` 加到启动管理器 Clover、GRUB、GRUB Legacy、LILO、Limine、rEFInd、Syslinux 和 systemd-boot 中。

### Clover

- 将以下内容添加到 `esp/EFI/CLOVER/config.plist`：

      <string>initrd=\initramfs-linux.img root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash</string>

### GRUB

- 在菜单出现后按 `e` 然后将它们添加至 `linux` 行：

      linux /boot/vmlinuz-linux root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

  按 `Ctrl+x` 以便用这些参数启动。

- 要使改变在重启后仍生效，您可以手动编辑 `/boot/grub/grub.cfg` 中的如上内容。对于初学者，建议：

  编辑 `/etc/default/grub` 并将您的内核选项添加至 `GRUB_CMDLINE_LINUX_DEFAULT` 行：

        GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

  然后重新生成 `grub.cfg` 文件：

        # grub-mkconfig -o /boot/grub/grub.cfg

有关配置GRUB的更多信息，请参阅 GRUB 。

### GRUB Legacy

- 在菜单出现后按 `e` 然后将它们添加至 `kernel` 行：

      kernel /boot/vmlinuz-linux root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

  按 `b` 以便用这些参数启动。

- 要使改变在重启后仍生效，编辑 `/boot/grub/menu.lst` 并将它们添加至 `kernel` 行，如上所示。

有关配置GRUB Legacy的更多信息，请参阅 GRUB Legacy 。

### LILO

- 将它们添加到 `/etc/lilo.conf` 中，使用 `append` 或 `addappend`：

      image=/boot/vmlinuz-linux
              ...
              append="quiet splash"

有关配置LILO的更多信息，请参阅 LILO 。

### Limine

- 要临时添加内核参数，在启动条目选择屏幕出现时按 `e` 并修改 `cmdline` 行：

      cmdline: root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

- 要使更改永久生效，编辑 Limine 配置文件中的 `kernel_cmdline` 行：

      /+Arch Linux
          ...
          kernel_cmdline: root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

`kernel_cmdline` 是 `cmdline` 的别名

### rEFInd

- 在所需的菜单条目上按 `Insert`, `F2`, `Tab`, 或 `+`，然后在子菜单条目上再次按下。在字符串末尾添加内核参数：

      root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw initrd=\boot\initramfs-linux.img quiet splash

  按 `Enter` 以使用这些参数启动。

- 要使更改在重启后永久生效，编辑 `/boot/refind_linux.conf` 并在所有需要的行中的引号之间追加它们，例如：

      "Boot using default options"   "root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash"

- 如果您在 rEFInd 中禁用了操作系统的自动检测，并在 `esp/EFI/refind/refind.conf` 中定义了操作系统条目来加载您的操作系统，您可以像这样编辑它：

      menuentry "Arch Linux" {
          ...
          options  "root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash"
          ...
      }

有关配置 rEFInd 的更多信息，请参阅 rEFInd 。

### Syslinux

- 当出现启动选择菜单的时候，按 `Tab` 进入修改模式:

      linux /boot/vmlinuz-linux root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw initrd=/boot/initramfs-linux.img quiet splash

  按 `Enter` 键以当前设置启动.

- 要将设置永久生效，编辑 `/boot/syslinux/syslinux.cfg` 并添加 `APPEND` 行:

      APPEND root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

更多详情请见Syslinux 。

### systemd-boot

- 当启动菜单出现时 按 `e`进入编辑界面:

      initrd=\initramfs-linux.img root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

  按 `Enter` 即可按照输入的参数启动。

注意：

- 如果没有设置显示启动菜单, 你需要按住`Space`启动电脑来进入启动菜单 。
- 如果不能够从启动菜单上进行编辑，修改 `/boot/loader/loader.conf` 加入 `editor 1` 来开启编辑功能。

- 如果想永久加入参数，编辑 `/boot/loader/entries/arch.conf` (假设你已经设置好了 EFI system partition) 的`options` 行:

      options root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

- 若使用 统一内核映像 启动，请编辑 `/etc/kernel/cmdline`。

更多信息请参见 systemd-boot .

## dracut

dracut 可以将内核参数嵌入 initramfs，并跳过启动加载器的配置，参考：dracut#内核命令行参数。注意这种方式只对 dracut 所能接受的参数生效，例如 `root=` 和 `rd.*`，这些参数并不会变成真正的内核参数。

## EFI 启动存根

参阅 EFI 启动存根#Using UEFI directly.

## 劫持 cmdline

即使没有访问启动加载器的权限，也可以通过更改内核参数来启用调试（如果您有 root 权限）。这可以通过覆盖存储内核参数的 `/proc/cmdline` 来实现。然而，`/proc/cmdline` 即使作为 root 也不可写，因此这个技巧通过使用绑定挂载来掩盖路径。

注意：这种技巧仅劫持读取 `/proc/cmdline` 的用户空间进程，无法作用于被内核读取的参数。例如，通过这种方式添加 `debug` 不会使内核进入调试模式。

首先创建一个包含所需内核参数的文件：

    /root/cmdline

    root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 ro console=tty1 logo.nologo debug

然后使用绑定挂载覆盖参数：

    # mount -n --bind -o ro /root/cmdline /proc/cmdline

`-n` 选项跳过将挂载添加到 `/etc/mtab`，因此即使根文件系统以只读方式挂载也能工作。您可以通过 `cat /proc/cmdline` 确认更改是否成功。

## 参数列表

本表并不完整。除了内核，其他程序也能从 `/proc/cmdline` 读取参数并受到影响。

- 所有选项的完整列表请参见内核文档（包含内核与引导加载程序的可用参数）。bootparam(7) 中有一份基本的参数列表可供参考。
- systemd 的可用参数请参见 kernel-command-line(7)。
- 带有基于 busybox 的 initial ramdisk 的 mkinitcpio 的可用参数请参见 mkinitcpio(8) § EARLY INIT ENVIRONMENT 和 mkinitcpio#运行时配置。
- dracut 的可用参数请参见 dracut.cmdline(7)。

参数 | 描述
--- | ---
init | 运行指定的二进制文件而不是 `/sbin/init` 作为 init 进程。systemd-sysvcompat包 包将 `/sbin/init` 符号链接到 `/usr/lib/systemd/systemd` 以使用 systemd。将其设置为 `/bin/sh` 以启动到 shell。
initrd | 指定初始 ramdisk 的位置。对于 UEFI 启动管理器 和 EFI 启动存根，路径必须使用反斜杠 (`\`) 作为路径分隔符。
cryptdevice | 指定 dm-crypt 加密分区的位置以及 设备映射器 名称。
debug | 启用内核调试（事件日志级别）。
lsm | 设置 Linux 安全模块的初始化顺序，用于启用 AppArmor, SELinux 或 TOMOYO。
maxcpus | SMP 内核在启动期间将启动的最大处理器数量。
mem | 强制使用特定数量的内存。
netdev | 网络设备参数。
nomodeset | 禁用 Kernel mode setting。
panic | 内核崩溃后自动重启的时间。
resume | 指定从 休眠 唤醒时使用的交换设备。
ro | 在启动时以只读方式挂载根设备。这是 mkinitcpio 的默认值1。
root | 根文件系统。参见 init/do_mounts.c 了解内核支持的设备名称格式。请注意，带有 udev 的 initramfs 支持 更多名称格式。与 systemd#GPT 分区自动挂载 兼容的设置允许完全省略该参数，或者使用 `root=dissect`。
rootflags | 根文件系统挂载选项。对于无法通过重新挂载应用的选项（例如，由 systemd-remount-fs.service(8) 应用）非常有用。例如，XFS 根卷的 `discard` 选项或 Btrfs 使用子卷作为根 时的 `subvol=` 选项。
rw | 在启动时以读写方式挂载根设备。这是内核的默认值1。
systemd.unit | 启动到指定的 目标。
video | 覆盖帧缓冲视频默认值。

1. 如果内核命令行上未明确设置 `ro` 或 `rw`，内核将使用 `rw`（参见 bootparam(7) § General non-device-specific boot arguments）。然而，mkinitcpio 使用 `ro` 作为默认值，覆盖内核的默认值（参见 mkinitcpio(8) § EARLY INIT ENVIRONMENT）。启动加载器也可能有自己的配置默认值，例如，grub-mkconfig 使用 `rw`（参见 FS#36275 作为参考）。
   注意：当使用 mkinitcpio 的 fsck 钩子（参见 [1]）或 使用 F2FS 作为根文件系统 时，需要 `rw`。

## 参见

- bootparam(7)
- kernel-command-line(7)
- 省电相关内核参数
- 内核启动命令行参数参考——Linux Kernel in a Nutshell 的第 9 章，作者 Greg Kroah-Hartman

分类：​

- 内核

内核参数
添加话题