mirror of
https://github.com/systemd/systemd.git
synced 2026-08-09 01:20:53 +00:00
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:
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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. */
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user