Am 13.09.2009 um 12:21 schrieb Marc Balmer:
pxeboot_ia32.bin tries to boot 'netbsd' by default, which fails in mostcases. It does not make sense imo to try booting a local kernel whenbooting the machine via PXE. I suggest that when we boot using PXE, wedefault to loading 'tftp:netbsd' instead.
I discussed this off-list with Jared McNeill and we think a good strategy to decide where to boot from would be to look at what the DHCP server sends us:
- If we get an option root-path, we assume nfs, read boot.cfg from nfs and then boot the kernel from nfs.
- Otherwise we assume tftp, read boot.cfg using tftp and boot the kernel using tftp. We don't set a root filesystem path and assume the booted kernel has the root filesystem on a ramdisk (e.g. an installer).
Jared also suggested using option extensions-path to define where to get boot.cfg from.
Of course prefixing a kernel name with a load method ("tftp:", "nfs:") would still be possible, to override the sane default ;)
The goal is to have a pxebooter with sane defaults that work out of the box, but not break existing setups.
That said, there will be a better patch eventually.
Comments? ok?
Index: sys/arch/i386/stand/pxeboot/main.c
===================================================================
RCS file: /cvsroot/src/sys/arch/i386/stand/pxeboot/main.c,v
retrieving revision 1.20
diff -u -p -r1.20 main.c
--- sys/arch/i386/stand/pxeboot/main.c 21 Mar 2009 15:01:56 -0000 1.20
+++ sys/arch/i386/stand/pxeboot/main.c 13 Sep 2009 10:14:54 -0000
@@ -146,7 +146,7 @@ main(void)
#endif
printf("Press return to boot now, any other key for boot menu\n");
- printf("booting netbsd - starting in ");
+ printf("booting tftp:netbsd - starting in ");
#ifdef SMALL
c = awaitkey(boot_params.bp_timeout, 1);
@@ -164,7 +164,7 @@ main(void)
* 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);
+ bootit("tftp:netbsd", 0);
/*
* If that fails, let the BIOS try the next boot device.
--
Marc Balmer, Micro Systems, Wiesendamm 2a, Postfach, CH-4019 Basel,
Switzerland
http://www.msys.ch/ http://www.vnode.ch/ "In God we trust, in
C we code."