bootstd: Rename distro and syslinux to extlinux

We use the terms 'distro' to mean extlinux but they are not really the
same. 'Distro' could refer to any method of booting a distribution,
whereas extlinux is a particular method.

Also we sometimes use syslinux, but it is better to use the same term in
all cases.

Rename distro to syslinux and also update bootstd uses of syslinux to use
extlinux instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2023-05-10 16:34:46 -06:00 committed by Tom Rini
parent c889434845
commit 79f663515a
18 changed files with 136 additions and 126 deletions

View file

@ -86,8 +86,8 @@
filename-prefixes = "/", "/boot/"; filename-prefixes = "/", "/boot/";
bootdev-order = "mmc2", "mmc1"; bootdev-order = "mmc2", "mmc1";
syslinux { extlinux {
compatible = "u-boot,distro-syslinux"; compatible = "u-boot,extlinux";
}; };
efi { efi {

View file

@ -462,25 +462,33 @@ config BOOTMETH_GLOBAL
EFI bootmgr, since they take full control over which bootdevs are EFI bootmgr, since they take full control over which bootdevs are
selected to boot. selected to boot.
config BOOTMETH_DISTRO config BOOTMETH_EXTLINUX
bool "Bootdev support for distro boot" bool "Bootdev support for extlinux boot"
select PXE_UTILS select PXE_UTILS
default y default y
help help
Enables support for distro boot using bootdevs. This makes the Enables support for extlinux boot using bootdevs. This makes the
bootdevs look for a 'extlinux/extlinux.conf' on each filesystem bootdevs look for a 'extlinux/extlinux.conf' on each filesystem
they scan. they scan.
The specification for this filed is here:
https://uapi-group.org/specifications/specs/boot_loader_specification/
This provides a way to try out standard boot on an existing boot flow. This provides a way to try out standard boot on an existing boot flow.
config BOOTMETH_DISTRO_PXE config BOOTMETH_EXTLINUX_PXE
bool "Bootdev support for distro boot over network" bool "Bootdev support for extlinux boot over network"
depends on CMD_PXE && CMD_NET && DM_ETH depends on CMD_PXE && CMD_NET && DM_ETH
default y default y
help help
Enables support for distro boot using bootdevs. This makes the Enables support for extlinux boot using bootdevs. This makes the
bootdevs look for a 'extlinux/extlinux.conf' on the tftp server. bootdevs look for a 'extlinux/extlinux.conf' on the tftp server.
The specification for this file is here:
https://uapi-group.org/specifications/specs/boot_loader_specification/
This provides a way to try out standard boot on an existing boot flow. This provides a way to try out standard boot on an existing boot flow.
config BOOTMETH_EFILOADER config BOOTMETH_EFILOADER

View file

@ -24,8 +24,8 @@ obj-$(CONFIG_$(SPL_TPL_)BOOTSTD) += bootflow.o
obj-$(CONFIG_$(SPL_TPL_)BOOTSTD) += bootmeth-uclass.o obj-$(CONFIG_$(SPL_TPL_)BOOTSTD) += bootmeth-uclass.o
obj-$(CONFIG_$(SPL_TPL_)BOOTSTD) += bootstd-uclass.o obj-$(CONFIG_$(SPL_TPL_)BOOTSTD) += bootstd-uclass.o
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_DISTRO) += bootmeth_distro.o obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_EXTLINUX) += bootmeth_extlinux.o
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_DISTRO_PXE) += bootmeth_pxe.o obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_EXTLINUX_PXE) += bootmeth_pxe.o
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_EFILOADER) += bootmeth_efi.o obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_EFILOADER) += bootmeth_efi.o
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_SANDBOX) += bootmeth_sandbox.o obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_SANDBOX) += bootmeth_sandbox.o
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_SCRIPT) += bootmeth_script.o obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_SCRIPT) += bootmeth_script.o

