Home | History | Annotate | only in /src/sys/arch/i386/stand/dosboot
History log of /src/sys/arch/i386/stand/dosboot
RevisionDateAuthorComments
 1.39 11-Sep-2024  andvar dosboot(8): remove XMS-specific code. The boot process has been broken for over
a decade, and its relevance has diminished due to the availability of other boot
options.

PR port-i386/58624
 1.38 29-Jun-2024  rin branches: 1.38.2;
i386: stand: Adjust for DOS-routine migration
 1.37 29-Jun-2024  rin i386: stand: Switch to libsa/getopt, NFCI
 1.36 06-Nov-2023  rin x86/dosboot: Drop no-longer-available -DSLOW for libz

It should be lost during merge from upstream.

We may introduce a similar hack again, if it is *really* required;
inflate_fast() may be dropped by using slow path unconditionally.
 1.35 06-Nov-2023  rin x86/dosboot: Do not page-align data segment

4K alignment is too heavy burden for COM executable with 64K limit :)

Fix binary size overflow for clang/amd64.
 1.34 06-Nov-2023  rin x86/dosboot: Allow NULL dereference to fetch command line arguments

DOS command line arguments are provided as struct psp at 0x0000;
see doscommain.c.

Recent versions of gcc and clang are clever enough to optimize code
block involving NULL dereference into ud2 insn.

Sprinkle -fno-delete-null-pointer-checks to doscommain.c to
prevent this behavior.

Note that dosboot.com for netbsd-9 and later was broken due to
this ``over optimization''. gcc 5.5.0 and clang 4.0.0 in netbsd-8
generate correct codes without this workaround.

XXX
Are there still use cases for dosboot.com? Does anyone want to
boot NetBSD from real-mode DOS in 2023?
 1.33 23-Sep-2019  christos branches: 1.33.26;
Consistently use ${RELEASEDIR}/${RELEASEMACHINE} instead of
${RELEASEDIR}/${MACHINE} (Paul Ripke)
 1.32 13-Sep-2019  manu Add multiboot 2 support to x86 bootloaders

multiboot 2 is required to boot Xen on an EFI system.
This also require a kernel patch for properly discovering
the ACPI RSDP, which is available after 20190912, in
src/sys/arch/x86/acpi/acpi_machdep.c 1.26-1.28

There are a few missing bit in this multiboot 2 implementation
(which are unused by Xen):
- Header tags Address, Freambuffer, and Relocatable are ignored
- Tags APM and Network are not provided
- Tags ACPI old and ACP new are only provided for ACPI boot
- Tag boot device does not provides the subpart (BSD disklabel partition)

Notes:
- multiboot2 is disabled in dosboot, otherwise the binary
gets too big and build fails.
- in src/sys/arch/i386/stand/efiboot, consinit() is renamed
as efi_consinit() to avoid prototype conflicts in src/sys/sys/systm.h
 1.31 02-Jun-2018  christos branches: 1.31.2; 1.31.6;
- Disable MKSANITIZER
- Redo using NOPIE
- Add NORELRO
 1.30 23-Jan-2016  christos branches: 1.30.10; 1.30.16;
We'll define the kernel types for standalone code.
 1.29 23-Jan-2016  christos Define _KERNTYPES for things that need it.
 1.28 15-Jan-2014  joerg branches: 1.28.6;
Reduce amount of -no-integrated-as on x86 as .code16 is now supported by
LLVM.
 1.27 25-Dec-2011  tsutsui branches: 1.27.6; 1.27.10;
Apply the following patch submitted by Evgeniy Ivanov:
http://mail-index.NetBSD.org/tech-kern/2011/12/15/msg012226.html
http://mail-index.NetBSD.org/tech-kern/2011/12/17/msg012229.html

