bootstd: Read the Operating System name for distro/scripts

Add the concept of an OS name to the bootflow. This typically includes the
OS name, version and kernel version.

Implement this for the distro and script bootmeths so that it works with
Armbian and older version of Fedora.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2023-01-06 08:52:33 -06:00
committed by Tom Rini
parent 0e38bd848d
commit 2175e76a51
6 changed files with 76 additions and 0 deletions

View File

@@ -35,6 +35,36 @@ static int script_check(struct udevice *dev, struct bootflow_iter *iter)
return 0;
}
/**
* script_fill_info() - Decode the U-Boot script to find out distro info
*
* @bflow: Bootflow to process
* @return 0 if OK, -ve on error
*/
static int script_fill_info(struct bootflow *bflow)
{
char *name = NULL;
char *data;
uint len;
int ret;
log_debug("parsing bflow file size %x\n", bflow->size);
ret = image_locate_script(bflow->buf, bflow->size, NULL, NULL, &data, &len);
if (!ret) {
if (strstr(data, "armbianEnv"))
name = "Armbian";
}
if (name) {
bflow->os_name = strdup(name);
if (!bflow->os_name)
return log_msg_ret("os", -ENOMEM);
}
return 0;
}
static int script_read_bootflow(struct udevice *dev, struct bootflow *bflow)
{
struct blk_desc *desc = NULL;
@@ -75,6 +105,10 @@ static int script_read_bootflow(struct udevice *dev, struct bootflow *bflow)
if (ret)
return log_msg_ret("read", ret);
ret = script_fill_info(bflow);
if (ret)
return log_msg_ret("inf", ret);
return 0;
}