[U-Boot] [PATCH 6/7] pxe: parse initrd file from append string

Rob Herring robherring2 at gmail.com
Wed Mar 28 17:51:37 CEST 2012


From: Rob Herring <rob.herring at calxeda.com>

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 at calxeda.com>
---
 common/cmd_pxe.c |   15 ++++++++++++++-
 doc/README.pxe   |    3 ---
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c
index ac1bc56..4ad067a 100644
--- a/common/cmd_pxe.c
+++ b/common/cmd_pxe.c
@@ -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)
 {
 	struct token t;
+	int len;
 	char *s = *c;
 	struct pxe_label *label;
 	int err;
@@ -1033,10 +1034,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 95cd9b9..2bbf53d 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.
 
-- 
1.7.5.4



More information about the U-Boot mailing list