Skip to content

Commit

Permalink
uboot: add non-default deployments to uEnv.txt
Browse files Browse the repository at this point in the history
Include non-default deployments in the uEnv.txt file imported by
U-Boot. All the configurations beside the defaults will have
numerical suffix E.G. "kernel_image2" or "bootargs2".
Those U-Boot environment variables may be used from interactive boot
prompt or from "altbootcmd" script.
  • Loading branch information
Guy Shapiro authored and cgwalters committed Sep 7, 2017
1 parent 1f6dbf2 commit 7ff4394
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 19 deletions.
46 changes: 27 additions & 19 deletions src/libostree/ostree-bootloader-uboot.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,28 +115,36 @@ create_config_from_boot_loader_entries (OstreeBootloaderUboot *self,
cancellable, error))
return FALSE;

/* U-Boot doesn't support a menu so just pick the first one since the list is ordered */
config = boot_loader_configs->pdata[0];

val = ostree_bootconfig_parser_get (config, "linux");
if (!val)
for (int i = 0; i < boot_loader_configs->len; i++)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"No \"linux\" key in bootloader config");
return FALSE;
}
g_ptr_array_add (new_lines, g_strdup_printf ("kernel_image=%s", val));
g_autofree char *index_suffix = NULL;
if (i == 0)
index_suffix = g_strdup ("");
else
index_suffix = g_strdup_printf ("%d", i+1);
config = boot_loader_configs->pdata[i];

val = ostree_bootconfig_parser_get (config, "linux");
if (!val)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"No \"linux\" key in bootloader config");
return FALSE;
}
g_ptr_array_add (new_lines, g_strdup_printf ("kernel_image%s=%s", index_suffix, val));

val = ostree_bootconfig_parser_get (config, "initrd");
if (val)
g_ptr_array_add (new_lines, g_strdup_printf ("ramdisk_image=%s", val));
val = ostree_bootconfig_parser_get (config, "initrd");
if (val)
g_ptr_array_add (new_lines, g_strdup_printf ("ramdisk_image%s=%s", index_suffix, val));

val = ostree_bootconfig_parser_get (config, "options");
if (val)
{
g_ptr_array_add (new_lines, g_strdup_printf ("bootargs=%s", val));
if (!append_system_uenv (self, val, new_lines, cancellable, error))
return FALSE;
val = ostree_bootconfig_parser_get (config, "options");
if (val)
{
g_ptr_array_add (new_lines, g_strdup_printf ("bootargs%s=%s", index_suffix, val));
if (i == 0)
if (!append_system_uenv (self, val, new_lines, cancellable, error))
return FALSE;
}
}

return TRUE;
Expand Down
2 changes: 2 additions & 0 deletions tests/test-admin-deploy-uboot.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,7 @@ ${CMD_PREFIX} ostree --repo=testos-repo commit --tree=dir=osdata/ -b testos/buil
${CMD_PREFIX} ostree admin upgrade --os=testos
assert_file_has_content sysroot/boot/uEnv.txt "loadfdt="
assert_file_has_content sysroot/boot/uEnv.txt "kernel_image="
assert_file_has_content sysroot/boot/uEnv.txt "kernel_image2="
assert_file_has_content sysroot/boot/uEnv.txt "kernel_image3="

echo "ok merging uEnv.txt files"

0 comments on commit 7ff4394

Please sign in to comment.