- add 'ls' op to struct fs_ops to support ls command on each fs,
enabled by -DLIBSA_ENABLE_LS_OP and SAMISCMAKEFLAGS+="SA_ENABLE_LS_OP=yes"
in libsa
- split sys/lib/libsa/ufs_ls.c into UFS specific part and MI part (ls.c)
that opens the target fs and calls fs-depedent XXX_ls() functions
- add a ls op for ext2fs
(all other fs than ufs and ext2fs don't have actual ls ops yet)
- replace existing MD ufs_ls() calls with this new MI ls()

The original patch was written for i386 and ext2fs.
zaurus zboot has been tested by nonaka@.
ews4800mips and x68k loaders have been tested by me (with several fixes).
landisk might be okay since it was almost copied from i386.

XXX1: "ls" op in fs_ops looks a bit inconsistent, but we will be able to
replace it with real fs ops like readdir if it's really worth
XXX2: someone might have to check sys/arch/ia64/stand/efi/libefi/efifs_ls.c
 1.26 20-May-2011  joerg branches: 1.26.4; 1.26.8;
Disable integrated assembler for files that use .code16 or .code32 for
now. Disable Clang completely for bootxx and netboot for now until the
size issue has been sorted out.
 1.25 30-Mar-2009  tsutsui branches: 1.25.4; 1.25.6;
Remove extra trailing slash in ${S} path.
 1.24 20-Oct-2008  christos branches: 1.24.2; 1.24.8;
disable PIE for boot code.
 1.23 01-Apr-2003  mycroft branches: 1.23.104; 1.23.108; 1.23.114;
Add -DSLOW to reduce the size of libz a bit.
 1.22 01-Feb-2003  dsl Change all .S files to use .code16 and .code32
Support 32bit addresses >64k as valid on bios calls.
Move stack for dosboot and biosboot to >64 so stack doesn't hit data.
Use disk sector number passed by mbr code to select default partition
(the mbr code doesn't do this yet).
NB only biosboot and dosboot have been tested so far.
(changes approved by christos and fvdl)
 1.21 03-Jan-2003  lukem Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.
 1.20 17-Feb-2002  thorpej branches: 1.20.2;
Cleanup of i386 bootloader building:
* Add separate directories for the individual netboot ROMs and
always build them.
* Each bootloader Makefile explicitly specifies the start file
and link address it wishes to use.
* genprom becomes a proper host program.
* Make sure all generated files get cleaned up.
* Set BINDIR in Makefile.inc
* Add compressed image support to pxeboot.
* Make pxeboot use the default serial console speed (9600).
 1.19 12-Dec-2001  tv MKfoo=no -> NOfoo
 1.18 01-Jun-2001  jdolecek branches: 1.18.4;
g/c COMPAT_OLDBOOT from bootblocks, sprinkle some const
bump bootblock version to 2.10
 1.17 15-Oct-2000  wiz branches: 1.17.4;
Get RELEASEDIR setting from /etc/mk.conf. Fixes misc/11104 by Markus Kurek.
 1.16 05-Sep-2000  enami Fix to work with objdir.
 1.15 23-Aug-2000  jhawk install dosboot.com in the release(7) hierarchy.
 1.14 06-Jul-2000  jhawk Enable "old partition ID" compatibility by default, just as in biosboot.
 1.13 14-Apr-1999  drochner branches: 1.13.2; 1.13.14;
add prototypes, use ufs_ls() from mi libsa,
compile with -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-main
 1.12 08-Apr-1999  drochner define VERSIONFILE, from John Darrow <John.P.Darrow@wheaton.edu>
per PR port-i386/7336
 1.11 13-Feb-1999  lukem branches: 1.11.2; 1.11.4;
convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.
 1.10 30-Jan-1999  christos Add exec.c here and bump version for elf.
XXX: This code has not been tested!
 1.9 28-Sep-1997  drochner Use the "proginstall" rule from <bsd.prog.mk> to get the UPDATE
behaviour right.
 1.8 14-Aug-1997  drochner Make new memory detection default.
Introduce a new option, "CONSERVATIVE_MEMDETECT", which disables the
new BIOS calls.
 1.7 14-Aug-1997  drochner Prepare definition for EXTENDED_MEMDETECT.
Not yet default.
 1.6 26-Jul-1997  thorpej branches: 1.6.2;
New welcome banner code, modeled after NetBSD/hp300's boot program
welcome banner code. Includes additional build information, and it
generally nicer to look at.
 1.5 13-Jun-1997  drochner Allow to boot from DOS if a XMS manager is installed.
XMS is recognized and used as temporary buffer for the kernel image.
The processor must still be in real mode at program start, so EMM386
or QEMM are not allowed. W*95 is OK.
Written by Martin Husemann (pr port-i386/3336).
Completely separated from other bootloaders for sanity.
 1.4 13-Jun-1997  drochner Remove some relicts from the time before libsa/Makefile got
"SAMISCCPPFLAGS".
Enable -Wall.
 1.3 07-May-1997  mycroft Override the proginstall target to do our special hackery. (Yuck.)
 1.2 14-Mar-1997  thorpej Make this work with obj* dirs.
 1.1 14-Mar-1997  perry branches: 1.1.1;
Initial revision
 1.1.1.1 14-Mar-1997  perry Initial import of new boot code, created by Matthias Drochner with a
little hacking by me. This isn't strictly identical to his 920312
release -- I've hacked it a bit -- but since we are taking over change
control it doesn't matter much.
 1.6.2.2 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.6.2.1 23-Aug-1997  thorpej Update marc-pcmcia branch from trunk.
 1.11.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.11.2.1 06-Jul-2000  he Pull up revision 1.14 (requested by jhawk):
Enable "old partition ID" compatibility by default, just as in
biosboot.
 1.13.14.4 19-Oct-2000  he Pull up revision 1.17 (requested by wiz):
Get RELEASEDIR setting from /etc/mk.conf. Fixes PR#11104.
 1.13.14.3 06-Sep-2000  enami Pull up rev. 1.16 (approved by jhawk):
date: 2000/09/05 05:05:16; author: enami; state: Exp; lines: +2 -2
Fix to work with objdir.
 1.13.14.2 04-Sep-2000  jhawk Pullup etc/etc.i386/Makefile.inc rev 1.23, arch/i386/stand/dosboot/Makefile
rev 1.15, approved by thorpej:
install dosboot.com in the release(7) hierarchy.
 1.13.14.1 06-Jul-2000  jhawk Pullup revv 1.14, approved by thorpej:

Enable "old partition ID" compatibility by default, just as in biosboot.
 1.13.2.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.17.4.4 07-Jan-2003  thorpej Sync with HEAD.
 1.17.4.3 28-Feb-2002  nathanw Catch up to -current.
 1.17.4.2 08-Jan-2002  nathanw Catch up to -current.
 1.17.4.1 21-Jun-2001  nathanw Catch up to -current.
 1.18.4.2 16-Mar-2002  jdolecek Catch up with -current.
 1.18.4.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.20.2.2 17-Feb-2002  thorpej Cleanup of i386 bootloader building:
* Add separate directories for the individual netboot ROMs and
always build them.
* Each bootloader Makefile explicitly specifies the start file
and link address it wishes to use.
* genprom becomes a proper host program.
* Make sure all generated files get cleaned up.
* Set BINDIR in Makefile.inc
* Add compressed image support to pxeboot.
* Make pxeboot use the default serial console speed (9600).
 1.20.2.1 17-Feb-2002  thorpej file Makefile was added on branch sommerfeld_i386mp_1 on 2002-02-17 20:03:10 +0000
 1.23.114.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.23.108.1 04-May-2009  yamt sync with head.
 1.23.104.1 17-Jan-2009  mjf Sync with HEAD.
 1.24.8.3 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.24.8.2 01-Nov-2009  jym Sync with HEAD.
 1.24.8.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.24.2.1 28-Apr-2009  skrll Sync with HEAD.
 1.25.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.25.4.1 31-May-2011  rmind sync with head
 1.26.8.1 18-Feb-2012  mrg merge to -current.
 1.26.4.2 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.26.4.1 17-Apr-2012  yamt sync with head
 1.27.10.1 18-May-2014  rmind sync with head
 1.27.6.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.28.6.1 19-Mar-2016  skrll Sync with HEAD
 1.30.16.1 25-Jun-2018  pgoyette Sync with HEAD
 1.30.10.1 18-Sep-2019  martin Pull up following revision(s) [adapted, via patch]
(requested by manu in ticket #1382):

sys/arch/i386/include/multiboot2.h: revision 1.1
sys/arch/i386/stand/lib/exec.c: revision 1.74
sys/arch/i386/stand/efiboot/efiboot.c: revision 1.11
sys/arch/i386/stand/efiboot/bootia32/multiboot32.S: revision 1.1
sys/arch/i386/stand/lib/biosdisk.c: revision 1.52
sys/arch/i386/stand/efiboot/bootx64/efibootx64.c: revision 1.5
distrib/sets/lists/comp/md.amd64: revision 1.273
sys/arch/i386/stand/efiboot/eficons.c: revision 1.7
sys/arch/i386/stand/efiboot/bootia32/efibootia32.c: revision 1.5
distrib/sets/lists/comp/md.i386: revision 1.191
sys/arch/i386/stand/lib/libi386.h: revision 1.45
sys/arch/i386/stand/lib/bootinfo_memmap.c: revision 1.6
sys/arch/i386/stand/lib/pread.c: revision 1.8
sys/arch/i386/stand/efiboot/efiboot.h: revision 1.10
sys/arch/i386/stand/efiboot/bootia32/Makefile: revision 1.3
sys/arch/i386/stand/lib/Makefile: revision 1.47
sys/arch/i386/stand/efiboot/bootx64/Makefile: revision 1.2
sys/arch/i386/stand/lib/multiboot.S: revision 1.3
sys/arch/i386/stand/efiboot/bootx64/multiboot64.S: revision 1.1
sys/arch/i386/stand/efiboot/efimemory.c: revision 1.9
sys/arch/i386/stand/efiboot/boot.c: revision 1.16
sys/arch/i386/include/Makefile: revision 1.50
sys/arch/i386/stand/efiboot/Makefile.efiboot: revision 1.16
share/man/man8/man8.x86/boot.8: revision 1.20
sys/arch/i386/stand/boot/Makefile.boot: revision 1.73
sys/arch/i386/stand/pxeboot/Makefile: revision 1.26
sys/arch/i386/stand/lib/exec_multiboot1.c: revision 1.1
sys/arch/i386/stand/netboot/Makefile.netboot: revision 1.11
sys/arch/i386/stand/lib/exec_multiboot2.c: revision 1.1
sys/arch/i386/stand/lib/biosdisk.h: revision 1.12
sys/arch/i386/stand/lib/exec_multiboot2.c: revision 1.2
sys/arch/i386/stand/dosboot/Makefile: revision 1.32
sys/external/bsd/gnu-efi/dist/inc/efiapi.h (apply patch)

Add multiboot 2 support to x86 bootloaders

multiboot 2 is required to boot Xen on an EFI system.

This also require a kernel patch for properly discovering
the ACPI RSDP, which is available after 20190912, in
src/sys/arch/x86/acpi/acpi_machdep.c 1.26-1.28

There are a few missing bit in this multiboot 2 implementation
(which are unused by Xen):
- Header tags Address, Freambuffer, and Relocatable are ignored
- Tags APM and Network are not provided
- Tags ACPI old and ACP new are only provided for ACPI boot
- Tag boot device does not provides the subpart (BSD disklabel partition)

Notes:
- multiboot2 is disabled in dosboot, otherwise the binary
gets too big and build fails.
- in src/sys/arch/i386/stand/efiboot, consinit() is renamed
as efi_consinit() to avoid prototype conflicts in src/sys/sys/systm.h

Remove debug define.

It remained there unseen because it was misspelled!

Remove obsoeolete BUGS note that UEFI bootloader does not support multiboot

Add new multiboot2.h header.
 1.31.6.1 17-Sep-2019  martin Pull up following revision(s) (requested by manu in ticket #203):

sys/arch/i386/include/multiboot2.h: revision 1.1
sys/arch/i386/stand/lib/exec.c: revision 1.74
sys/arch/i386/stand/efiboot/efiboot.c: revision 1.11
sys/arch/i386/stand/efiboot/bootia32/multiboot32.S: revision 1.1
sys/arch/i386/stand/lib/biosdisk.c: revision 1.52
sys/arch/i386/stand/efiboot/bootx64/efibootx64.c: revision 1.5
sys/arch/i386/stand/efiboot/eficons.c: revision 1.7
sys/arch/i386/stand/efiboot/bootia32/efibootia32.c: revision 1.5
sys/arch/i386/stand/lib/libi386.h: revision 1.45
sys/arch/i386/stand/lib/bootinfo_memmap.c: revision 1.6
sys/arch/i386/stand/lib/pread.c: revision 1.8
sys/arch/i386/stand/efiboot/efiboot.h: revision 1.10
sys/arch/i386/stand/efiboot/bootia32/Makefile: revision 1.3
sys/arch/i386/stand/lib/Makefile: revision 1.47
sys/arch/i386/stand/efiboot/bootx64/Makefile: revision 1.2
sys/arch/i386/stand/lib/multiboot.S: revision 1.3
sys/arch/i386/stand/efiboot/bootx64/multiboot64.S: revision 1.1
sys/arch/i386/stand/efiboot/efimemory.c: revision 1.9
sys/arch/i386/stand/efiboot/boot.c: revision 1.16
sys/arch/i386/include/Makefile: revision 1.50
sys/arch/i386/stand/efiboot/Makefile.efiboot: revision 1.16
share/man/man8/man8.x86/boot.8: revision 1.20
sys/arch/i386/stand/boot/Makefile.boot: revision 1.73
sys/arch/i386/stand/pxeboot/Makefile: revision 1.26
sys/arch/i386/stand/lib/exec_multiboot1.c: revision 1.1
sys/arch/i386/stand/netboot/Makefile.netboot: revision 1.11
sys/arch/i386/stand/lib/exec_multiboot2.c: revision 1.1
sys/arch/i386/stand/lib/biosdisk.h: revision 1.12
sys/arch/i386/stand/lib/exec_multiboot2.c: revision 1.2
sys/arch/i386/stand/dosboot/Makefile: revision 1.32

Add multiboot 2 support to x86 bootloaders

multiboot 2 is required to boot Xen on an EFI system.

This also require a kernel patch for properly discovering
the ACPI RSDP, which is available after 20190912, in
src/sys/arch/x86/acpi/acpi_machdep.c 1.26-1.28

There are a few missing bit in this multiboot 2 implementation
(which are unused by Xen):
- Header tags Address, Freambuffer, and Relocatable are ignored
- Tags APM and Network are not provided
- Tags ACPI old and ACP new are only provided for ACPI boot
- Tag boot device does not provides the subpart (BSD disklabel partition)
Notes:
- multiboot2 is disabled in dosboot, otherwise the binary
gets too big and build fails.
- in src/sys/arch/i386/stand/efiboot, consinit() is renamed
as efi_consinit() to avoid prototype conflicts in src/sys/sys/systm.h

Remove debug define.

It remained there unseen because it was misspelled!

Remove obsoeolete BUGS note that UEFI bootloader does not support multiboot
 1.31.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.33.26.1 14-Dec-2023  martin Pull up following revision(s) (requested by rin in ticket #498):

sys/arch/i386/stand/dosboot/Makefile: revision 1.35
sys/arch/i386/stand/Makefile.booters: revision 1.95
sys/arch/i386/stand/bootxx/bootxx_msdos/Makefile: revision 1.5
sys/arch/i386/stand/Makefile.inc: revision 1.19
sys/arch/i386/stand/bootxx/bootxx_ustarfs/Makefile: revision 1.4
sys/arch/i386/stand/dosboot/Makefile: revision 1.34

Fix the clang build by setting -z noseparate-code

Merge the OPT_SIZE flags. -Oz is not always producing smaller code that -Os,
so default to -Os for both, and we'll override where needed.

Override these two booters with -Oz for clang since it produces smaller code
here.

x86/dosboot: Allow NULL dereference to fetch command line arguments
DOS command line arguments are provided as struct psp at 0x0000;
see doscommain.c.

Recent versions of gcc and clang are clever enough to optimize code
block involving NULL dereference into ud2 insn.

Sprinkle -fno-delete-null-pointer-checks to doscommain.c to
prevent this behavior.

Note that dosboot.com for netbsd-9 and later was broken due to
this ``over optimization''. gcc 5.5.0 and clang 4.0.0 in netbsd-8
generate correct codes without this workaround.

XXX
Are there still use cases for dosboot.com? Does anyone want to
boot NetBSD from real-mode DOS in 2023?

x86/dosboot: Do not page-align data segment
4K alignment is too heavy burden for COM executable with 64K limit :)
Fix binary size overflow for clang/amd64.
 1.38.2.1 02-Aug-2025  perseant Sync with HEAD
 1.12 29-Jun-2024  rin i386: stand: Adjust for DOS-routine migration
 1.11 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.10 11-Dec-2005  christos branches: 1.10.78; 1.10.86; 1.10.92;
merge ktrace-lwp.
 1.9 22-Jun-2005  dyoung De-__P().

Consistently pass 'int *' arguments to parsebootfile.
 1.8 22-Jun-2005  junyoung Fix build breakage. Oops.
 1.7 24-Mar-2004  drochner remove license clauses 3 and 4 from my cpoyright notices
 1.6 31-Aug-2003  fvdl Fix signed/unsigned warnings.
 1.5 01-Jun-2001  jdolecek branches: 1.5.2; 1.5.24;
g/c COMPAT_OLDBOOT from bootblocks, sprinkle some const
bump bootblock version to 2.10
 1.4 14-Apr-1999  drochner branches: 1.4.16;
add prototypes, use ufs_ls() from mi libsa,
compile with -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-main
 1.3 17-Sep-1997  drochner branches: 1.3.12;
Put name of booted file into a "bootinfo" structure.
(not for DOS files for now, we don't know the absolute path)
 1.2 22-Mar-1997  thorpej branches: 1.2.4;
Purely cosmetic whitespace/indentation changes (mmm, indent(1))
 1.1 14-Mar-1997  perry branches: 1.1.1;
Initial revision
 1.1.1.1 14-Mar-1997  perry Initial import of new boot code, created by Matthias Drochner with a
little hacking by me. This isn't strictly identical to his 920312
release -- I've hacked it a bit -- but since we are taking over change
control it doesn't matter much.
 1.2.4.1 22-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.3.12.1 21-Jun-1999  thorpej Sync w/ -current.
 1.4.16.1 21-Jun-2001  nathanw Catch up to -current.
 1.5.24.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.5.24.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.24.2 18-Sep-2004  skrll Sync with HEAD.
 1.5.24.1 03-Aug-2004  skrll Sync with HEAD
 1.5.2.2 01-Jun-2001  jdolecek g/c COMPAT_OLDBOOT from bootblocks, sprinkle some const
bump bootblock version to 2.10
 1.5.2.1 01-Jun-2001  jdolecek file devopen.c was added on branch sommerfeld_i386mp_1 on 2001-06-01 23:26:32 +0000
 1.10.92.2 01-Nov-2009  jym Sync with HEAD.
 1.10.92.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.10.86.1 28-Apr-2009  skrll Sync with HEAD.
 1.10.78.1 04-May-2009  yamt sync with head.
 1.1 29-Jun-2024  rin i386: stand: Migrate DOS support routines from `lib` to `dosboot`
 1.1 29-Jun-2024  rin i386: stand: Migrate DOS support routines from `lib` to `dosboot`
 1.2 29-Jun-2024  rin i386: stand: Adjust for DOS-routine migration
 1.1 29-Jun-2024  rin i386: stand: Migrate DOS support routines from `lib` to `dosboot`
 1.2 29-Jun-2024  rin i386: stand: Adjust for DOS-routine migration
 1.1 29-Jun-2024  rin i386: stand: Migrate DOS support routines from `lib` to `dosboot`
 1.34 11-Sep-2024  andvar dosboot(8): remove XMS-specific code. The boot process has been broken for over
a decade, and its relevance has diminished due to the availability of other boot
options.

PR port-i386/58624
 1.33 13-May-2019  maxv branches: 1.33.34;
Remove dead code.
 1.32 26-Mar-2014  christos branches: 1.32.30;
kill sprintf.
 1.31 25-Dec-2011  tsutsui branches: 1.31.6; 1.31.10;
Apply the following patch submitted by Evgeniy Ivanov:
http://mail-index.NetBSD.org/tech-kern/2011/12/15/msg012226.html
http://mail-index.NetBSD.org/tech-kern/2011/12/17/msg012229.html

- add 'ls' op to struct fs_ops to support ls command on each fs,
enabled by -DLIBSA_ENABLE_LS_OP and SAMISCMAKEFLAGS+="SA_ENABLE_LS_OP=yes"
in libsa
- split sys/lib/libsa/ufs_ls.c into UFS specific part and MI part (ls.c)
that opens the target fs and calls fs-depedent XXX_ls() functions
- add a ls op for ext2fs
(all other fs than ufs and ext2fs don't have actual ls ops yet)
- replace existing MD ufs_ls() calls with this new MI ls()

The original patch was written for i386 and ext2fs.
zaurus zboot has been tested by nonaka@.
ews4800mips and x68k loaders have been tested by me (with several fixes).
landisk might be okay since it was almost copied from i386.

XXX1: "ls" op in fs_ops looks a bit inconsistent, but we will be able to
replace it with real fs ops like readdir if it's really worth
XXX2: someone might have to check sys/arch/ia64/stand/efi/libefi/efifs_ls.c
 1.30 20-Dec-2010  jakllsch branches: 1.30.8; 1.30.12;
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.29 21-Mar-2009  ad branches: 1.29.4;
Fix 'boot -z' bogons.
 1.28 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.27 14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.26 14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.25 13-Dec-2008  christos branches: 1.25.2;
add a boot.cfg option to clear the screen; default off. From Anon Ymous
 1.24 26-Sep-2008  christos branches: 1.24.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.23 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.22 11-Dec-2005  christos branches: 1.22.74; 1.22.78; 1.22.80; 1.22.82; 1.22.84;
merge ktrace-lwp.
 1.21 22-Jun-2005  dyoung De-__P().

Consistently pass 'int *' arguments to parsebootfile.
 1.20 22-Jun-2005  junyoung Fix build breakage. Oops.
 1.19 31-Aug-2003  fvdl Fix signed/unsigned warnings.
 1.18 05-Jul-2001  itojun branches: 1.18.4; 1.18.24;
sort boot flag to alphabetical order. add -c.
 1.17 01-Jun-2001  jdolecek g/c COMPAT_OLDBOOT from bootblocks, sprinkle some const
bump bootblock version to 2.10
 1.16 24-Sep-2000  jdolecek branches: 1.16.4;
update usage message (new flags -v, -q)
 1.15 29-Jul-2000  jdolecek g/c RB_DFLTROOT

I've tried hard to find also various usage() messages and remove the
appropriate flag from there as well, hopefully all occurences are covered.
 1.14 13-Mar-2000  martin branches: 1.14.6;
Do the same as biosboot does.
This makes it possible to create serial console dosboot.com's via uncommenting
the appropriate Makefile options.
I needed this when testing the SMP test kernels at work.
 1.13 14-Apr-1999  christos branches: 1.13.2;
remove bogus prototype for getopt
 1.12 14-Apr-1999  drochner add prototypes, use ufs_ls() from mi libsa,
compile with -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-main
 1.11 12-Feb-1999  cjs branches: 1.11.4;
Don't give exit() a parameter, as libstand version doesn't take one.
 1.10 03-Nov-1997  drochner ../lib/exec_fromdos.c doesn't use the memory size returned by XMS check
anymore if other methods work better. Sync banner output with this.
 1.9 31-Oct-1997  drochner -Don't try to parse the bootfile path in DOS mode.
-Take "dev" command from "biosboot" for consistency.
 1.8 17-Sep-1997  drochner branches: 1.8.2;
The additional linefeed appeared again... kill it.
 1.7 17-Sep-1997  drochner Use common menu / parsing functions.
Adapt to new console / exec_netbsd arguments.
 1.6 14-Aug-1997  drochner Use traditional memory detect function (int15/88) as indication for
a XMS driver.
From Martin Husemann.
 1.5 29-Jul-1997  christos branches: 1.5.2;
If we have xms print the xms memory size, and indicate that this is xms
memory in the banner. It is confusing to show 0 memory...
 1.4 26-Jul-1997  thorpej New welcome banner code, modeled after NetBSD/hp300's boot program
welcome banner code. Includes additional build information, and it
generally nicer to look at.
 1.3 13-Jun-1997  drochner Remove strerror() prototype, it goes into stand.h.
 1.2 22-Mar-1997  thorpej Purely cosmetic whitespace/indentation changes (mmm, indent(1))
 1.1 14-Mar-1997  perry branches: 1.1.1;
Initial revision
 1.1.1.1 14-Mar-1997  perry Initial import of new boot code, created by Matthias Drochner with a
little hacking by me. This isn't strictly identical to his 920312
release -- I've hacked it a bit -- but since we are taking over change
control it doesn't matter much.
 1.5.2.2 22-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.5.2.1 23-Aug-1997  thorpej Update marc-pcmcia branch from trunk.
 1.8.2.1 01-Nov-1997  mellon Pull rev 1.9 up from trunk (drochner)
 1.11.4.1 21-Jun-1999  thorpej Sync w/ -current.
 1.13.2.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.14.6.1 13-Aug-2000  jdolecek pullup from trunk (approved by thorpej):
retire RB_DFLTROOT, it's no longer used

revisions pulled up:
arch/i386/stand/lib/netbsd_opts.c 1.3
arch/i386/stand/biosboot/main.c 1.23
arch/i386/stand/dosboot/main.c 1.15
arch/i386/stand/netboot/main.c 1.6
arch/arc/arc/machdep.c 1.42
arch/bebox/stand/boot/boot.c 1.11
arch/hpcmips/hpcmips/machdep.c 1.32
arch/newsmips/newsmips/machdep.c 1.45
arch/pc532/stand/boot/boot.c 1.2
arch/pmax/pmax/machdep.c 1.178
arch/prep/stand/boot/boot.c 1.2
arch/sparc/sparc/autoconf.c 1.141
arch/sparc64/sparc64/autoconf.c 1.38
arch/x68k/stand/loadbsd/loadbsd.c 1.5
arch/mvme68k/stand/libsa/parse_args.c 1.6
compat/osf1/osf1_cvt.c 1.9
sys/reboot.h 1.17
 1.16.4.2 24-Aug-2001  nathanw Catch up with -current.
 1.16.4.1 21-Jun-2001  nathanw Catch up to -current.
 1.18.24.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.18.24.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.18.24.2 18-Sep-2004  skrll Sync with HEAD.
 1.18.24.1 03-Aug-2004  skrll Sync with HEAD
 1.18.4.2 05-Jul-2001  itojun sort boot flag to alphabetical order. add -c.
 1.18.4.1 05-Jul-2001  itojun file main.c was added on branch sommerfeld_i386mp_1 on 2001-07-05 00:58:46 +0000
 1.22.84.1 19-Oct-2008  haad Sync with HEAD.
 1.22.82.1 18-Jul-2008  simonb Sync with head.
 1.22.80.2 10-Oct-2008  skrll Sync with HEAD.
 1.22.80.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.22.78.1 04-May-2009  yamt sync with head.
 1.22.74.2 17-Jan-2009  mjf Sync with HEAD.
 1.22.74.1 28-Sep-2008  mjf Sync with HEAD.
 1.24.2.2 28-Apr-2009  skrll Sync with HEAD.
 1.24.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.25.2.3 10-Jan-2011  jym Sync with HEAD
 1.25.2.2 01-Nov-2009  jym Sync with HEAD.
 1.25.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.29.4.1 05-Mar-2011  rmind sync with head
 1.30.12.1 18-Feb-2012  mrg merge to -current.
 1.30.8.2 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.8.1 17-Apr-2012  yamt sync with head
 1.31.10.1 18-May-2014  rmind sync with head
 1.31.6.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.32.30.1 10-Jun-2019  christos Sync with HEAD
 1.33.34.1 02-Aug-2025  perseant Sync with HEAD
 1.2 11-Sep-2024  andvar dosboot(8): remove XMS-specific code. The boot process has been broken for over
a decade, and its relevance has diminished due to the availability of other boot
options.

PR port-i386/58624
 1.1 29-Jun-2024  rin branches: 1.1.2;
i386: stand: Migrate DOS support routines from `lib` to `dosboot`
 1.1.2.1 02-Aug-2025  perseant Sync with HEAD
 1.13 20-Sep-2024  mrg x86/boot: fill in a bunch of missed changes and bump some versions.

missed features included:
- support for partition labels
- recursive labels inside RAID partitions
- booting a directory with kernel and modules
- multiBoot 2
- "root" command that changes default root
- "vesa" command to control graphical modes
- bi-endian support in disklabel, RAID and UFS
- fixes for buggy ACPI implementations
- fix PXE device path type
- fixes for buggy ACPI implementations
- serial console support with raw I/O accessors
- ASCII art

XXX: perhaps we could pullup some of these as minor version to release
branches but it seems extreme for a largely cosmetic issue. the
version across releases has a different build ID, so you can
already tell the difference between versions that changed.
 1.12 11-Sep-2024  andvar dosboot(8): remove XMS-specific code. The boot process has been broken for over
a decade, and its relevance has diminished due to the availability of other boot
options.

PR port-i386/58624
 1.11 15-Jul-2008  perry branches: 1.11.118;
Update the version numbers following commit, and make them all identical.
 1.10 01-Feb-2003  dsl branches: 1.10.104; 1.10.108; 1.10.110; 1.10.112; 1.10.114;
Change all .S files to use .code16 and .code32
Support 32bit addresses >64k as valid on bios calls.
Move stack for dosboot and biosboot to >64 so stack doesn't hit data.
Use disk sector number passed by mbr code to select default partition
(the mbr code doesn't do this yet).
NB only biosboot and dosboot have been tested so far.
(changes approved by christos and fvdl)
 1.9 09-Nov-2001  scw branches: 1.9.2;
Bump the version numbers of all bootloaders which use loadfile_elfXX() now
that it tries hard to avoid backwards seeks.
 1.8 02-Aug-2001  bjh21 branches: 1.8.6;
Bump version numbers of all bootloaders that use loadfile/ELF, to account for
my changes to symbol loading. I should probably have done this at the time,
but it's better late than never.
 1.7 24-Sep-2000  jdolecek branches: 1.7.4; 1.7.6;
add new macro BOOT_FLAG() (defined in <sys/boot_flag.h>) - this
maps standard boot flags to corresponding RB_* values
use BOOT_FLAG() in port's MD code as appropriate

as discussed on tech-kern, add new boot flags -v, -q for booting
verbosely or quietly, and corresponding AB_VERBOSE/AB_QUIET
boot flags; also add FreeBSD-compatible bootverbose macro and
NetBSD-specific bootquiet macro

for hpcmips, use new bootverbose instead of it's own hpcmips_verbose

Tested on i386, and to limited extend (compile of affected files) also for
mvme68k, hp300, luna68k, sun3.
 1.6 12-Jul-2000  jdolecek switch to MI newvers_stand.sh version info generator
 1.5 30-Jan-1999  christos branches: 1.5.8;
Add exec.c here and bump version for elf.
XXX: This code has not been tested!
 1.4 27-Oct-1998  ws Update version number and mention int13 extension support
(sorry, forgot this on the recent commit of the above).
 1.3 08-Jul-1998  drochner bump version number to reflect the partition ID change
(should have been done long ago)
 1.2 20-Sep-1997  drochner Note use of common menu functions and new framework for argument passing
to the kernel.
 1.1 26-Jul-1997  thorpej branches: 1.1.2;
New welcome banner code, modeled after NetBSD/hp300's boot program
welcome banner code. Includes additional build information, and it
generally nicer to look at.
 1.1.2.1 22-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.5.8.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.7.6.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.7.6.1 03-Aug-2001  lukem update to -current
 1.7.4.2 14-Nov-2001  nathanw Catch up to -current.
 1.7.4.1 24-Aug-2001  nathanw Catch up with -current.
 1.8.6.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.9.2.2 09-Nov-2001  scw Bump the version numbers of all bootloaders which use loadfile_elfXX() now
that it tries hard to avoid backwards seeks.
 1.9.2.1 09-Nov-2001  scw file version was added on branch sommerfeld_i386mp_1 on 2001-11-09 19:53:14 +0000
 1.10.114.1 19-Oct-2008  haad Sync with HEAD.
 1.10.112.1 18-Jul-2008  simonb Sync with head.
 1.10.110.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.10.108.1 04-May-2009  yamt sync with head.
 1.10.104.1 28-Sep-2008  mjf Sync with HEAD.
 1.11.118.1 02-Aug-2025  perseant Sync with HEAD
 1.2 26-Jul-1997  thorpej New welcome banner code, modeled after NetBSD/hp300's boot program
welcome banner code. Includes additional build information, and it
generally nicer to look at.
 1.1 14-Mar-1997  perry branches: 1.1.1;
Initial revision
 1.1.1.1 14-Mar-1997  perry Initial import of new boot code, created by Matthias Drochner with a
little hacking by me. This isn't strictly identical to his 920312
release -- I've hacked it a bit -- but since we are taking over change
control it doesn't matter much.

RSS XML Feed