diff options
author | Rob Herring <rob.herring@calxeda.com> | 2012-03-28 05:51:37 +0000 |
---|---|---|
committer | John Rigby <john.rigby@linaro.org> | 2012-07-20 20:33:31 -0600 |
commit | 36f306c3239b195fadb2ee4e66ca4ab0f15a0b52 (patch) | |
tree | 134a12902a643223f29d0b260c0e3c0e8258f8b0 | |
parent | ae97aaf7d0837c69cc37f5fc3e3ff0ea0cf6d663 (diff) |
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>
-rw-r--r-- | common/cmd_pxe.c | 15 | ||||
-rw-r--r-- | doc/README.pxe | 3 |
2 files changed, 14 insertions, 4 deletions
diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c index b03fc5688..9e929717b 100644 --- a/common/cmd_pxe.c +++ b/common/cmd_pxe.c @@ -1002,6 +1002,7 @@ static int parse_label_menu(char **c, struct pxe_menu *cfg, static int parse_label(char **c, struct pxe_menu *cfg) { struct token t; + int len; char *s = *c; struct pxe_label *label; int err; @@ -1036,10 +1037,22 @@ static int parse_label(char **c, struct pxe_menu *cfg) case T_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; case T_INITRD: - err = parse_sliteral(c, &label->initrd); + if (!label->initrd) + err = parse_sliteral(c, &label->initrd); break; case T_LOCALBOOT: diff --git a/doc/README.pxe b/doc/README.pxe index 95cd9b90d..2bbf53d95 100644 --- a/doc/README.pxe +++ b/doc/README.pxe @@ -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 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 could be extended to support multiple. |