View file

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* Bootmethod for distro boot (syslinux boot from a block device) * Bootmethod for extlinux boot from a block device
* *
* Copyright 2021 Google LLC * Copyright 2021 Google LLC
* Written by Simon Glass <sjg@chromium.org> * Written by Simon Glass <sjg@chromium.org>
@ -14,15 +14,15 @@
#include <bootmeth.h> #include <bootmeth.h>
#include <bootstd.h> #include <bootstd.h>
#include <command.h> #include <command.h>
#include <distro.h>
#include <dm.h> #include <dm.h>
#include <extlinux.h>
#include <fs.h> #include <fs.h>
#include <malloc.h> #include <malloc.h>
#include <mapmem.h> #include <mapmem.h>
#include <mmc.h> #include <mmc.h>
#include <pxe_utils.h> #include <pxe_utils.h>
static int distro_get_state_desc(struct udevice *dev, char *buf, int maxsize) static int extlinux_get_state_desc(struct udevice *dev, char *buf, int maxsize)
{ {
if (IS_ENABLED(CONFIG_SANDBOX)) { if (IS_ENABLED(CONFIG_SANDBOX)) {
int len; int len;
@ -35,10 +35,10 @@ static int distro_get_state_desc(struct udevice *dev, char *buf, int maxsize)
return 0; return 0;
} }
static int distro_getfile(struct pxe_context *ctx, const char *file_path, static int extlinux_getfile(struct pxe_context *ctx, const char *file_path,
char *file_addr, ulong *sizep) char *file_addr, ulong *sizep)
{ {
struct distro_info *info = ctx->userdata; struct extlinux_info *info = ctx->userdata;
ulong addr; ulong addr;
int ret; int ret;
@ -54,7 +54,7 @@ static int distro_getfile(struct pxe_context *ctx, const char *file_path,
return 0; return 0;
} }
static int distro_check(struct udevice *dev, struct bootflow_iter *iter) static int extlinux_check(struct udevice *dev, struct bootflow_iter *iter)
{ {
int ret; int ret;
@ -67,12 +67,12 @@ static int distro_check(struct udevice *dev, struct bootflow_iter *iter)
} }
/** /**
* distro_fill_info() - Decode the extlinux file to find out distro info * extlinux_fill_info() - Decode the extlinux file to find out its info
* *
* @bflow: Bootflow to process * @bflow: Bootflow to process
* @return 0 if OK, -ve on error * @return 0 if OK, -ve on error
*/ */
static int distro_fill_info(struct bootflow *bflow) static int extlinux_fill_info(struct bootflow *bflow)
{ {
struct membuff mb; struct membuff mb;
char line[200]; char line[200];
@ -98,7 +98,7 @@ static int distro_fill_info(struct bootflow *bflow)
return 0; return 0;
} }
static int distro_read_bootflow(struct udevice *dev, struct bootflow *bflow) static int extlinux_read_bootflow(struct udevice *dev, struct bootflow *bflow)
{ {
struct blk_desc *desc; struct blk_desc *desc;
const char *const *prefixes; const char *const *prefixes;
@ -121,7 +121,7 @@ static int distro_read_bootflow(struct udevice *dev, struct bootflow *bflow)
do { do {
prefix = prefixes ? prefixes[i] : NULL; prefix = prefixes ? prefixes[i] : NULL;
ret = bootmeth_try_file(bflow, desc, prefix, DISTRO_FNAME); ret = bootmeth_try_file(bflow, desc, prefix, EXTLINUX_FNAME);
} while (ret && prefixes && prefixes[++i]); } while (ret && prefixes && prefixes[++i]);
if (ret) if (ret)
return log_msg_ret("try", ret); return log_msg_ret("try", ret);
@ -131,25 +131,25 @@ static int distro_read_bootflow(struct udevice *dev, struct bootflow *bflow)
if (ret) if (ret)
return log_msg_ret("read", ret); return log_msg_ret("read", ret);
ret = distro_fill_info(bflow); ret = extlinux_fill_info(bflow);
if (ret) if (ret)
return log_msg_ret("inf", ret); return log_msg_ret("inf", ret);
return 0; return 0;
} }
static int distro_boot(struct udevice *dev, struct bootflow *bflow) static int extlinux_boot(struct udevice *dev, struct bootflow *bflow)
{ {
struct cmd_tbl cmdtp = {}; /* dummy */ struct cmd_tbl cmdtp = {}; /* dummy */
struct pxe_context ctx; struct pxe_context ctx;
struct distro_info info; struct extlinux_info info;
ulong addr; ulong addr;
int ret; int ret;
addr = map_to_sysmem(bflow->buf); addr = map_to_sysmem(bflow->buf);
info.dev = dev; info.dev = dev;
info.bflow = bflow; info.bflow = bflow;
ret = pxe_setup_ctx(&ctx, &cmdtp, distro_getfile, &info, true, ret = pxe_setup_ctx(&ctx, &cmdtp, extlinux_getfile, &info, true,
bflow->subdir, false); bflow->subdir, false);
if (ret) if (ret)
return log_msg_ret("ctx", -EINVAL); return log_msg_ret("ctx", -EINVAL);
@ -161,33 +161,33 @@ static int distro_boot(struct udevice *dev, struct bootflow *bflow)
return 0; return 0;
} }
static int distro_bootmeth_bind(struct udevice *dev) static int extlinux_bootmeth_bind(struct udevice *dev)
{ {
struct bootmeth_uc_plat *plat = dev_get_uclass_plat(dev); struct bootmeth_uc_plat *plat = dev_get_uclass_plat(dev);
plat->desc = IS_ENABLED(CONFIG_BOOTSTD_FULL) ? plat->desc = IS_ENABLED(CONFIG_BOOTSTD_FULL) ?
"Syslinux boot from a block device" : "syslinux"; "Extlinux boot from a block device" : "extlinux";
return 0; return 0;
} }
static struct bootmeth_ops distro_bootmeth_ops = { static struct bootmeth_ops extlinux_bootmeth_ops = {
.get_state_desc = distro_get_state_desc, .get_state_desc = extlinux_get_state_desc,
.check = distro_check, .check = extlinux_check,
.read_bootflow = distro_read_bootflow, .read_bootflow = extlinux_read_bootflow,
.read_file = bootmeth_common_read_file, .read_file = bootmeth_common_read_file,
.boot = distro_boot, .boot = extlinux_boot,
}; };
static const struct udevice_id distro_bootmeth_ids[] = { static const struct udevice_id extlinux_bootmeth_ids[] = {
{ .compatible = "u-boot,distro-syslinux" }, { .compatible = "u-boot,extlinux" },
{ } { }
}; };
U_BOOT_DRIVER(bootmeth_distro) = { U_BOOT_DRIVER(bootmeth_extlinux) = {
.name = "bootmeth_distro", .name = "bootmeth_extlinux",
.id = UCLASS_BOOTMETH, .id = UCLASS_BOOTMETH,
.of_match = distro_bootmeth_ids, .of_match = extlinux_bootmeth_ids,
.ops = &distro_bootmeth_ops, .ops = &extlinux_bootmeth_ops,
.bind = distro_bootmeth_bind, .bind = extlinux_bootmeth_bind,
}; };

View file

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* Bootmethod for distro boot using PXE (network boot) * Bootmethod for extlinux boot using PXE (network boot)
* *
* Copyright 2021 Google LLC * Copyright 2021 Google LLC
* Written by Simon Glass <sjg@chromium.org> * Written by Simon Glass <sjg@chromium.org>
@ -13,8 +13,8 @@
#include <bootflow.h> #include <bootflow.h>
#include <bootmeth.h> #include <bootmeth.h>
#include <command.h> #include <command.h>
#include <distro.h>
#include <dm.h> #include <dm.h>
#include <extlinux.h>
#include <fs.h> #include <fs.h>
#include <log.h> #include <log.h>
#include <malloc.h> #include <malloc.h>
@ -23,10 +23,10 @@
#include <net.h> #include <net.h>
#include <pxe_utils.h> #include <pxe_utils.h>
static int distro_pxe_getfile(struct pxe_context *ctx, const char *file_path, static int extlinux_pxe_getfile(struct pxe_context *ctx, const char *file_path,
char *file_addr, ulong *sizep) char *file_addr, ulong *sizep)
{ {
struct distro_info *info = ctx->userdata; struct extlinux_info *info = ctx->userdata;
ulong addr; ulong addr;
int ret; int ret;
@ -39,7 +39,7 @@ static int distro_pxe_getfile(struct pxe_context *ctx, const char *file_path,
return 0; return 0;
} }
static int distro_pxe_check(struct udevice *dev, struct bootflow_iter *iter) static int extlinux_pxe_check(struct udevice *dev, struct bootflow_iter *iter)
{ {
int ret; int ret;
@ -54,7 +54,8 @@ static int distro_pxe_check(struct udevice *dev, struct bootflow_iter *iter)
return 0; return 0;
} }
static int distro_pxe_read_bootflow(struct udevice *dev, struct bootflow *bflow) static int extlinux_pxe_read_bootflow(struct udevice *dev,
struct bootflow *bflow)
{ {
const char *addr_str; const char *addr_str;
char fname[200]; char fname[200];
@ -90,7 +91,7 @@ static int distro_pxe_read_bootflow(struct udevice *dev, struct bootflow *bflow)
} }
} }
snprintf(fname, sizeof(fname), "%s%s", snprintf(fname, sizeof(fname), "%s%s",
bflow->subdir ? bflow->subdir : "", DISTRO_FNAME); bflow->subdir ? bflow->subdir : "", EXTLINUX_FNAME);
bflow->fname = strdup(fname); bflow->fname = strdup(fname);
if (!bflow->fname) if (!bflow->fname)
@ -108,8 +109,9 @@ static int distro_pxe_read_bootflow(struct udevice *dev, struct bootflow *bflow)
return 0; return 0;
} }
static int distro_pxe_read_file(struct udevice *dev, struct bootflow *bflow, static int extlinux_pxe_read_file(struct udevice *dev, struct bootflow *bflow,
const char *file_path, ulong addr, ulong *sizep) const char *file_path, ulong addr,
ulong *sizep)
{ {
char *tftp_argv[] = {"tftp", NULL, NULL, NULL}; char *tftp_argv[] = {"tftp", NULL, NULL, NULL};
struct pxe_context *ctx = dev_get_priv(dev); struct pxe_context *ctx = dev_get_priv(dev);
@ -133,11 +135,11 @@ static int distro_pxe_read_file(struct udevice *dev, struct bootflow *bflow,
return 0; return 0;
} }
static int distro_pxe_boot(struct udevice *dev, struct bootflow *bflow) static int extlinux_pxe_boot(struct udevice *dev, struct bootflow *bflow)
{ {
struct pxe_context *ctx = dev_get_priv(dev); struct pxe_context *ctx = dev_get_priv(dev);
struct cmd_tbl cmdtp = {}; /* dummy */ struct cmd_tbl cmdtp = {}; /* dummy */
struct distro_info info; struct extlinux_info info;
ulong addr; ulong addr;
int ret; int ret;
@ -145,7 +147,7 @@ static int distro_pxe_boot(struct udevice *dev, struct bootflow *bflow)
info.dev = dev; info.dev = dev;
info.bflow = bflow; info.bflow = bflow;
info.cmdtp = &cmdtp; info.cmdtp = &cmdtp;
ret = pxe_setup_ctx(ctx, &cmdtp, distro_pxe_getfile, &info, false, ret = pxe_setup_ctx(ctx, &cmdtp, extlinux_pxe_getfile, &info, false,
bflow->subdir, false); bflow->subdir, false);
if (ret) if (ret)
return log_msg_ret("ctx", -EINVAL); return log_msg_ret("ctx", -EINVAL);
@ -157,7 +159,7 @@ static int distro_pxe_boot(struct udevice *dev, struct bootflow *bflow)
return 0; return 0;
} }
static int distro_bootmeth_pxe_bind(struct udevice *dev) static int extlinux_bootmeth_pxe_bind(struct udevice *dev)
{ {
struct bootmeth_uc_plat *plat = dev_get_uclass_plat(dev); struct bootmeth_uc_plat *plat = dev_get_uclass_plat(dev);
@ -167,23 +169,23 @@ static int distro_bootmeth_pxe_bind(struct udevice *dev)
return 0; return 0;
} }
static struct bootmeth_ops distro_bootmeth_pxe_ops = { static struct bootmeth_ops extlinux_bootmeth_pxe_ops = {
.check = distro_pxe_check, .check = extlinux_pxe_check,
.read_bootflow = distro_pxe_read_bootflow, .read_bootflow = extlinux_pxe_read_bootflow,
.read_file = distro_pxe_read_file, .read_file = extlinux_pxe_read_file,
.boot = distro_pxe_boot, .boot = extlinux_pxe_boot,
}; };
static const struct udevice_id distro_bootmeth_pxe_ids[] = { static const struct udevice_id extlinux_bootmeth_pxe_ids[] = {
{ .compatible = "u-boot,distro-pxe" }, { .compatible = "u-boot,extlinux-pxe" },
{ } { }
}; };
U_BOOT_DRIVER(bootmeth_pxe) = { U_BOOT_DRIVER(bootmeth_pxe) = {
.name = "bootmeth_pxe", .name = "bootmeth_pxe",
.id = UCLASS_BOOTMETH, .id = UCLASS_BOOTMETH,
.of_match = distro_bootmeth_pxe_ids, .of_match = extlinux_bootmeth_pxe_ids,
.ops = &distro_bootmeth_pxe_ops, .ops = &extlinux_bootmeth_pxe_ops,
.bind = distro_bootmeth_pxe_bind, .bind = extlinux_bootmeth_pxe_bind,
.priv_auto = sizeof(struct pxe_context), .priv_auto = sizeof(struct pxe_context),
}; };

View file

@ -89,7 +89,7 @@ static struct bootmeth_ops qfw_bootmeth_ops = {
}; };
static const struct udevice_id qfw_bootmeth_ids[] = { static const struct udevice_id qfw_bootmeth_ids[] = {
{ .compatible = "u-boot,qfw-syslinux" }, { .compatible = "u-boot,qfw-extlinux" },
{ } { }
}; };

