Chapter 13. Managing kernel arguments in bootc systems


You can use bootc to configure kernel arguments. By default, bootc uses the boot loader configuration files that are stored in /boot/loader/entries. This directory defines arguments provided to the Linux kernel. While kernel arguments are machine-specific, you can manage them through container updates. The boot loader menu entries are shared between multiple operating systems and boot loaders are installed on one device.

Note

Currently, the boot loader entries are written by an OSTree backend.

13.1. Adding support to inject kernel arguments with bootc

The bootc tool uses generic operating system kernels. You can add support to inject kernel arguments by adding a custom configuration, in the TOML format, in /usr/lib/bootc/kargs.d.

Prerequisite

  • You created a container image.

    1. Procedure
  • Add a custom configuration in the /usr/lib/bootc/kargs.d file. For example:

    # /usr/lib/bootc/kargs.d/10-example.toml
    kargs = ["mitigations=auto,nosmt"]
  • Optional: Make the kernel arguments architecture-specific by using the match-architectures key. For example:
# /usr/lib/bootc/kargs.d/00-console.toml
kargs = ["console=ttyS0,114800n8"]
match-architectures = ["x86_64"]

13.2. Modifying kernel arguments by using bootc install configurations

You can use the bootc install command with the --karg option to inject kernel arguments during installation time in the following ways:

  • Adding kernel arguments into the container image.
  • Adding kernel arguments by using the bootc install --karg command.

Use the kernel arguments on Day 2 operations, by adding the arguments and applying them on a switch, upgrade, or edit.

Prerequisites

  • You created a container image.

Procedure

  1. Create files within /usr/lib/bootc/kargs.d with kernel arguments.

    $ sudo tee /usr/lib/bootc/kargs.d/console.kargs << EOF
    console=tty0 console=ttyS0,115200n8
    EOF
  2. Fetch the container image to get the OSTree commit.

    $ podman pull quay.io/<your_org>/<your_bootc_image>:latest
  3. Use the OSTree commit to return the file tree.

    # bootc install to-filesystem --karg=root=<UUID>=<uuid of /mnt> --imgref $self /mnt
  4. Navigate to the /usr/lib/bootc/kargs.d kernel arguments directory.

    cd /usr/lib/bootc/kargs.d
  5. Read each file within the kernel arguments directory.

    $ find /usr/lib/bootc/kargs.d -name ".kargs" -exec cat {} \;*
  6. Push the contents of each kargs file into a file containing all the needed kargs.

    $ CONSOLIDATED_KARGS="/tmp/all-kargs.txt"
  7. Pass the kargs to the stage() function.

    $ bootc kargs --append="$KARGS_STRING"
  8. Apply the kernel arguments to switch, upgrade, or edit during operations.

    $ bootc switch --transport=registry quay.io/<your_org>/<your_bootc_image>:latest

13.3. How to inject kernel arguments in the Containerfile

To add kernel arguments into a container image, use a Containerfile. The following is an example:

FROM registry.redhat.io/rhel9/rhel-bootc:latest

RUN mkdir -p /usr/lib/bootc/kargs.d
RUN cat <<EOF >> /usr/lib/bootc/kargs.d/console.toml
kargs = ["console=ttyS0,114800n8"]
match-architectures = ["x86_64"]
EOF

RUN cat <<EOF >> /usr/lib/bootc/kargs.d/01-mitigations.toml
kargs = ["mitigations=on", "systemd.unified_cgroup_hierarchy=0"]
match-architectures = ["x86_64", "aarch64"]
EOF

13.4. Injecting kernel arguments in the Containerfile at installation time

You can use boot install with the --karg to inject kernel arguments during installation time. As a result, the kernel arguments become the machine-local state, that is, they became the persistent configuration unique to that specific machine.

Prerequisites

  • You created a container image.

Procedure

  • Inject kernel arguments:

    # bootc install to-filesystem --karg=root=<UUID>=<uuid of /mnt> --imgref $self /mnt

13.5. Adding install-time kernel arguments by using bootc-image-builder

The bootc-image-builder tool supports the customizations.kernel.append during the installation time.

Prerequisites

  • You created a container image.

Procedure

  • Add kernel arguments with bootc-image-builder by using the following customization:

    {
      "customizations": {
        "kernel": {
          "append": "mitigations=auto,nosmt"
        }
      }
    }

13.6. About changing kernel arguments after the installation by using kargs.d

The changes that you make to kargs.d files and include in a container build are applied after the installation, and the difference between the set of kernel arguments is applied to the current boot loader configuration. This preserves any machine-local kernel arguments.

You can use any tool to edit the /boot/loader/entries files, which are in a standardized format. The /boot file has read-only access to limit the set of tools that can write to this filesystem.

13.7. Editing kernel arguments in bootc systems

To perform machine local changes, you also can edit kernel arguments on a bootc system or an rpm-ostree system, by using the rpm-ostree kargs command. The changes are made through the user/lib/bootc/kargs.d path, which also handles Day 2 changes, besides the first boot changes.

The following are the options that you can use to add, modify or remove kernel arguments.

rpm-ostree kargs

--append=KEY=VALUE
Appends a kernel argument. It is useful with, for example, console= that can be used multiple times. You can use an empty value for an argument.
--replace=KEY=VALUE=NEWVALUE
Replaces an existing kernel argument. You can replace an argument with KEY=VALUE only if one value already exists for that argument.
--delete=KEY=VALUE
Deletes a specific kernel key-value pair argument or an entire argument with a single key-value pair.
--append-if-missing=KEY=VALUE
Appends a kernel argument. Does nothing if the key is already present.
--delete-if-present=KEY=VALUE
Deletes a specific kernel key-value pair argument. Does nothing if the key is missing.
--editor
Uses an editor to modify the kernel arguments.

Prerequisites

  • You created a container image.

Procedure

  • Append a kernel argument, for example:

    # rpm-ostree kargs --append debug
    Staging deployment... done
    Freed: 40.1 MB (pkgcache branches: 0)
    Changes queued for next boot. Run "systemctl reboot" to start a reboot
  • Check the help for more information:

    # rpm-ostree kargs --help
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동