1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 08:42:12 +02:00

pxe: parse initrd file from append string

For syslinux, the initrd can be set in the append string as
"initrd=<file>", so try to find it there if we haven't already set the
initrd.

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
This commit is contained in:
Rob Herring
2012-03-28 05:51:37 +00:00
committed by Wolfgang Denk
parent 90ba7d7c44
commit 34bd23e42f
2 changed files with 14 additions and 4 deletions

View File

@@ -999,6 +999,7 @@ static int parse_label_menu(char **c, struct pxe_menu *cfg,
static int parse_label(char **c, struct pxe_menu *cfg) static int parse_label(char **c, struct pxe_menu *cfg)
{ {
struct token t; struct token t;
int len;
char *s = *c; char *s = *c;
struct pxe_label *label; struct pxe_label *label;
int err; int err;
@@ -1033,10 +1034,22 @@ static int parse_label(char **c, struct pxe_menu *cfg)
case T_APPEND: case T_APPEND:
err = parse_sliteral(c, &label->append); err = parse_sliteral(c, &label->append);
if (label->initrd)
break;
s = strstr(label->append, "initrd=");
if (!s)
break;
s += 7;
len = (int)(strchr(s, ' ') - s);
label->initrd = malloc(len + 1);
strncpy(label->initrd, s, len);
label->initrd[len] = '\0';
break; break;
case T_INITRD: case T_INITRD:
err = parse_sliteral(c, &label->initrd); if (!label->initrd)
err = parse_sliteral(c, &label->initrd);
break; break;
case T_LOCALBOOT: case T_LOCALBOOT:

View File

@@ -224,9 +224,6 @@ PXELINUX and U-boot's pxe support.
- U-boot's pxe expects U-boot uimg's as kernels. Anything that would work - U-boot's pxe expects U-boot uimg's as kernels. Anything that would work
with the 'bootm' command in U-boot could work with the 'pxe boot' command. with the 'bootm' command in U-boot could work with the 'pxe boot' command.
- U-boot's pxe doesn't recognize initrd options in the append command - you
must specify initrd files using the initrd command.
- U-boot's pxe only recognizes a single file on the initrd command line. It - U-boot's pxe only recognizes a single file on the initrd command line. It
could be extended to support multiple. could be extended to support multiple.