View file

@ -56,7 +56,7 @@ static struct bootmeth_ops sandbox_bootmeth_ops = {
}; };
static const struct udevice_id sandbox_bootmeth_ids[] = { static const struct udevice_id sandbox_bootmeth_ids[] = {
{ .compatible = "u-boot,sandbox-syslinux" }, { .compatible = "u-boot,sandbox-extlinux" },
{ } { }
}; };

View file

@ -154,7 +154,7 @@ bootmeths
This environment variable can be used to control the list of bootmeths used and This environment variable can be used to control the list of bootmeths used and
their ordering for example:: their ordering for example::
setenv bootmeths "syslinux efi" setenv bootmeths "extlinux efi"
Entries may be removed or re-ordered in this list to affect the order the Entries may be removed or re-ordered in this list to affect the order the
bootmeths are tried on each bootdev. If the variable is empty, the default bootmeths are tried on each bootdev. If the variable is empty, the default
@ -389,8 +389,8 @@ Configuration
------------- -------------
Standard boot is enabled with `CONFIG_BOOTSTD`. Each bootmeth has its own CONFIG Standard boot is enabled with `CONFIG_BOOTSTD`. Each bootmeth has its own CONFIG
option also. For example, `CONFIG_BOOTMETH_DISTRO` enables support for distro option also. For example, `CONFIG_BOOTMETH_EXTLINUX` enables support for
boot from a disk. booting from a disk using an `extlinux.conf` file.
To enable all feature sof standard boot, use `CONFIG_BOOTSTD_FULL`. This To enable all feature sof standard boot, use `CONFIG_BOOTSTD_FULL`. This
includes the full set of commands, more error messages when things go wrong and includes the full set of commands, more error messages when things go wrong and
@ -406,8 +406,8 @@ Available bootmeth drivers
Bootmeth drivers are provided for: Bootmeth drivers are provided for:
- distro boot from a disk (syslinux) - extlinux / syslinux boot from a disk
- distro boot from a network (PXE) - extlinux boot from a network (PXE)
- U-Boot scripts from disk, network or SPI flash - U-Boot scripts from disk, network or SPI flash
- EFI boot using bootefi from disk - EFI boot using bootefi from disk
- VBE - VBE
@ -683,8 +683,8 @@ This feature can be added as needed. Note that sandbox is a special case, since
in that case the host filesystem can be accessed even though the block device in that case the host filesystem can be accessed even though the block device
is NULL. is NULL.
If we take the example of the `bootmeth_distro` driver, this call ends up at If we take the example of the `bootmeth_extlinux` driver, this call ends up at
`distro_read_bootflow()`. It has the filesystem ready, so tries various `extlinux_read_bootflow()`. It has the filesystem ready, so tries various
filenames to try to find the `extlinux.conf` file, reading it if possible. If filenames to try to find the `extlinux.conf` file, reading it if possible. If
all goes well the bootflow ends up in the `BOOTFLOWST_READY` state. all goes well the bootflow ends up in the `BOOTFLOWST_READY` state.
@ -697,12 +697,12 @@ the `BOOTFLOWST_READY` state.
That is the basic operation of scanning for bootflows. The process of booting a That is the basic operation of scanning for bootflows. The process of booting a
bootflow is handled by the bootmeth driver for that bootflow. In the case of bootflow is handled by the bootmeth driver for that bootflow. In the case of
distro boot, this parses and processes the `extlinux.conf` file that was read. extlinux boot, this parses and processes the `extlinux.conf` file that was read.
See `distro_boot()` for how that works. The processing may involve reading See `extlinux_boot()` for how that works. The processing may involve reading
additional files, which is handled by the `read_file()` method, which is additional files, which is handled by the `read_file()` method, which is
`distro_read_file()` in this case. All bootmethds should support reading files, `extlinux_read_file()` in this case. All bootmethds should support reading
since the bootflow is typically only the basic instructions and does not include files, since the bootflow is typically only the basic instructions and does not
the operating system itself, ramdisk, device tree, etc. include the operating system itself, ramdisk, device tree, etc.
The vast majority of the bootstd code is concerned with iterating through The vast majority of the bootstd code is concerned with iterating through
partitions on bootdevs and using bootmethds to find bootflows. partitions on bootdevs and using bootmethds to find bootflows.

