Home | History | Annotate | Download | only in pxeboot
History log of /src/sys/arch/i386/stand/pxeboot/main.c
RevisionDateAuthorComments
 1.35  06-May-2025  pgoyette Allow the dev= command when processing /boot.cfg file. This
addresses kern/59207
 1.34  10-Nov-2024  riastradh i386/pxeboot: Nix trailing whitespace.

No functional change intended.
 1.33  09-Nov-2024  mlelstv Support baudrate in consdev command.
 1.32  07-Sep-2021  nia Remove banner printing code from bootloaders, add it to libsa.

This harmonizes efiboot and the various x86 bootloaders to use shared
code for printing the banner. By friendly coincidence, it also adds
support for specifying 'banner=' in arm efiboot's boot.cfg, as on x86.
 1.31  28-Jun-2014  rtr patch posted to tech-kern@ 2014/06/25 for review with minor changes
resulting from feedback.

move multiple copies of code for parsing boot.cfg file from sparc, i386
and zaurus into libsa/bootcfg.{h,c}. largely retained i386 parsing logic
in addition to keeping sparc dispatch function while remaining consistent
with boot.cfg(5).

previous sparc64 file format has been obsoleted but only used by boot
CDs distrib/sparc64/bootfs/boot.cfg has been updated to compensate.

exported names have been prefixed with either BOOTCFG_ or bootcfg_ as per
feedback from christos@

tested on amd64 & sparc64 but not zaurus.
 1.30  06-Mar-2013  yamt branches: 1.30.10;
update help
 1.29  26-May-2011  uebayasi branches: 1.29.4; 1.29.14;
Support userconf(4) command in boot(8)/boot.cfg(5) on i386/amd64.

From jmmv@, no objections seen in the proposed thread:

http://mail-index.netbsd.org/tech-kern/2009/01/22/msg004081.html
 1.28  18-Mar-2011  jakllsch Honor bp_timeout even when X86_BP_FLAGS_NOBOOTCONF is set.
Or, in other words, bring back the 5 second countdown in pxeboot(8).
 1.27  20-Dec-2010  jakllsch branches: 1.27.2;
MI libsa provides panic() and exit() functions, no need to provide our own.
As MI libsa exit() calls panic() with a "exit" message, don't use it if we
print our own farewell or have already panic()ed.
 1.26  06-Nov-2010  jym Bring the help command output from boot and pxeboot on par with their
code.
 1.25  06-Apr-2010  tnn Add multiboot command. This lets us netboot the xen+dom0 kernel combo.
 1.24  17-Jan-2010  drochner branches: 1.24.2; 1.24.4;
Invert the flag bits to control module loading: rename
LOADMODULES->NOMODULES and READBOOTCONF->NOBOOTCONF.
This way, the default value (0) wired into old bootxx_* and installed
to file systems remains valid and we avoid problems on partial updates.
 1.23  14-Jan-2010  drochner On i386/amd64, define two flag bits in the boot parameters which control
whether modules are loaded and whether boot.cfg is evaluated, and
set both to "off" per default in the PXE bootloader.
Extend "installboot" to toggle the bits.
This way, pxeboot works with existing dhcp server setups (and as
described in the manpage) out of the box. Also, boot.cfg reading
involves a stat() call which is horribly inefficient with the
TFTP pseudo file system.
 1.22  13-Dec-2009  jakllsch Shut down the PXE network stack when we are done with it.

This fixes an issue where a CK804 nfe(4) would have a
byte-reversed MAC address after pxeboot(8).
 1.21  14-Sep-2009  jmcneill Don't commit the selected VBE mode until the loader is past the point of
no return; need to stick in text mode as long as possible since libsa does
not include a rasops library. While here, add the 'vesa' command to pxeboot
to mirror biosboot behaviour.
 1.20  21-Mar-2009  ad Fix 'boot -z' bogons.
 1.19  14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.18  30-Jan-2009  christos branches: 1.18.2;
don't clear the screen unconditionally. Now controlled by an option.
Thanks enami
 1.17  13-Dec-2008  christos add a boot.cfg option to clear the screen; default off. From Anon Ymous
 1.16  25-Nov-2008  ad Make pxeboot understand boot.cfg.
 1.15  26-Sep-2008  christos branches: 1.15.2;
The structure of our elf kernel is:

elf header/program headers/text/data/note/
section headers/symbol table/string table

We need to read the section headers first to find the offset of the note
and thus we requite backwards seek. The only reason we need to read the
note is to find the version of the kernel, and this seems not to be used
anywhere. We could potentially change the kernel ldscript to add the note
information in the program headers, but dealing with ldscripts is painful
and producing a more complex binary could break some dumb standalone loader.
So the simple solution is to just disable the note loading for floppies
which is what this patch does. If someone wants to fix it in a better way,
be my guest.
 1.14  15-Jul-2008  perry Change the x86 boot blocks so they don't include builder login and date.

For now, we include kernel revision as a way of allowing users to
notice that boot blocks have gotten very old, so the first line of the
printout looks like this (depending on the particular block):

>> NetBSD/x86 BIOS Boot, Revision 3.4 (from NetBSD 5.0)

