grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Proposal: disaggregated kernel parameters for Linux


From: Simon Rowe
Subject: Proposal: disaggregated kernel parameters for Linux
Date: Fri, 2 Feb 2024 09:58:06 +0000

I have a suggestion I’d like to have feedback on regarding the management of Linux kernel parameters.

 

Today the parameters for a Linux menu entry have to be specified in the GRUB_CMDLINE_LINUX entry of /etc/default/grub. These parameters cover a number of purposes, not just the kernel (e.g. initrd, systemd etc). Changes need to be made for a variety of reasons and at different times, defining a new parameter (or changing an existing one) requires this single line to be updated. Doing so is awkward, to be idempotent you first have to check if the parameter is present, then you have to find the appropriate insertion point (some parameters are sensitive to ordering).

 

Many userspace subsystems today use a collection of dropin files in one or more directories which are then read in a well-defined order to create a final configuration definition. This has a number of advantages:

 

    * parameters can be grouped logically together

    * parameters can be packaged with their appropriate component

    * parameters can modified simply by updating a file (which can be done atomically)

    * ordering can be indicated by the name of the file (usually with a two digit number prefix)

    * distinction can be made between distro defaults and values an administrator has chosen as overrides

 

This concept could be used by GRUB to build up the Linux kernel parameters dynamically when the config is generated.

 

Here’s an example:

 

The installer deploys the file /usr/lib/kernel.d/50-console.conf

 

     console=tty0

 

as a distro default. An admin can choose to deploy /etc/kernel.d/55-serial-console.conf with

 

    console=ttyS1,115200

 

to add a serial console that’s the default instead.

 

An example of replacement (rather than extension), the kdump package could install the file /usr/lib/kernel.d/10-crashdump.conf

 

    crashkernel=auto

 

but the admin finds he needs more specific settings so he creates /etc/kernel.d/10-crashdump.conf with

 

    crashkernel=32G-96G:128M,96G-:256M

 

in this scenario the file within /etc/kernel.d/ entirely replaces the file of the same name in /usr/lib/kernel.d/.

 

Files could also contain comments to explain their purpose.

 

Of course this could also be utilized by other bootloaders (and would therefore make management of parameters consistent across different platforms).

 

I have a proof of concept for a specific usecase. If there’s interest in this approach I can transform this into something more generic and send out a set of patches.

 

Regards
Simon


reply via email to

[Prev in Thread] Current Thread [Next in Thread]