kernel-config: entry_name_format in install.conf

Extend load_kernel_install_conf_at() to parse the new entry_name_format=
setting from install.conf. This plumbing only, no behavioral change yet.
Existing callers pass NULL for the new parameter.

The entry_name_format= setting will allow configuring the boot entry
filename format using specifiers, replacing the current hardcoded
$ENTRY_TOKEN-$KERNEL_VERSION pattern. This is useful for image-based OS
builds (e.g. via mkosi, or image-builder) that require versioned UKI
filenames in the ESP for sysupdate A/B updates.

Having this configuration option allows to do that directly at build
time without having to side-step kernel-install and moving files around
manually.
This commit is contained in:
Simon de Vlieger
2026-08-03 18:12:06 +02:00
parent 1a15ce95ac
commit 95f286b9b4
4 changed files with 21 additions and 12 deletions

View File

@@ -338,7 +338,8 @@ static int load_kernel_install_layout(InstallContext *c) {
/* ret_boot_root= */ NULL,
&layout,
/* ret_initrd_generator= */ NULL,
/* ret_uki_generator= */ NULL);
/* ret_uki_generator= */ NULL,
/* ret_entry_name_format= */ NULL);
if (r <= 0)
return r;

View File

@@ -467,7 +467,8 @@ static int context_load_install_conf(Context *c) {
&boot_root,
&layout,
&initrd_generator,
&uki_generator);
&uki_generator,
/* ret_entry_name_format= */ NULL);
if (r <= 0)
return r;

View File

@@ -14,16 +14,19 @@ int load_kernel_install_conf_at(
char **ret_boot_root,
char **ret_layout,
char **ret_initrd_generator,
char **ret_uki_generator) {
char **ret_uki_generator,
char **ret_entry_name_format) {
_cleanup_free_ char *machine_id = NULL, *boot_root = NULL, *layout = NULL,
*initrd_generator = NULL, *uki_generator = NULL;
*initrd_generator = NULL, *uki_generator = NULL,
*entry_name_format = NULL;
const ConfigTableItem items[] = {
{ NULL, "MACHINE_ID", config_parse_string, 0, &machine_id },
{ NULL, "BOOT_ROOT", config_parse_string, 0, &boot_root },
{ NULL, "layout", config_parse_string, 0, &layout },
{ NULL, "initrd_generator", config_parse_string, 0, &initrd_generator },
{ NULL, "uki_generator", config_parse_string, 0, &uki_generator },
{ NULL, "MACHINE_ID", config_parse_string, 0, &machine_id },
{ NULL, "BOOT_ROOT", config_parse_string, 0, &boot_root },
{ NULL, "layout", config_parse_string, 0, &layout },
{ NULL, "initrd_generator", config_parse_string, 0, &initrd_generator },
{ NULL, "uki_generator", config_parse_string, 0, &uki_generator },
{ NULL, "entry_name_format", config_parse_string, 0, &entry_name_format },
{}
};
int r;
@@ -71,5 +74,7 @@ int load_kernel_install_conf_at(
*ret_initrd_generator = TAKE_PTR(initrd_generator);
if (ret_uki_generator)
*ret_uki_generator = TAKE_PTR(uki_generator);
if (ret_entry_name_format)
*ret_entry_name_format = TAKE_PTR(entry_name_format);
return r >= 0; /* Return 0 if we got -ENOENT above, 1 otherwise. */
}

View File

@@ -12,7 +12,8 @@ int load_kernel_install_conf_at(
char **ret_boot_root,
char **ret_layout,
char **ret_initrd_generator,
char **ret_uki_generator);
char **ret_uki_generator,
char **ret_entry_name_format);
static inline int load_kernel_install_conf(
const char *root,
@@ -21,7 +22,8 @@ static inline int load_kernel_install_conf(
char **ret_boot_root,
char **ret_layout,
char **ret_initrd_generator,
char **ret_uki_generator) {
char **ret_uki_generator,
char **ret_entry_name_format) {
return load_kernel_install_conf_at(root, XAT_FDROOT, conf_root, ret_machine_id, ret_boot_root, ret_layout, ret_initrd_generator, ret_uki_generator);
return load_kernel_install_conf_at(root, XAT_FDROOT, conf_root, ret_machine_id, ret_boot_root, ret_layout, ret_initrd_generator, ret_uki_generator, ret_entry_name_format);
}