View file

@ -7,8 +7,8 @@ device (bootdev). These are normally created as children of the bootstd device.
Required properties: Required properties:
compatible: compatible:
"u-boot,distro-syslinux" - distro boot from a block device "u-boot,extlinux" - distro boot from a block device
"u-boot,distro-pxe" - distro boot from a network device "u-boot,extlinux-pxe" - distro boot from a network device
"u-boot,distro-efi" - EFI boot from an .efi file "u-boot,distro-efi" - EFI boot from an .efi file
"u-boot,efi-bootmgr" - EFI boot using boot manager (bootmgr) "u-boot,efi-bootmgr" - EFI boot using boot manager (bootmgr)
@ -21,8 +21,8 @@ Example:
filename-prefixes = "/", "/boot/"; filename-prefixes = "/", "/boot/";
bootdev-order = "mmc2", "mmc1"; bootdev-order = "mmc2", "mmc1";
syslinux { extlinux {
compatible = "u-boot,distro-syslinux"; compatible = "u-boot,extlinux";
}; };
efi { efi {

View file

@ -26,8 +26,8 @@ Example:
filename-prefixes = "/", "/boot/"; filename-prefixes = "/", "/boot/";
bootdev-order = "mmc2", "mmc1"; bootdev-order = "mmc2", "mmc1";
syslinux { extlinux {
compatible = "u-boot,distro-syslinux"; compatible = "u-boot,extlinux";
}; };
efi { efi {

View file

@ -148,7 +148,7 @@ Name mmc\@7e202000.bootdev.part_2
Device mmc\@7e202000.bootdev Device mmc\@7e202000.bootdev
Block dev mmc\@7e202000.blk Block dev mmc\@7e202000.blk
Type distro Type distro
Method: syslinux Method: extlinux
State ready State ready
Partition 2 Partition 2
Subdir (none) Subdir (none)

View file

@ -45,7 +45,7 @@ The format looks like this:
===== === ================== ================================= ===== === ================== =================================
Order Seq Name Description Order Seq Name Description
===== === ================== ================================= ===== === ================== =================================
0 0 distro Syslinux boot from a block device 0 0 extlinunx Extlinux boot from a block device
1 1 efi EFI boot from an .efi file 1 1 efi EFI boot from an .efi file
2 2 pxe PXE boot from a network device 2 2 pxe PXE boot from a network device
3 3 sandbox Sandbox boot for testing 3 3 sandbox Sandbox boot for testing
@ -77,7 +77,7 @@ This shows listing bootmeths. All are present and in the normal order::
=> bootmeth list => bootmeth list
Order Seq Name Description Order Seq Name Description
----- --- ------------------ ------------------ ----- --- ------------------ ------------------
0 0 distro Syslinux boot from a block device 0 0 distro Extlinux boot from a block device
1 1 efi EFI boot from an .efi file 1 1 efi EFI boot from an .efi file
2 2 pxe PXE boot from a network device 2 2 pxe PXE boot from a network device
3 3 sandbox Sandbox boot for testing 3 3 sandbox Sandbox boot for testing
@ -92,7 +92,7 @@ Now the order is changed, to include only two of them::
Order Seq Name Description Order Seq Name Description
----- --- ------------------ ------------------ ----- --- ------------------ ------------------
0 3 sandbox Sandbox boot for testing 0 3 sandbox Sandbox boot for testing
1 0 distro Syslinux boot from a block device 1 0 distro Extlinux boot from a block device
----- --- ------------------ ------------------ ----- --- ------------------ ------------------
(2 bootmeths) (2 bootmeths)
@ -102,7 +102,7 @@ which are not::
=> bootmeth list -a => bootmeth list -a
Order Seq Name Description Order Seq Name Description
----- --- ------------------ ------------------ ----- --- ------------------ ------------------
1 0 distro Syslinux boot from a block device 1 0 distro Extlinux boot from a block device
- 1 efi EFI boot from an .efi file - 1 efi EFI boot from an .efi file
- 2 pxe PXE boot from a network device - 2 pxe PXE boot from a network device
0 3 sandbox Sandbox boot for testing 0 3 sandbox Sandbox boot for testing

View file

@ -366,7 +366,7 @@ This example shows the abridged sandbox output::
.. ..
sysreset 0 [ ] sysreset_sandbox |-- sysreset_sandbox sysreset 0 [ ] sysreset_sandbox |-- sysreset_sandbox
bootstd 0 [ ] bootstd_drv |-- bootstd bootstd 0 [ ] bootstd_drv |-- bootstd
bootmeth 0 [ ] bootmeth_distro | |-- syslinux bootmeth 0 [ ] bootmeth_extlinux | |-- extlinux
bootmeth 1 [ ] bootmeth_efi | `-- efi bootmeth 1 [ ] bootmeth_efi | `-- efi
reboot-mod 0 [ ] reboot-mode-gpio |-- reboot-mode0 reboot-mod 0 [ ] reboot-mode-gpio |-- reboot-mode0
reboot-mod 1 [ ] reboot-mode-rtc |-- reboot-mode@14 reboot-mod 1 [ ] reboot-mode-rtc |-- reboot-mode@14

View file

@ -255,7 +255,7 @@ int bootmeth_setup_iter_order(struct bootflow_iter *iter, bool include_global);
* This selects the ordering to use for bootmeths * This selects the ordering to use for bootmeths
* *
* @order_str: String containing the ordering. This is a comma-separate list of * @order_str: String containing the ordering. This is a comma-separate list of
* bootmeth-device names, e.g. "syslinux,efi". If empty then a default ordering * bootmeth-device names, e.g. "extlinux,efi". If empty then a default ordering
* is used, based on the sequence number of devices (i.e. using aliases) * is used, based on the sequence number of devices (i.e. using aliases)
* Return: 0 if OK, -ENODEV if an unknown bootmeth is mentioned, -ENOMEM if * Return: 0 if OK, -ENODEV if an unknown bootmeth is mentioned, -ENOMEM if
* out of memory, -ENOENT if there are no bootmeth devices * out of memory, -ENOENT if there are no bootmeth devices

View file

@ -4,18 +4,18 @@
* Written by Simon Glass <sjg@chromium.org> * Written by Simon Glass <sjg@chromium.org>
*/ */
#ifndef __distro_h #ifndef __extlinux_h
#define __distro_h #define __extlinux_h
#define DISTRO_FNAME "extlinux/extlinux.conf" #define EXTLINUX_FNAME "extlinux/extlinux.conf"
/** /**
* struct distro_info - useful information for distro_getfile() * struct extlinux_info - useful information for extlinux_getfile()
* *
* @dev: bootmethod device being used to boot * @dev: bootmethod device being used to boot
* @bflow: bootflow being booted * @bflow: bootflow being booted
*/ */
struct distro_info { struct extlinux_info {
struct udevice *dev; struct udevice *dev;
struct bootflow *bflow; struct bootflow *bflow;
struct cmd_tbl *cmdtp; struct cmd_tbl *cmdtp;

View file

@ -13,8 +13,8 @@
#include <bootflow.h> #include <bootflow.h>
#include <command.h> #include <command.h>
#include <bootmeth.h> #include <bootmeth.h>
#include <distro.h>
#include <dm.h> #include <dm.h>
#include <extlinux.h>
#include <init.h> #include <init.h>
#include <log.h> #include <log.h>
#include <net.h> #include <net.h>
@ -36,7 +36,7 @@ static int eth_get_bootflow(struct udevice *dev, struct bootflow_iter *iter,
return log_msg_ret("check", ret); return log_msg_ret("check", ret);
/* /*
* Like distro boot, this assumes there is only one Ethernet device. * Like extlinux boot, this assumes there is only one Ethernet device.
* In this case, that means that @eth is ignored * In this case, that means that @eth is ignored
*/ */

View file

@ -57,7 +57,7 @@ static int bootflow_cmd(struct unit_test_state *uts)
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline("Scanning bootdev 'mmc2.bootdev':"); ut_assert_nextline("Scanning bootdev 'mmc2.bootdev':");
ut_assert_nextline("Scanning bootdev 'mmc1.bootdev':"); ut_assert_nextline("Scanning bootdev 'mmc1.bootdev':");
ut_assert_nextline(" 0 syslinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf"); ut_assert_nextline(" 0 extlinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf");
ut_assert_nextline("No more bootdevs"); ut_assert_nextline("No more bootdevs");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline("(1 bootflow, 1 valid)"); ut_assert_nextline("(1 bootflow, 1 valid)");
@ -67,7 +67,7 @@ static int bootflow_cmd(struct unit_test_state *uts)
ut_assert_nextline("Showing bootflows for bootdev 'mmc1.bootdev'"); ut_assert_nextline("Showing bootflows for bootdev 'mmc1.bootdev'");
ut_assert_nextline("Seq Method State Uclass Part Name Filename"); ut_assert_nextline("Seq Method State Uclass Part Name Filename");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline(" 0 syslinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf"); ut_assert_nextline(" 0 extlinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline("(1 bootflow, 1 valid)"); ut_assert_nextline("(1 bootflow, 1 valid)");
ut_assert_console_end(); ut_assert_console_end();
@ -136,7 +136,7 @@ static int bootflow_cmd_glob(struct unit_test_state *uts)
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline("Scanning bootdev 'mmc2.bootdev':"); ut_assert_nextline("Scanning bootdev 'mmc2.bootdev':");
ut_assert_nextline("Scanning bootdev 'mmc1.bootdev':"); ut_assert_nextline("Scanning bootdev 'mmc1.bootdev':");
ut_assert_nextline(" 0 syslinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf"); ut_assert_nextline(" 0 extlinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf");
ut_assert_nextline("Scanning bootdev 'mmc0.bootdev':"); ut_assert_nextline("Scanning bootdev 'mmc0.bootdev':");
ut_assert_nextline("No more bootdevs"); ut_assert_nextline("No more bootdevs");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
@ -147,7 +147,7 @@ static int bootflow_cmd_glob(struct unit_test_state *uts)
ut_assert_nextline("Showing all bootflows"); ut_assert_nextline("Showing all bootflows");
ut_assert_nextline("Seq Method State Uclass Part Name Filename"); ut_assert_nextline("Seq Method State Uclass Part Name Filename");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline(" 0 syslinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf"); ut_assert_nextline(" 0 extlinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline("(1 bootflow, 1 valid)"); ut_assert_nextline("(1 bootflow, 1 valid)");
ut_assert_console_end(); ut_assert_console_end();
@ -167,17 +167,17 @@ static int bootflow_cmd_scan_e(struct unit_test_state *uts)
ut_assert_nextline("Seq Method State Uclass Part Name Filename"); ut_assert_nextline("Seq Method State Uclass Part Name Filename");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline("Scanning bootdev 'mmc2.bootdev':"); ut_assert_nextline("Scanning bootdev 'mmc2.bootdev':");
ut_assert_nextline(" 0 syslinux media mmc 0 mmc2.bootdev.whole <NULL>"); ut_assert_nextline(" 0 extlinux media mmc 0 mmc2.bootdev.whole <NULL>");
ut_assert_nextline(" ** No partition found, err=-93: Protocol not supported"); ut_assert_nextline(" ** No partition found, err=-93: Protocol not supported");
ut_assert_nextline(" 1 efi media mmc 0 mmc2.bootdev.whole <NULL>"); ut_assert_nextline(" 1 efi media mmc 0 mmc2.bootdev.whole <NULL>");
ut_assert_nextline(" ** No partition found, err=-93: Protocol not supported"); ut_assert_nextline(" ** No partition found, err=-93: Protocol not supported");
ut_assert_nextline("Scanning bootdev 'mmc1.bootdev':"); ut_assert_nextline("Scanning bootdev 'mmc1.bootdev':");
ut_assert_nextline(" 2 syslinux media mmc 0 mmc1.bootdev.whole <NULL>"); ut_assert_nextline(" 2 extlinux media mmc 0 mmc1.bootdev.whole <NULL>");
ut_assert_nextline(" ** No partition found, err=-2: No such file or directory"); ut_assert_nextline(" ** No partition found, err=-2: No such file or directory");
ut_assert_nextline(" 3 efi media mmc 0 mmc1.bootdev.whole <NULL>"); ut_assert_nextline(" 3 efi media mmc 0 mmc1.bootdev.whole <NULL>");
ut_assert_nextline(" ** No partition found, err=-2: No such file or directory"); ut_assert_nextline(" ** No partition found, err=-2: No such file or directory");
ut_assert_nextline(" 4 syslinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf"); ut_assert_nextline(" 4 extlinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf");
ut_assert_nextline(" 5 efi fs mmc 1 mmc1.bootdev.part_1 efi/boot/bootsbox.efi"); ut_assert_nextline(" 5 efi fs mmc 1 mmc1.bootdev.part_1 efi/boot/bootsbox.efi");
ut_assert_skip_to_line("Scanning bootdev 'mmc0.bootdev':"); ut_assert_skip_to_line("Scanning bootdev 'mmc0.bootdev':");
@ -192,9 +192,9 @@ static int bootflow_cmd_scan_e(struct unit_test_state *uts)
ut_assert_nextline("Showing all bootflows"); ut_assert_nextline("Showing all bootflows");
ut_assert_nextline("Seq Method State Uclass Part Name Filename"); ut_assert_nextline("Seq Method State Uclass Part Name Filename");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline(" 0 syslinux media mmc 0 mmc2.bootdev.whole <NULL>"); ut_assert_nextline(" 0 extlinux media mmc 0 mmc2.bootdev.whole <NULL>");
ut_assert_nextline(" 1 efi media mmc 0 mmc2.bootdev.whole <NULL>"); ut_assert_nextline(" 1 efi media mmc 0 mmc2.bootdev.whole <NULL>");
ut_assert_skip_to_line(" 4 syslinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf"); ut_assert_skip_to_line(" 4 extlinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf");
ut_assert_skip_to_line(" 3f efi media mmc 0 mmc0.bootdev.whole <NULL>"); ut_assert_skip_to_line(" 3f efi media mmc 0 mmc0.bootdev.whole <NULL>");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline("(64 bootflows, 1 valid)"); ut_assert_nextline("(64 bootflows, 1 valid)");
@ -218,7 +218,7 @@ static int bootflow_cmd_info(struct unit_test_state *uts)
ut_assert_nextline("Name: mmc1.bootdev.part_1"); ut_assert_nextline("Name: mmc1.bootdev.part_1");
ut_assert_nextline("Device: mmc1.bootdev"); ut_assert_nextline("Device: mmc1.bootdev");
ut_assert_nextline("Block dev: mmc1.blk"); ut_assert_nextline("Block dev: mmc1.blk");
ut_assert_nextline("Method: syslinux"); ut_assert_nextline("Method: extlinux");
ut_assert_nextline("State: ready"); ut_assert_nextline("State: ready");
ut_assert_nextline("Partition: 1"); ut_assert_nextline("Partition: 1");
ut_assert_nextline("Subdir: (none)"); ut_assert_nextline("Subdir: (none)");
@ -251,7 +251,7 @@ static int bootflow_scan_boot(struct unit_test_state *uts)
ut_assertok(inject_response(uts)); ut_assertok(inject_response(uts));
ut_assertok(run_command("bootflow scan -b", 0)); ut_assertok(run_command("bootflow scan -b", 0));
ut_assert_nextline( ut_assert_nextline(
"** Booting bootflow 'mmc1.bootdev.part_1' with syslinux"); "** Booting bootflow 'mmc1.bootdev.part_1' with extlinux");
ut_assert_nextline("Ignoring unknown command: ui"); ut_assert_nextline("Ignoring unknown command: ui");
/* /*
@ -282,7 +282,7 @@ static int bootflow_iter(struct unit_test_state *uts)
ut_asserteq(0, iter.cur_method); ut_asserteq(0, iter.cur_method);
ut_asserteq(0, iter.part); ut_asserteq(0, iter.part);
ut_asserteq(0, iter.max_part); ut_asserteq(0, iter.max_part);
ut_asserteq_str("syslinux", iter.method->name); ut_asserteq_str("extlinux", iter.method->name);
ut_asserteq(0, bflow.err); ut_asserteq(0, bflow.err);
/* /*
@ -309,7 +309,7 @@ static int bootflow_iter(struct unit_test_state *uts)
ut_asserteq(0, iter.cur_method); ut_asserteq(0, iter.cur_method);
ut_asserteq(0, iter.part); ut_asserteq(0, iter.part);
ut_asserteq(0x1e, iter.max_part); ut_asserteq(0x1e, iter.max_part);
ut_asserteq_str("syslinux", iter.method->name); ut_asserteq_str("extlinux", iter.method->name);
ut_asserteq(0, bflow.err); ut_asserteq(0, bflow.err);
ut_asserteq(BOOTFLOWST_MEDIA, bflow.state); ut_asserteq(BOOTFLOWST_MEDIA, bflow.state);
bootflow_free(&bflow); bootflow_free(&bflow);
@ -330,7 +330,7 @@ static int bootflow_iter(struct unit_test_state *uts)
ut_asserteq(0, iter.cur_method); ut_asserteq(0, iter.cur_method);
ut_asserteq(1, iter.part); ut_asserteq(1, iter.part);
ut_asserteq(0x1e, iter.max_part); ut_asserteq(0x1e, iter.max_part);
ut_asserteq_str("syslinux", iter.method->name); ut_asserteq_str("extlinux", iter.method->name);
ut_asserteq(0, bflow.err); ut_asserteq(0, bflow.err);
ut_asserteq(BOOTFLOWST_READY, bflow.state); ut_asserteq(BOOTFLOWST_READY, bflow.state);
bootflow_free(&bflow); bootflow_free(&bflow);
@ -351,7 +351,7 @@ static int bootflow_iter(struct unit_test_state *uts)
ut_asserteq(0, iter.cur_method); ut_asserteq(0, iter.cur_method);
ut_asserteq(2, iter.part); ut_asserteq(2, iter.part);
ut_asserteq(0x1e, iter.max_part); ut_asserteq(0x1e, iter.max_part);
ut_asserteq_str("syslinux", iter.method->name); ut_asserteq_str("extlinux", iter.method->name);
ut_asserteq(0, bflow.err); ut_asserteq(0, bflow.err);
ut_asserteq(BOOTFLOWST_MEDIA, bflow.state); ut_asserteq(BOOTFLOWST_MEDIA, bflow.state);
bootflow_free(&bflow); bootflow_free(&bflow);
@ -489,7 +489,7 @@ static int bootflow_cmd_boot(struct unit_test_state *uts)
ut_assertok(inject_response(uts)); ut_assertok(inject_response(uts));
ut_asserteq(1, run_command("bootflow boot", 0)); ut_asserteq(1, run_command("bootflow boot", 0));
ut_assert_nextline( ut_assert_nextline(
"** Booting bootflow 'mmc1.bootdev.part_1' with syslinux"); "** Booting bootflow 'mmc1.bootdev.part_1' with extlinux");
ut_assert_nextline("Ignoring unknown command: ui"); ut_assert_nextline("Ignoring unknown command: ui");
/* /*
@ -614,7 +614,7 @@ static int bootflow_cmd_hunt_label(struct unit_test_state *uts)
ut_assert_nextline("Scanning bootdev 'mmc2.bootdev':"); ut_assert_nextline("Scanning bootdev 'mmc2.bootdev':");
ut_assert_nextline("Scanning bootdev 'mmc1.bootdev':"); ut_assert_nextline("Scanning bootdev 'mmc1.bootdev':");
ut_assert_nextline( ut_assert_nextline(
" 0 syslinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf"); " 0 extlinux ready mmc 1 mmc1.bootdev.part_1 /extlinux/extlinux.conf");
ut_assert_nextline("Scanning bootdev 'mmc0.bootdev':"); ut_assert_nextline("Scanning bootdev 'mmc0.bootdev':");
ut_assert_skip_to_line("(1 bootflow, 1 valid)"); ut_assert_skip_to_line("(1 bootflow, 1 valid)");
ut_assert_console_end(); ut_assert_console_end();

View file

@ -21,7 +21,7 @@ static int bootmeth_cmd_list(struct unit_test_state *uts)
ut_assertok(run_command("bootmeth list", 0)); ut_assertok(run_command("bootmeth list", 0));
ut_assert_nextline("Order Seq Name Description"); ut_assert_nextline("Order Seq Name Description");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline(" 0 0 syslinux Syslinux boot from a block device"); ut_assert_nextline(" 0 0 extlinux Extlinux boot from a block device");
ut_assert_nextline(" 1 1 efi EFI boot from an .efi file"); ut_assert_nextline(" 1 1 efi EFI boot from an .efi file");
if (IS_ENABLED(CONFIG_BOOTMETH_GLOBAL)) if (IS_ENABLED(CONFIG_BOOTMETH_GLOBAL))
ut_assert_nextline(" glob 2 firmware0 VBE simple"); ut_assert_nextline(" glob 2 firmware0 VBE simple");
@ -39,16 +39,16 @@ static int bootmeth_cmd_order(struct unit_test_state *uts)
{ {
/* Select just one bootmethod */ /* Select just one bootmethod */
console_record_reset_enable(); console_record_reset_enable();
ut_assertok(run_command("bootmeth order syslinux", 0)); ut_assertok(run_command("bootmeth order extlinux", 0));
ut_assert_console_end(); ut_assert_console_end();
ut_assertnonnull(env_get("bootmeths")); ut_assertnonnull(env_get("bootmeths"));
ut_asserteq_str("syslinux", env_get("bootmeths")); ut_asserteq_str("extlinux", env_get("bootmeths"));
/* Only that one should be listed */ /* Only that one should be listed */
ut_assertok(run_command("bootmeth list", 0)); ut_assertok(run_command("bootmeth list", 0));
ut_assert_nextline("Order Seq Name Description"); ut_assert_nextline("Order Seq Name Description");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline(" 0 0 syslinux Syslinux boot from a block device"); ut_assert_nextline(" 0 0 extlinux Extlinux boot from a block device");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline("(1 bootmeth)"); ut_assert_nextline("(1 bootmeth)");
ut_assert_console_end(); ut_assert_console_end();
@ -57,7 +57,7 @@ static int bootmeth_cmd_order(struct unit_test_state *uts)
ut_assertok(run_command("bootmeth list -a", 0)); ut_assertok(run_command("bootmeth list -a", 0));
ut_assert_nextline("Order Seq Name Description"); ut_assert_nextline("Order Seq Name Description");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline(" 0 0 syslinux Syslinux boot from a block device"); ut_assert_nextline(" 0 0 extlinux Extlinux boot from a block device");
ut_assert_nextline(" - 1 efi EFI boot from an .efi file"); ut_assert_nextline(" - 1 efi EFI boot from an .efi file");
if (IS_ENABLED(CONFIG_BOOTMETH_GLOBAL)) if (IS_ENABLED(CONFIG_BOOTMETH_GLOBAL))
ut_assert_nextline(" glob 2 firmware0 VBE simple"); ut_assert_nextline(" glob 2 firmware0 VBE simple");
@ -67,12 +67,12 @@ static int bootmeth_cmd_order(struct unit_test_state *uts)
ut_assert_console_end(); ut_assert_console_end();
/* Check the -a flag with the reverse order */ /* Check the -a flag with the reverse order */
ut_assertok(run_command("bootmeth order \"efi syslinux\"", 0)); ut_assertok(run_command("bootmeth order \"efi extlinux\"", 0));
ut_assert_console_end(); ut_assert_console_end();
ut_assertok(run_command("bootmeth list -a", 0)); ut_assertok(run_command("bootmeth list -a", 0));
ut_assert_nextline("Order Seq Name Description"); ut_assert_nextline("Order Seq Name Description");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline(" 1 0 syslinux Syslinux boot from a block device"); ut_assert_nextline(" 1 0 extlinux Extlinux boot from a block device");
ut_assert_nextline(" 0 1 efi EFI boot from an .efi file"); ut_assert_nextline(" 0 1 efi EFI boot from an .efi file");
if (IS_ENABLED(CONFIG_BOOTMETH_GLOBAL)) if (IS_ENABLED(CONFIG_BOOTMETH_GLOBAL))
ut_assert_nextline(" glob 2 firmware0 VBE simple"); ut_assert_nextline(" glob 2 firmware0 VBE simple");
@ -90,17 +90,17 @@ static int bootmeth_cmd_order(struct unit_test_state *uts)
"(3 bootmeths)" : "(2 bootmeths)"); "(3 bootmeths)" : "(2 bootmeths)");
/* Try reverse order */ /* Try reverse order */
ut_assertok(run_command("bootmeth order \"efi syslinux\"", 0)); ut_assertok(run_command("bootmeth order \"efi extlinux\"", 0));
ut_assert_console_end(); ut_assert_console_end();
ut_assertok(run_command("bootmeth list", 0)); ut_assertok(run_command("bootmeth list", 0));
ut_assert_nextline("Order Seq Name Description"); ut_assert_nextline("Order Seq Name Description");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline(" 0 1 efi EFI boot from an .efi file"); ut_assert_nextline(" 0 1 efi EFI boot from an .efi file");
ut_assert_nextline(" 1 0 syslinux Syslinux boot from a block device"); ut_assert_nextline(" 1 0 extlinux Extlinux boot from a block device");
ut_assert_nextlinen("---"); ut_assert_nextlinen("---");
ut_assert_nextline("(2 bootmeths)"); ut_assert_nextline("(2 bootmeths)");
ut_assertnonnull(env_get("bootmeths")); ut_assertnonnull(env_get("bootmeths"));
ut_asserteq_str("efi syslinux", env_get("bootmeths")); ut_asserteq_str("efi extlinux", env_get("bootmeths"));
ut_assert_console_end(); ut_assert_console_end();
return 0; return 0;
@ -140,7 +140,7 @@ static int bootmeth_env(struct unit_test_state *uts)
/* Select just one bootmethod */ /* Select just one bootmethod */
console_record_reset_enable(); console_record_reset_enable();
ut_assertok(env_set("bootmeths", "syslinux")); ut_assertok(env_set("bootmeths", "extlinux"));
ut_asserteq(1, std->bootmeth_count); ut_asserteq(1, std->bootmeth_count);
/* Select an invalid bootmethod */ /* Select an invalid bootmethod */
@ -149,7 +149,7 @@ static int bootmeth_env(struct unit_test_state *uts)
ut_assert_nextlinen("## Error inserting"); ut_assert_nextlinen("## Error inserting");
ut_assert_console_end(); ut_assert_console_end();
ut_assertok(env_set("bootmeths", "efi syslinux")); ut_assertok(env_set("bootmeths", "efi extlinux"));
ut_asserteq(2, std->bootmeth_count); ut_asserteq(2, std->bootmeth_count);
ut_assert_console_end(); ut_assert_console_end();