Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/sommerfeld_i386mp_1]: src/sys/arch/i386/stand * Rename the pxeboot binar...



details:   https://anonhg.NetBSD.org/src/rev/acde3d6b16b0
branches:  sommerfeld_i386mp_1
changeset: 482499:acde3d6b16b0
user:      thorpej <thorpej%NetBSD.org@localhost>
date:      Wed Feb 20 03:00:28 2002 +0000

description:
* Rename the pxeboot binary from "pxeboot" to "pxeboot_ia32", since
  there are other architectures (e.g. IA64) which also use PXE.
* Get the console right in pxeboot, from Andreas Gustafsson.
* Add a "com0" version of pxeboot, to address the same issue that
  biosboot_com0 addresses.

diffstat:

 sys/arch/i386/stand/pxeboot/Makefile      |   54 +++++++++
 sys/arch/i386/stand/pxeboot/main.c        |  171 ++++++++++++++++++++++++++++++
 sys/arch/i386/stand/pxeboot_com0/Makefile |    5 +
 3 files changed, 230 insertions(+), 0 deletions(-)

diffs (242 lines):

diff -r f8d4753bd42e -r acde3d6b16b0 sys/arch/i386/stand/pxeboot/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/pxeboot/Makefile      Wed Feb 20 03:00:28 2002 +0000
@@ -0,0 +1,54 @@
+#      $NetBSD: Makefile,v 1.3.2.2 2002/02/20 03:00:28 thorpej Exp $
+
+S=     ${.CURDIR}/../../../../
+
+BASE?= pxeboot_ia32
+PROG= ${BASE}.bin
+MKMAN= no
+NEWVERSWHAT=   "PXE Boot"
+STARTFILE=     ${PXESTART}
+RELOC=         0x0
+
+.if (${BASE} != "pxeboot_ia32")
+.PATH.c: ${.CURDIR}/../pxeboot
+.PATH.S: ${.CURDIR}/../pxeboot
+.endif
+
+SRCS= main.c dev_net.c devopen.c conf.c exec.c pxe.c pxe_call.S
+
+.if (${BASE} == "pxeboot_ia32")
+# Various serial line configurations
+CPPFLAGS+= -DSUPPORT_SERIAL=CONSDEV_PC -DDIRECT_SERIAL
+#      or
+#CPPFLAGS+= -DSUPPORT_SERIAL=CONSDEV_COM0KBD
+#      or
+#CPPFLAGS+= -DSUPPORT_SERIAL=CONSDEV_AUTO 
+#      and maybe 
+#CPPFLAGS+= -DDIRECT_SERIAL -DCOMCONS_KEYPRESS -DCONSPEED=57600
+.endif
+
+.if (${BASE} == "pxeboot_ia32_com0")
+CPPFLAGS+= -DSUPPORT_SERIAL=CONSDEV_COM0 -DDIRECT_SERIAL
+.endif
+
+CPPFLAGS+= -DSUPPORT_BOOTP -DSUPPORT_DHCP
+CPPFLAGS+= -DSUPPORT_TFTP
+CPPFLAGS+= -DSUPPORT_NFS
+
+CPPFLAGS+= -DPASS_MEMMAP
+
+#CFLAGS= -O2 -fomit-frame-pointer -fno-defer-pop
+CFLAGS+= -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-main
+
+SAMISCCPPFLAGS+= -DHEAP_START=0x10000 -DHEAP_LIMIT=0x30000
+SAMISCMAKEFLAGS+= SA_USE_CREAD=yes     # Read compressed kernels
+
+I386MISCMAKEFLAGS= I386_INCLUDE_DISK=no
+
+.if (${BASE} == "pxeboot_ia32")
+VERSIONFILE= ${.CURDIR}/version
+.else
+VERSIONFILE= ${.CURDIR}/../pxeboot/version
+.endif
+
+.include "../Makefile.booters"
diff -r f8d4753bd42e -r acde3d6b16b0 sys/arch/i386/stand/pxeboot/main.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/pxeboot/main.c        Wed Feb 20 03:00:28 2002 +0000
@@ -0,0 +1,171 @@
+/*     $NetBSD: main.c,v 1.4.2.2 2002/02/20 03:00:28 thorpej Exp $     */
+
+/*
+ * Copyright (c) 1996
+ *     Matthias Drochner.  All rights reserved.
+ * Copyright (c) 1996
+ *     Perry E. Metzger.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgements:
+ *     This product includes software developed for the NetBSD Project
+ *     by Matthias Drochner.
+ *     This product includes software developed for the NetBSD Project
+ *     by Perry E. Metzger.
+ * 4. The names of the authors may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <lib/libkern/libkern.h>
+
+#include <lib/libsa/stand.h>
+
+#include <libi386.h>
+#include "pxeboot.h"
+
+int errno;
+int debug;
+int try_bootp = 1;
+
+extern char    bootprog_name[], bootprog_rev[], bootprog_date[],
+               bootprog_maker[];
+
+#define TIMEOUT 5
+
+int    main(void);
+
+void   command_help __P((char *));
+void   command_quit __P((char *));
+void   command_boot __P((char *));
+
+const struct bootblk_command commands[] = {
+       { "help",       command_help },
+       { "?",          command_help },
+       { "quit",       command_quit },
+       { "boot",       command_boot },
+       { NULL,         NULL },
+};
+
+#ifdef COMPAT_OLDBOOT
+int
+parsebootfile(const char *fname, char **fsname, char **devname,
+    u_int *unit, u_int *partition, const char **file)
+{
+       return (EINVAL);
+}
+
+int 
+biosdisk_gettype(struct open_file *f)
+{
+       return (0);
+}
+#endif
+
+static int 
+bootit(const char *filename, int howto)
+{
+       if (exec_netbsd(filename, 0, howto) < 0)
+               printf("boot: %s\n", strerror(errno));
+       else
+               printf("boot returned\n");
+       return (-1);
+}
+
+static void
+print_banner(void)
+{
+       int base = getbasemem();
+       int ext = getextmem();
+
+       printf("\n"
+              ">> %s, Revision %s\n"
+              ">> (%s, %s)\n"
+              ">> Memory: %d/%d k\n",
+              bootprog_name, bootprog_rev,
+              bootprog_maker, bootprog_date,
+              base, ext);
+}
+
+int
+main(void)
+{
+        char c;
+
+#ifdef SUPPORT_SERIAL
+       initio(SUPPORT_SERIAL);
+#else
+       initio(CONSDEV_PC);
+#endif
+       gateA20();
+
+       print_banner();
+
+       printf("Press return to boot now, any other key for boot menu\n");
+       printf("Starting in ");
+
+       c = awaitkey(TIMEOUT, 1);
+       if ((c != '\r') && (c != '\n') && (c != '\0')) {
+               printf("type \"?\" or \"help\" for help.\n");
+               bootmenu();     /* does not return */
+       }
+
+       /*
+        * The file name provided here is just a default.  If the
+        * DHCP server provides a file name, we'll use that instead.
+        */
+       bootit("netbsd", 0);
+
+       /*
+        * If that fails, let the BIOS try the next boot device.
+        */
+       return (1);
+}
+
+/* ARGSUSED */
+void
+command_help(char *arg)
+{
+       printf("commands are:\n"
+              "boot [filename] [-adsqv]\n"
+              "     (ex. \"netbsd.old -s\"\n"
+              "help|?\n"
+              "quit\n");
+}
+
+/* ARGSUSED */
+void
+command_quit(char *arg)
+{
+       printf("Exiting... goodbye...\n");
+       exit(0);
+}
+
+void
+command_boot(char *arg)
+{
+       char *filename;
+       int howto;
+
+       if (parseboot(arg, &filename, &howto))
+               bootit(filename, howto);
+}
diff -r f8d4753bd42e -r acde3d6b16b0 sys/arch/i386/stand/pxeboot_com0/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/pxeboot_com0/Makefile Wed Feb 20 03:00:28 2002 +0000
@@ -0,0 +1,5 @@
+#      $NetBSD: Makefile,v 1.1.2.2 2002/02/20 03:00:28 thorpej Exp $
+
+BASE=  pxeboot_ia32_com0
+
+.include "../pxeboot/Makefile"



Home | Main Index | Thread Index | Old Index