This may be changed a bit pending feedback. (Some people think that
the kernel revision shouldn't be there at all, for example.)

Part of the project to assure that bit-identical sources produce
bit-identical release binaries.
 1.13  11-May-2008  chris branches: 1.13.2; 1.13.4;
Add support to pxeboot to allow the loading of modules. Changes to main.c
are taken from boot/boot2.c.

This allows an install to be started by running:
load tftp:miniroot.kmod
boot tftp:netbsd-GENERIC

Note that the change to dev_net.c to comment out the network shutdown,
suggests we need to hook the network shutdown in the the common exec code.
If the network is shutdown, it fails to reinitialise and so fails to load
the module.
 1.12  12-Feb-2008  joerg branches: 1.12.6; 1.12.8; 1.12.10; 1.12.12;
Garbage collect the remaining parts of COMPAT_OLDBOOT. The boot loader
support has been removed at least 4 years ago and NetBSD 1.3 is ancient.
 1.11  13-Nov-2005  dsl branches: 1.11.52; 1.11.58;
Pull the boot timeout for the boot_params header.
Allows it to be set to a very large number so the boot on Soekris systems
can be interrupted.
 1.10  11-Nov-2005  dsl Take the console (etc) parameters from the patchable header, instead of
hard-coded constants.
Now the updated installboot can be used to modify the console and baud rate.
 1.9  21-Aug-2005  chs add "consdev" from ../boot.
make "quit" work like it does in ../boot
(ie. let us try again with a bootloader from a different device).
 1.8  22-Jun-2005  dyoung branches: 1.8.2;
De-__P().

Consistently pass 'int *' arguments to parsebootfile.
 1.7  23-Jun-2003  martin branches: 1.7.2; 1.7.16;
Backout previous, this file is not affected by kernel options.
 1.6  23-Jun-2003  martin Make sure to include opt_foo.h if a defflag option FOO is used.
 1.5  11-Mar-2003  drochner kick out RARP/bootparam - PXE uses BOOTP anyway
 1.4  20-Feb-2002  thorpej branches: 1.4.2; 1.4.4; 1.4.16;
* 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.
 1.3  17-Feb-2002  thorpej Pay attention to the file name provided by the DHCP server, using
it rather than the default of "netbsd" if it's in the reply.
 1.2  16-Feb-2002  thorpej * Remove a debug-breakpoint that is no longer needed.
* Move the pxe_init() call to when we open the virtual netif.
* Make sure to call pxe_fini() when we close the virtual netif.
 1.1  16-Feb-2002  thorpej Add a PXE boot loader. PXE interface code is derived by code
written by Alfred Perlstein, Paul Saab, John Baldwin for FreeBSD.

Still needs some work, but this will load a kernel on a Soekris net4501.

Many thanks to Frank van der Linden and his simulator wizardry for
helping me debug the low-level startup code.
 1.4.16.2  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.4.16.1  20-Feb-2002  jdolecek file main.c was added on branch kqueue on 2002-06-23 17:37:35 +0000
 1.4.4.2  28-Feb-2002  nathanw Catch up to -current.
 1.4.4.1  20-Feb-2002  nathanw file main.c was added on branch nathanw_sa on 2002-02-28 04:10:30 +0000
 1.4.2.2  20-Feb-2002  thorpej * 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.
 1.4.2.1  20-Feb-2002  thorpej file main.c was added on branch sommerfeld_i386mp_1 on 2002-02-20 03:00:28 +0000
 1.7.16.1  15-Sep-2005  tron Pull up following revision(s) (requested by chs in ticket #783):
sys/arch/i386/stand/pxeboot/main.c: revision 1.9
add "consdev" from ../boot.
make "quit" work like it does in ../boot
(ie. let us try again with a bootloader from a different device).
 1.7.2.2  11-Dec-2005  christos Sync with head.
 1.7.2.1  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.8.2.2  27-Feb-2008  yamt sync with head.
 1.8.2.1  21-Jun-2006  yamt sync with head.
 1.11.58.1  18-Feb-2008  mjf Sync with HEAD.
 1.11.52.1  23-Mar-2008  matt sync with HEAD
 1.12.12.3  10-Oct-2008  skrll Sync with HEAD.
 1.12.12.2  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.12.12.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.12.10.5  11-Aug-2010  yamt sync with head.
 1.12.10.4  11-Mar-2010  yamt sync with head
 1.12.10.3  16-Sep-2009  yamt sync with head
 1.12.10.2  04-May-2009  yamt sync with head.
 1.12.10.1  16-May-2008  yamt sync with head.
 1.12.8.1  18-May-2008  yamt sync with head.
 1.12.6.3  17-Jan-2009  mjf Sync with HEAD.
 1.12.6.2  28-Sep-2008  mjf Sync with HEAD.
 1.12.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.13.4.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.13.4.1  19-Oct-2008  haad Sync with HEAD.
 1.13.2.1  18-Jul-2008  simonb Sync with head.
 1.15.2.3  28-Apr-2009  skrll Sync with HEAD.
 1.15.2.2  03-Mar-2009  skrll Sync with HEAD.
 1.15.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.18.2.5  27-Aug-2011  jym Sync with HEAD. Most notably: uvm/pmap work done by rmind@, and MP Xen
work of cherry@.

No regression observed on suspend/restore.
 1.18.2.4  28-Mar-2011  jym Cure sync hiccups. Code with compile errors is not really useful, heh.
 1.18.2.3  28-Mar-2011  jym Sync with HEAD. TODO before merge:
- shortcut for suspend code in sysmon, when powerd(8) is not running.
Borrow ``xs_watch'' thread context?
- bug hunting in xbd + xennet resume. Rings are currently thrashed upon
resume, so current implementation force flush them on suspend. It's not
really needed.
 1.18.2.2  01-Nov-2009  jym Sync with HEAD.
 1.18.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.24.4.4  31-May-2011  rmind sync with head
 1.24.4.3  21-Apr-2011  rmind sync with head
 1.24.4.2  05-Mar-2011  rmind sync with head
 1.24.4.1  30-May-2010  rmind sync with head
 1.24.2.2  09-Nov-2010  uebayasi Sync with HEAD.
 1.24.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.27.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.29.14.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.29.14.1  23-Jun-2013  tls resync from head
 1.29.4.1  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.30.10.1  10-Aug-2014  tls Rebase.

RSS XML Feed