History log of /freebsd-10-stable/sys/boot/common/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
323052 31-Aug-2017 oleg

MFC r322628: Fix BSD label partition end sector calculation.

Approved by: re (marius)
Differential Revision: https://reviews.freebsd.org/D12066

321265 20-Jul-2017 ngie

MFC r316102:

Wrap bootcamp DEBUG statement with curly braces

This fixes a -Wempty-body warning with gcc 6.3.0 when PART_DEBUG is undefined.

Tested with: amd64-gcc-6.3.0 (devel/amd64-xtoolchain-gcc)

316319 31-Mar-2017 ngie

MFC r316108:

Remove -Wunused-but-set variable, `tail` in `ls_getdir(..)`

This variable has been unused since its inception in r40106.

312771 25-Jan-2017 dim

MFC r311929:

Don't include <errno.h> in reloc_elf.c, as it includes <stand.h> just
after it, which has a conflicting definition of errno. This leads to
the following warning with clang 4.0.0:

In file included from sys/boot/common/reloc_elf32.c:6:
In file included from sys/boot/common/reloc_elf.c:37:
/usr/obj/usr/src/tmp/usr/include/stand.h:155:12: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
extern int errno;
^
sys/sys/errno.h:46:26: note: expanded from macro 'errno'
#define errno (* __error())
^

306378 27-Sep-2016 pluknet

MFC r274925: misc mdoc fixes.

301056 31-May-2016 ian

MFC r297147, r297148, r297149, r297150, r297151:

Make both the loader and kernel use the interface-mtu option if the
dhcp server provides it. Made up of these (semi-)related changes...

[kernel...] If the dhcp server provides an interface-mtu option, parse
the value and set that mtu on the interface.

[libstand...]

Garbage collect the bswap routines from libstand, use sys/endian.h.

If the dhcp server delivers an interface-mtu option, parse it and store
the value in a new global intf_mtu for use by the application.

[loader...]

If the dhcp server provided an interface-mtu option, transcribe the value
to the boot.netif.mtu env var, which will be picked up by pre-existing code
in nfs_mountroot() and used to configure the interface accordingly.

PR: 187094

298493 22-Apr-2016 emaste

MFC r277205 (imp):

Reserve and ignore the a new module metadata type MDT_PNP_INFO for
associating an optional PNP hint table with this module. In the
future, when these are added, these changes will silently ignore the
new type they would otherwise warn about. It will always be safe to
ignore this data. Get this into the builds today for some future
proofing.

296438 07-Mar-2016 dim

MFC r296419 (by kib):

In the link_elf_obj.c, handle sections of type SHT_AMD64_UNWIND same
as SHT_PROGBITS. This is needed after the clang 3.8 import, which
generates that type for .eh_frame section, which had SHT_PROGBITS type
before.

Reported by: Nikolai Lifanov <lifanov@mail.lifanov.com>
PR: 207729
Tested by: dim (previous version)
Sponsored by: The FreeBSD Foundation

MFC r296428:

Since kernel modules can now contain sections of type SHT_AMD64_UNWIND,
the boot loader should not skip over these anymore while loading images.
Otherwise the kernel can still panic when it doesn't find the .eh_frame
section belonging to the .rela.eh_frame section.

Unfortunately this will require installing boot loaders from sys/boot
before attempting to boot with a new kernel.

Reviewed by: kib

295531 11-Feb-2016 smh

MFC r295356 (Partial)

Fix EFI platform build failures on arm.armeb

Approved by: re (marius)
Sponsored by: Multiplay

295453 09-Feb-2016 emaste

MFC boot loader path and RBX constant deduplication

r294765 (imp)

Move all the separate copies of the same strings into paths.h. There's
nothing machine specific about these.

r294765 (imp)

RBX_ defines are in rbx.h, move it there.

r294847 (imp)

Remove static from these two. They slipped through the cracks.

r294925 (imp)

Fix mistake when transitioning to the new defines with ZFS loader. I
hate adding yet another define, but it is the lessor of the evil
choices available. Kill another evil by removing PATH_BOOT3 and
replacing it with PATH_LOADER or PATH_LOADER_ZFS as appropriate.

Approved by: re (gjb)

294997 28-Jan-2016 smh

MFC r281060, r294060, r294291, r294493, r294284:

MFC r281060:
Remove an unnecessary space in a printf call

MFC r294060:
Modularise EFI boot loader

MFC r294291 (by andrew):
Reset the filesystem cache

MFC r294493:
Fix EFI UFS caching

MFC r294284 (by emaste):
boot1: correct typo in error message

Sponsored by: Multiplay

294986 28-Jan-2016 smh

MFC r294506:

Prevent loader.conf load failure due to unknown console entries

Sponsored by: Multiplay

294985 28-Jan-2016 smh

MFC r293835:

Improve non-interactive forth cmd error reporting

Sponsored by: Multiplay

294984 28-Jan-2016 smh

MFC r286234 (by trasz):

Fix a problem which made loader(8) load non-kld files twice.

Sponsored by: Multiplay

294982 28-Jan-2016 smh

MFC r294059:

Ensure boot fsread correctly probes all partitions

Sponsored by: Multiplay

294981 28-Jan-2016 smh

MFC r281169, r293724, r293796, r294029, r294041, r294058

MFC r281169 (by andrew):
Make global variabled only used in this file static

MFC r294058:
Make common boot file_loadraw name parameter const

MFC r294041:
Remove unused reg param from fdt_fixup_memory

MFC r293724:
Enable warnings in EFI boot code

MFC r293796:
Fix typo in libefi.c

MFC r294029:
Only build EFI components on supported compilers

Sponsored by: Multiplay


bootstrap.h
load_elf.c
load_elf_obj.c
misc.c
module.c
part.c
self_reloc.c
ufsread.c
/freebsd-10-stable/sys/boot/efi/Makefile
/freebsd-10-stable/sys/boot/efi/boot1/Makefile
/freebsd-10-stable/sys/boot/efi/boot1/boot1.c
/freebsd-10-stable/sys/boot/efi/include/efi_nii.h
/freebsd-10-stable/sys/boot/efi/include/efiapi.h
/freebsd-10-stable/sys/boot/efi/include/eficon.h
/freebsd-10-stable/sys/boot/efi/include/eficonsctl.h
/freebsd-10-stable/sys/boot/efi/include/efidevp.h
/freebsd-10-stable/sys/boot/efi/include/efierr.h
/freebsd-10-stable/sys/boot/efi/include/efifpswa.h
/freebsd-10-stable/sys/boot/efi/include/efigop.h
/freebsd-10-stable/sys/boot/efi/include/efilib.h
/freebsd-10-stable/sys/boot/efi/include/efinet.h
/freebsd-10-stable/sys/boot/efi/include/efiprot.h
/freebsd-10-stable/sys/boot/efi/include/efipxebc.h
/freebsd-10-stable/sys/boot/efi/include/efiser.h
/freebsd-10-stable/sys/boot/efi/libefi/Makefile
/freebsd-10-stable/sys/boot/efi/libefi/efi_console.c
/freebsd-10-stable/sys/boot/efi/libefi/efipart.c
/freebsd-10-stable/sys/boot/efi/libefi/libefi.c
/freebsd-10-stable/sys/boot/efi/loader/Makefile
/freebsd-10-stable/sys/boot/efi/loader/arch/amd64/elf64_freebsd.c
/freebsd-10-stable/sys/boot/efi/loader/arch/amd64/framebuffer.c
/freebsd-10-stable/sys/boot/efi/loader/arch/amd64/reloc.c
/freebsd-10-stable/sys/boot/efi/loader/autoload.c
/freebsd-10-stable/sys/boot/efi/loader/bootinfo.c
/freebsd-10-stable/sys/boot/efi/loader/copy.c
/freebsd-10-stable/sys/boot/efi/loader/devicename.c
/freebsd-10-stable/sys/boot/efi/loader/loader_efi.h
/freebsd-10-stable/sys/boot/efi/loader/main.c
/freebsd-10-stable/sys/boot/fdt/fdt_loader_cmd.c
/freebsd-10-stable/sys/boot/i386/libi386/smbios.c
294721 25-Jan-2016 smh

MFC r293461:

Remove hidden "Not ufs" printfs from boot code

Sponsored by: Multiplay

294417 20-Jan-2016 royger

MFC r277215, r277291, r277418, r280953 and r280954:

loader: implement multiboot support for Xen Dom0

Note that only the subset of the multiboot specification needed in order to
boot a Xen Dom0 is implemented.

Sponsored by: Citrix Systems R&D

293634 10-Jan-2016 ae

MFC r292057:
Make detection of GPT a bit more reliable.

When we are detecting a partition table and didn't find PMBR, try to
read backup GPT header from the last sector and if it is correct,
assume that we have GPT.

Differential Revision: https://reviews.freebsd.org/D4282

MFC r292058:
Remove a note about damaged PMBR. Now GPT will be detected automatically
with such corruption.

Relnotes: yes

291295 25-Nov-2015 smh

MFC r291012:

Document loader(8) dumpdev option

Sponsored by: Multiplay

290877 15-Nov-2015 ngie

MFC r289896:

Make vers.c creation atomic by using a temporary file, then moving
the temporary file to vers.c at the end of the script

The previous logic wrote out to vers.c multiple times, so the file
could be incorrectly interpreted as being completely written out
after one of the echo calls with recursive make, when in reality it
was only partially written.

Also, in the event the build was interrupted when creating vers.c
(small race window), it would have a leftover file that needed to
be cleaned up before resuming the build.

Sponsored by: EMC / Isilon Storage Division

289507 18-Oct-2015 trasz

MFC r285870:

Document md_root in loader(8). The md(4) manual page mentions it,
but it's hard to find and easy to miss.

Sponsored by: The FreeBSD Foundation

283510 25-May-2015 ian

MFC r283033, r283062, r283066, r283069:

Do not set preload_addr_relocate for ARM.

Refactor net_getparams() to make it easier to get params from sources other
than bootp and rarp.

Add a routine to obtain netboot parameters from the U-Boot env vars

Enable the NETIF_OPEN_CLOSE_ONCE option for ubldr.

283505 25-May-2015 ian

MFC r277962, r277988, r282661, r282727, r282731, r283013, r283035:

Add support for booting relocatable kernels on PowerPC.

Add code to support loading relocatable kernels at offsets that are
not zero.

Move ubldr text section to the start of the output file, so that when you
create a stripped .bin file from it the entry point is the first byte of
the file. (Will allow "load $addr $file ; go $addr" in u-boot.)

Create a relocatable instance of ubldr for ARM (ubldr.bin).

Re-link ubldr when any of its libraries change.

An ARM kernel can be loaded at any 2MB boundary, make ubldr aware of that.

281843 22-Apr-2015 dteske

MFC revisions 277693,278335,280382-280385,280923-280926,280931,
280933-280939,280974-280976,281002,281009,281081,281176-281180,
281271,281275,281616 (described in-breif below):
r277693: Font fix (des)
r278335: Revert that
r280382: Whitespace, comments, and copyright update
r280383: Prevent inadvertent bootlock condition
r280384: Increase max passowrd length from 16 to 255 chars
r280385: Add missing variable hints to loader.conf(5) defaults
r280923: Whitespace
r280924: Comments
r280925: Optimize bootmsg to use fg/bg/me from screen.4th
r280926: Whitespace and cleanup
r280931: Comments
r280933: Move beastie to logo-*.4th; brands to brand-*.4th
r280934: Add remainder of supported ANSI escape sequences
r280935: Securely overwrite (zero) user input after password checks
r280936: Use equals for ASCII double frames
r280937: Solve dreaded "dictionary full" issue
r280938: Add "GELI Passphrase:" prompt to boot loader
r280939: Revert that (premature commit)
r280974: Use fg/b/me from screen.4th instead of literals
r280975: Eliminate literal escape sequences from *.4th
r280976: Use ^[[m mode-ending versus ^[[37m
r281002: Install newly added brand-*.4th and logo-*.4th files (jkim)
r281009: Revert .PATH changes to fix mips build (jkim)
r281081: Make sure forth manpages are only installed once (bapt)
r281176: Back to previous mode-endings based on feedback
r281177: Back to previous mode-endings based on feedback
r281178: Back to previous mode-endings based on feedback
r281179: Back to previous mode-endings based on feedback
r281180: Eliminate literal escape sequences from *.rc
r281271: Fix a bootlock condition if loader_version is set
NB: Commit message of r281271 has a typo, s/_logo/_version/
r281275: Re-do proper mode-endings
r281616: Add "GELI Passphrase:" prompt to boot loader

Relnotes: Added "GELI Passphrase:" prompt to boot loader


/freebsd-10-stable/sys/boot/Makefile
/freebsd-10-stable/sys/boot/arm/uboot/Makefile
Makefile.inc
/freebsd-10-stable/sys/boot/forth/Makefile
/freebsd-10-stable/sys/boot/forth/Makefile.inc
/freebsd-10-stable/sys/boot/forth/beastie.4th
/freebsd-10-stable/sys/boot/forth/brand-fbsd.4th
/freebsd-10-stable/sys/boot/forth/brand.4th
/freebsd-10-stable/sys/boot/forth/check-password.4th
/freebsd-10-stable/sys/boot/forth/check-password.4th.8
/freebsd-10-stable/sys/boot/forth/delay.4th
/freebsd-10-stable/sys/boot/forth/frames.4th
/freebsd-10-stable/sys/boot/forth/loader.4th
/freebsd-10-stable/sys/boot/forth/loader.conf
/freebsd-10-stable/sys/boot/forth/logo-beastie.4th
/freebsd-10-stable/sys/boot/forth/logo-beastiebw.4th
/freebsd-10-stable/sys/boot/forth/logo-fbsdbw.4th
/freebsd-10-stable/sys/boot/forth/logo-orb.4th
/freebsd-10-stable/sys/boot/forth/logo-orbbw.4th
/freebsd-10-stable/sys/boot/forth/menu-commands.4th
/freebsd-10-stable/sys/boot/forth/menu.4th
/freebsd-10-stable/sys/boot/forth/menu.rc
/freebsd-10-stable/sys/boot/forth/menusets.4th
/freebsd-10-stable/sys/boot/forth/pnp.4th
/freebsd-10-stable/sys/boot/forth/screen.4th
/freebsd-10-stable/sys/boot/forth/support.4th
/freebsd-10-stable/sys/boot/forth/version.4th
/freebsd-10-stable/sys/boot/i386/loader/Makefile
/freebsd-10-stable/sys/boot/pc98/loader/Makefile
/freebsd-10-stable/sys/boot/powerpc/ofw/Makefile
/freebsd-10-stable/sys/boot/powerpc/ps3/Makefile
/freebsd-10-stable/sys/boot/sparc64/loader/Makefile
/freebsd-10-stable/sys/kern/init_main.c
/freebsd-10-stable/usr.sbin/bsdinstall/scripts/zfsboot
278637 12-Feb-2015 ian

MFC r276306: Use proper markup for quotes.

278602 11-Feb-2015 ian

MFC r276079, r276087:

Add a divisor parameter to twiddle() so that callers can request that
output only happen on every Nth call.

Add a new loader(8) variable, twiddle_divisor, allowing control over the
output frequency of the "twiddle" IO progress indicator.

274942 24-Nov-2014 grehan

MFC r274407

Fix incorrect reading of 32-bit modinfo by 64-bit loaders.

The various structures in the mod_metadata set of a FreeBSD kernel and
modules contain pointers. The FreeBSD loader correctly deals with a
mismatch in loader and kernel pointer size (e.g. 32-bit i386/ppc
loader, loading 64-bit amd64/ppc64 kernels), but wasn't dealing with
the inverse case where a 64-bit loader was loading a 32-bit kernel.

273658 26-Oct-2014 ian

MFC r271054:

When built with FDT support, add /boot/dtb to the list of search directories.

273117 15-Oct-2014 ae

MFC r272749:
Fix comment.

272933 11-Oct-2014 ae

MFC r272487:
Add UUID of FreeBSD slice to GPT scheme.

272696 07-Oct-2014 avg

MFC r271609: add gptzfsboot.8, zfsboot.8 and zfsloader.8 manual pages

270917 01-Sep-2014 ae

MFC r270445:
The size of the GPT table can not be less than one sector.

MFC r270521:
Since the size of GPT entry may differ from the sizeof(struct gpt_ent),
use the size from GPT header to iterate entries.

267399 12-Jun-2014 jhb

MFC 261504:
Add support for FreeBSD/i386 guests under bhyve.

265068 29-Apr-2014 ian

MFC r262340, r262345, r262347, find and load an appropriate dtb file.

The search order for a usable dtb in fdt_setup_fdtp() is now

- A dtb loaded with an explicit "load -t dtb" command.
- A dtb already loaded into memory somehow[*] and pointed to by fdt_to_load.
- A dtb in the memory pointed to by the u-boot env vars fdtaddr or fdt_addr.
- A file named by the u-boot env vars fdtfile or fdt_file.
- A static dtb compiled into the kernel.

* Presumably by some arch-specific command or code.

263964 31-Mar-2014 ae

MFC r263468:
When loader(8) inspects MBR, it chooses GPT as main partition table,
when MBR contains only PMBR entry or it is bootcamp-compatible.
If MBR has PMBR entry and some other, the loader rejects it.

Make these checks to be less strict. If loader decided that PMBR
isn't suitable for GPT, it will use MBR.

Reported by: Paul Thornton

256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


255977 01-Oct-2013 pluknet

Sweep man pages replacing ad -> ada.

Approved by: re (blackend)
MFC after: 1 week
X-MFC note: stable/9 only


254092 08-Aug-2013 ae

Make the check for number of entries less strict.
Some partitioning tools can create GPT with number of entries less
than 128.

MFC after: 1 week


249719 21-Apr-2013 ae

Since we didn't break the loop, we should set i to -1 to start from the
beginning.

Submitted by: Steven Hartland
MFC after: 1 week


249139 05-Apr-2013 avg

strncmp for boot code: fix an off by one error

Before this change strncmp would access and _compare_ n+1 characters
in the case where the first n characters match.

MFC after: 5 days


248121 10-Mar-2013 ian

Attach the elf section headers to the loaded kernel as metadata, so
they can easily be used by later post-processing. When searching for
a compiled-in fdt blob, use the section headers to get the size and
location of the .dynsym section to do a symbol search.

This fixes a problem where the search could overshoot the symbol
table and wander into the string table. Sometimes that was harmless
and sometimes it lead to spurious panic messages about an offset
bigger than the module size.


248118 09-Mar-2013 ian

Since ubldr doesn't necessarily load a kernel at the physical address in the
elf headers, mask out the high nibble of that address. This effectly makes
the entry point the offset from the load address, and it gets adjusted for
the actual load address before jumping to it.

Masking the high nibble makes assumptions about memory layout that are true
for all the arm platforms we support right now, but it makes me uneasy.
This needs to be revisited.


247413 27-Feb-2013 ian

Fix a typo that prevented booting a kernel that had virtual addresses in
the elf headers.


247301 26-Feb-2013 ian

Adjust the arm kernel entry point address properly regardless of whether the
e_entry field holds a physical or a virtual address. Add a comment block
that explains the assumptions being made by the adjustment code.


247250 25-Feb-2013 kientzle

Fix the bug I introduced in r247045.
After digging through more carefully, it looks like there's
no real need to have the DTB in the module directory.
So we can simplify a lot: Just copy DTB into local heap
for "fdt addr" and U-Boot integration, drop all the extra
COPYIN() calls.

I've left one final COPYIN() to update the in-kernel DTB
for consistency with how this code used to work, but I'm
no longer convinced it's appropriate here.

I've also remove the mem_load_raw() utility that I added
to boot/common/module.c with r247045 since it's no longer
necessary.


246953 18-Feb-2013 kientzle

Add mem_load_raw() for loading data from another location in memory.

This will be used by some upcoming changes to loader(8) FDT
handling to allow it to use an FDT provided by an earlier
boot stage the same as an FDT loaded from disk.


246630 10-Feb-2013 ae

Add bootcamp support to the loader.

Tested by: dchagin
MFC after: 1 week


245148 08-Jan-2013 grehan

Bring in some userboot changes from the bhyve branch to reduce diffs.

r238966
Bump up the heap size to 1MB. With a few kernel modules, libstand
zalloc and userboot seem to want to use ~600KB of heap space, which
results in a segfault when malloc fails in bhyveload.

r241180
Clarify comment about default number of FICL dictionary cells.

r241153
Allow the number of FICL dictionary cells to be overridden.
Loading a 7.3 ISO with userboot/amd64 takes up 10035 cells,
overflowing the long-standing default of 10000.

Bump userboot's value up to 15000 cells.

Reviewed by: dteske (r238966,241180)
Obtained from: NetApp


242688 07-Nov-2012 dteske

Hook in new files menusets.4th and manual.

Approved by: adrian (co-mentor) (implicit)


242145 26-Oct-2012 mav

Fix loader crash when some unhalted exception happens during `include`
command execution. In case of such unhandled exception, vmReset() inside
ficlExecC() flushes the VM state. Attempt to return back to Forth after
that cause garbage dereference with unexpected results. To avoid that
situation call vmThrow() directly instead of expecting Forth to do it.


242084 25-Oct-2012 mav

Remove new-line characters from the include() errors to make it consistent
with the rest of code.


241876 22-Oct-2012 ae

When loader tries to open GPT partition, but partition table is not GPT,
then try automatically detect an appropriate partition type.

PR: kern/172550
Tested by: Ralf Wenk


241809 21-Oct-2012 ae

Add the flags parameter to the disk_open() function and DISK_F_NOCACHE
flag, that disables the caching of partition tables metadata.
Use this flag for floppies in the libi386/biosdisk driver.


241299 06-Oct-2012 avg

boot/console: handle consoles that fail to probe

- clarify meaning of console flags
- perform i/o via a console only if both of the following conditions are met:
o console is active (selected by user or config)
o console flags that it can perform the operation
- warn if a chosen console can not work (the warning may go nowhere without
working and active console, though)

Reviewed by: jhb
Tested by: Uffe Jakobsen <uffe@uffe.org>,
Olivier Cochard-Labbe' <olivier@cochard.me>
MFC after: 26 days


241070 30-Sep-2012 ae

Fix the style.


241069 30-Sep-2012 ae

Remember the file format of the last loaded module and try to use it for
next files.


241065 30-Sep-2012 ae

Fix disk_cleanup() to work without DISK_DEBUG too.


241053 29-Sep-2012 ae

Almost each time when loader opens a file, this leads to calling
disk_open(). Very often this is called several times for one file.
This leads to reading partition table metadata for each call. To
reduce the number of disk I/O we have a simple block cache, but it
is very dumb and more than half of I/O operations related to reading
metadata, misses this cache.

Introduce new cache layer to resolve this problem. It is independent
and doesn't need initialization like bcache, and will work by default
for all loaders which use the new DISK API. A successful disk_open()
call to each new disk or partition produces new entry in the cache.
Even more, when disk was already open, now opening of any nested
partitions does not require reading top level partition table.
So, if without this cache, partition table metadata was read around
20-50 times during boot, now it reads only once. This affects the booting
from GPT and MBR from the UFS.


241023 28-Sep-2012 ae

Make the loader a bit smarter, when it tries to open disk and the slice
number is not exactly specified. When the disk has MBR, also try to read
BSD label after ptable_getpart() call. When the disk has GPT, also set
d_partition to 255. Mostly, this is how it worked before.


240782 21-Sep-2012 andreast

Implement elfN(reloc) for powerpc. With this change the kernel is now able to
resolve dependencies of modules at boot time and load additional modules when
needed.

MFC after: 1 week


240481 14-Sep-2012 kientzle

The MBR data is not necessarily aligned. This is a problem on ARM.


240342 11-Sep-2012 avg

boot: file_loadraw should strdup name argument

... the same way it's done for type argument.

MFC after: 2 weeks


240249 08-Sep-2012 andreast

Fix loading of kernel modules at boot time for powerpc64.

Reported by: Mathias Breuninger
MFC after: 1 week


239325 16-Aug-2012 ae

Add comment why the code has been disabled.

Requested by: rpaulo


239294 15-Aug-2012 ae

Some BIOSes return incorrect number of sectors, make checks less
strictly, to do not lost some partitions.

Reported by: swills@


239293 15-Aug-2012 ae

Rework r239232 to unbreak ZFS detection on MBR slices.


239255 14-Aug-2012 des

As discussed on -current, remove the hardcoded default maxswzone.

MFC after: 3 weeks


239232 13-Aug-2012 ae

Restore the old behaviour. If requested partition is a BSD slice,
but d_partition isn't explicitly set, then try to open BSD label and its
first partition.


239231 13-Aug-2012 ae

Remove colons from the debug message, device name returned by the
disk_fmtdev() already has the colons.


239230 13-Aug-2012 ae

Unbreak booting from the true dedicated disks.
When we open the disk, check the type of partition table, that has
been detected. If this is BSD label, then we assume this is DD mode.

Reported by: dim@


239210 12-Aug-2012 ae

Add more debug messages.


239127 07-Aug-2012 ae

As it turned out, there are some installations, where BSD label
contains partitions with type zero. And it has worked.
So, allow detect these partitions.

Reported by: glebius


239088 06-Aug-2012 ae

Fix start offset calculation for the EBR partitions.


239058 05-Aug-2012 ae

Introduce new API to work with disks from the loader's drivers.
It uses new API from the part.c to work with partition tables.

Update userboot's disk driver to use new API. Note that struct
loader_callbacks_v1 has changed.


239054 05-Aug-2012 ae

Create the interface to work with various partition tables from the
loader(8). The following partition tables are supported: BSD label, GPT,
MBR, EBR and VTOC8.


237338 20-Jun-2012 jhb

Don't return an error if a kld does not contain any modules (e.g. a
kld that only contained a sysctl). The kernel linker allows such
modules, so the boot loader should not reject them.

MFC after: 2 weeks


235988 25-May-2012 gleb

Use 32-bit ufs_ino_t instead of ino_t to keep boot2 small and prevent
unnecessary 64-bit math on 32-bit machines.

Sponsored by: Google Summer of Code 2011


235873 24-May-2012 wblock

Fixes to man8 groff mandoc style, usage mistakes, or typos.

PR: 168016
Submitted by: Nobuyuki Koganemaru
Approved by: gjb
MFC after: 3 days


235330 12-May-2012 avg

zfs boot: try to set vfs.root.mountfrom from currdev as a fallback

This way with the new zfsloader there is no need to explicitly set zfs
root filesystem either via vfs.root.mountfrom or fstab.
It should be automatically picked up from currdev which is by default
is set from bootfs.

Tested by: Florian Wagner <florian@wagner-flo.net> (x86)
MFC after: 1 month


235329 12-May-2012 avg

zfsboot/zfsloader: support accessing filesystems within a pool

In zfs loader zfs device name format now is "zfs:pool/fs",
fully qualified file path is "zfs:pool/fs:/path/to/file"
loader allows accessing files from various pools and filesystems as well
as changing currdev to a different pool/filesystem.

zfsboot accepts kernel/loader name in a format pool:fs:path/to/file or,
as before, pool:path/to/file; in the latter case a default filesystem
is used (pool root or bootfs). zfsboot passes guids of the selected
pool and dataset to zfsloader to be used as its defaults.

zfs support should be architecture independent and is provided
in a separate library, but architectures wishing to use this zfs support
still have to provide some glue code and their devdesc should be
compatible with zfs_devdesc.
arch_zfs_probe method is used to discover all disk devices that may
be part of ZFS pool(s).

libi386 unconditionally includes zfs support, but some zfs-specific
functions are stubbed out as weak symbols. The strong definitions
are provided in libzfsboot.
This change mean that the size of i386_devspec becomes larger
to match zfs_devspec.

Backward-compatibility shims are provided for recently added sparc64
zfs boot support. Currently that architecture still works the old
way and does not support the new features.

TODO:
- clear up pool root filesystem vs pool bootfs filesystem distinction
- update sparc64 support
- set vfs.root.mountfrom based on currdev (for zfs)

Mid-future TODO:
- loader sub-menu for selecting alternative boot environment

Distant future TODO:
- support accessing snapshots, using a snapshot as readonly root

Reviewed by: marius (sparc64),
Gavin Mu <gavin.mu@gmail.com> (sparc64)
Tested by: Florian Wagner <florian@wagner-flo.net> (x86),
marius (sparc64)
No objections: fs@, hackers@
MFC after: 1 month


235153 09-May-2012 avg

sys/boot: add common CTASSERT definition


234789 29-Apr-2012 marius

Add multiple inclusion protection.

PR: 165025
Submitted by: Gavin Mu
MFC after: 1 week


234176 12-Apr-2012 ae

Read backup GPT header from the last LBA only when primary GPT header and
table aren't valid. If they are ok, use hdr_lba_alt value to read backup
header. This will make gptboot happy when GPT used atop of some GEOM
provider, e.g. GEOM_MIRROR.

Reviewed by: pjd
MFC after: 2 weeks


233648 29-Mar-2012 eadler

Remove trailing whitespace per mdoc lint warning

Disussed with: gavin
No objection from: doc
Approved by: joel
MFC after: 3 days


233517 26-Mar-2012 marius

Remove second consts in r233288 in order to appease C++ compilers.
While at it, remove some style(9) bugs in libkern.h.

Submitted by: kan


233288 21-Mar-2012 marius

Declare the CRC lookup-tables const as they hardly should change at
run-time.


233105 18-Mar-2012 marius

Declare some variables static in order to reduce the object size and
redo r232822 in a less hackish way. The latter now no longer breaks
compiling the x86 boot2 with clang.

MFC after: 1 week


232822 11-Mar-2012 marius

Fix a bug introduced in r223938; on big-endian machines coping a 32-bit
quantum bytewise to the address of a 64-bit variable results in writing
to the "wrong" 32-bit half so adjust the address accordingly. This fix
is implemented in a hackish way for two reasons:
o in order to be able to get it into 8.3 with zero impact on the little-
endian architectures where this bug has no effect and
o to avoid blowing the x86 boot2 out of the water again when compiling
it with clang, which all sane versions of this fix tested do.
This change fixes booting from UFS1 file systems on big-endian machines.

MFC after: 3 days


229771 07-Jan-2012 kib

Document comconsole_port and comconsole_pcidev loader variables.

MFC after: 2 weeks


229403 03-Jan-2012 ed

Replace index() and rindex() calls with strchr() and strrchr().

The index() and rindex() functions were marked LEGACY in the 2001
revision of POSIX and were subsequently removed from the 2008 revision.
The strchr() and strrchr() functions are part of the C standard.

This makes the source code a lot more consistent, as most of these C
files also call into other str*() routines. In fact, about a dozen
already perform strchr() calls.


228916 27-Dec-2011 pluknet

Clean up from the 4.x era.

In an example of boot command:
- rename wd(4) IDE disk drives name to ad(4) for the time being.
- update the used kernel path "/kernel" to the current default.
[It still worked occasionally by looking into the /boot/kernel directory,
so the resulting path was "/boot//kernel/kernel", with two slashes.]

Bump .Dd for this and previous changes.

MFC after: 1 week


227056 03-Nov-2011 pluknet

Remove the remnants of /stand/sysinstall.

loader.8: Sync the default init_path list with kern/init_main.c.

NOTES: Replace with /rescue/init in the INIT_PATH kernel option.


226569 20-Oct-2011 pjd

With LOADER_MBR_SUPPORT defined and LOADER_GPT_SUPPORT undefined we would
never call disk_openmbr().

Submitted by: avg
MFC after: 3 days


226554 19-Oct-2011 pjd

Fix missing return when LOADER_GPT_SUPPORT is defined, but LOADER_MBR_SUPPORT
is not.

MFC after: 3 days


224722 08-Aug-2011 dim

Fix buffer overflow in sys/boot/common/util.c's printf(), when printing
large (>= 10^10) numbers. In theory, 20 characaters should be enough,
but bump the buffer to 32 characters, so we have some room for the
future.

Reviewed by: pjd
Approved by: re (kib)


223938 11-Jul-2011 marius

Since r219452 the alignment of __dmadat has changed, revealing that fsread()
bogusly casts its contents around causing alignment faults on sparc64 and
most likely also on at least powerpc. Fix this by copying the contents
bytewise instead as partly already done here. Solving this the right way
costs some space, i.e. 148 bytes with GCC and 16 bytes with clang on x86
there are still some bytes left there though, and an acceptable hack which
tricks the compiler into only using a 2-byte alignment instead of the native
one when accessing the contents turned out to even take up more space that.


223712 01-Jul-2011 marius

Fix r223695 to compile on architectures which don't use the MBR scheme; wrap
the MBR support in the common part of the loader in #ifdef's and enable it
only for userboot for now.


223695 30-Jun-2011 dfr

Add a version of the FreeBSD bootloader which can run in userland, packaged
as a shared library. This is intended to be used by BHyVe to load FreeBSD
kernels into new virtual machines.


223295 19-Jun-2011 kan

Minimize backward seeks when trying to load ELF relocatable modules.

Some of loader filesystems are very ill equipped to handle seeking
backwards within the file. Namely, tftp requires trasfer to be
restarted from the start of the file every time we go backwards.


222417 28-May-2011 julian

New boot loader menus from Devin Teske.
Discussed on hackers and recommended for inclusion into 9.0 at the devsummit.
All support email to devin dteske at vicor dot ignoreme dot com .

Submitted by: dteske at vicor dot ignoreme dot com
Reviewed by: me and many others


221869 14-May-2011 attilio

Disconnect sun4v architecture from the three.

Some files keep the SUN4V tags as a code reference, for the future,
if any rewamped sun4v support wants to be added again.

Reviewed by: marius
Tested by: sbruno
Approved by: re


221601 07-May-2011 avg

a whitespace nit

Reminder from: kib
MFC after: 4 days


221593 07-May-2011 avg

a whitespace nit

MFC after: 4 days


220332 04-Apr-2011 marcel

Fix a long standing bug where file_load() passes down the global loadaddr
to the l_load() method in the file_formats structure, while being passed
an address as an argument (dest). With file_load() calling arch_loadaddr()
now, this bug is a little bit more significant.

Spotted by: nyan@ (nice catch!)


220311 03-Apr-2011 marcel

Add 2 new archsw interfaces:
1. arch_loadaddr - used by platform code to adjust the address at which
the object gets loaded. Implement PC98 using this new interface instead
of using conditional compilation. For ELF objects the ELF header is
passed as the data pointer. For raw files it's the filename. Note that
ELF objects are first considered as raw files.
2. arch_loadseg - used by platform code to keep track of actual segments,
so that (instruction) caches can be flushed or translations can be
created. Both the ELF header as well as the program header are passed
to allow platform code to treat the kernel proper differently from any
additional modules and to have all the relevant details of the loaded
segment (e.g. protection).


220290 03-Apr-2011 marcel

Revert rev 165325. The arch_maphint interface hasn't been in use for
more than 4 years.


219691 16-Mar-2011 marcel

MFaltix:
Add support for Pre-Boot Virtual Memory (PBVM) to the loader.

PBVM allows us to link the kernel at a fixed virtual address without
having to make any assumptions about the physical memory layout. On
the SGI Altix 350 for example, there's no usuable physical memory
below 192GB. Also, the PBVM allows us to control better where we're
going to physically load the kernel and its modules so that we can
make sure we load the kernel in memory that's close to the BSP.

The PBVM is managed by a simple page table. The minimum size of the
page table is 4KB (EFI page size) and the maximum is currently set
to 1MB. A page in the PBVM is 64KB, as that's the maximum alignment
one can specify in a linker script. The bottom line is that PBVM is
between 64KB and 8GB in size.

The loader maps the PBVM page table at a fixed virtual address and
using a single translations. The PBVM itself is also mapped using a
single translation for a maximum of 32MB.

While here, increase the heap in the EFI loader from 512KB to 2MB
and set the stage for supporting relocatable modules.


219452 10-Mar-2011 rdivacky

Some more shrinking.

o bunch of variables are turned into uint8_t

o initial setting of namep[] in lookup() is removed
as it's only overwritten a few lines down

o kname is explicitly initialized in main() as BSS
in boot2 is not zeroed

o the setting and reading of "fmt" in load() is removed

o buf in printf() is made static to save space

Reviewed by: jhb
Tested by: me and Fabian Keil <freebsd-listen fabiankeil de>


219083 27-Feb-2011 pjd

Rename bcpy() macro to bcopy().


218974 23-Feb-2011 brucec

Handle memory allocation failures in include().

PR: i386/85652
Submitted by: Ben Thomas <bthomas at virtualiron.com>
MFC after: 3 days


218716 15-Feb-2011 dim

In sys/boot/common/ufsread.c, use uint8_t instead of u_int8_t.

Submitted by: mdf


218713 15-Feb-2011 dim

Apply a few small optimizations to boot2's code, to make it shrink a
little further. This gets us further on the way to be able to build it
successfully with clang. Using in-tree gcc, this shrinks boot2.bin with
60 bytes, the in-tree clang shaves off 72 bytes, and ToT clang 84 bytes.

Submitted by: rdivacky
Reviewed by: imp


217688 21-Jan-2011 pluknet

Make MSGBUF_SIZE kernel option a loader tunable kern.msgbufsize.

Submitted by: perryh pluto.rain.com (previous version)
Reviewed by: jhb
Approved by: kib (mentor)
Tested by: universe


215811 25-Nov-2010 emaste

Give a bit of a hint of the failure (read != expected) but don't make
the error message needlessly more verbose.

Discussed with: attilio


215758 23-Nov-2010 attilio

Make this printfoutput more verbose.

Sponsored by: Sandvine Incorporated
Submitted by: Sandvine Incorporated
MFC after: 3 days


215016 08-Nov-2010 jhb

Remove support for autoloading ACPI from the loader. Leave in the code to
detect ACPI and export info such as the location of the RSDP via hints as
that is still useful.


214114 20-Oct-2010 pjd

Correct typos.


213573 08-Oct-2010 uqs

mdoc: drop redundant .Pp and .LP calls

They have no effect when coming in pairs, or before .Bl/.Bd


213136 24-Sep-2010 pjd

- Split code shared by almost any boot loader into separate files and
clean up most layering violations:

sys/boot/i386/common/rbx.h:

RBX_* defines
OPT_SET()
OPT_CHECK()

sys/boot/common/util.[ch]:

memcpy()
memset()
memcmp()
bcpy()
bzero()
bcmp()
strcmp()
strncmp() [new]
strcpy()
strcat()
strchr()
strlen()
printf()

sys/boot/i386/common/cons.[ch]:

ioctrl
putc()
xputc()
putchar()
getc()
xgetc()
keyhit() [now takes number of seconds as an argument]
getstr()

sys/boot/i386/common/drv.[ch]:

struct dsk
drvread()
drvwrite() [new]
drvsize() [new]

sys/boot/common/crc32.[ch] [new]

sys/boot/common/gpt.[ch] [new]

- Teach gptboot and gptzfsboot about new files. I haven't touched the
rest, but there is still a lot of code duplication to be removed.

- Implement full GPT support. Currently we just read primary header and
partition table and don't care about checksums, etc. After this change we
verify checksums of primary header and primary partition table and if
there is a problem we fall back to backup header and backup partition
table.

- Clean up most messages to use prefix of boot program, so in case of an
error we know where the error comes from, eg.:

gptboot: unable to read primary GPT header

- If we can't boot, print boot prompt only once and not every five
seconds.

- Honour newly added GPT attributes:

bootme - this is bootable partition
bootonce - try to boot from this partition only once
bootfailed - we failed to boot from this partition

- Change boot order of gptboot to the following:

1. Try to boot from all the partitions that have both 'bootme'
and 'bootonce' attributes one by one.
2. Try to boot from all the partitions that have only 'bootme'
attribute one by one.
3. If there are no partitions with 'bootme' attribute, boot from
the first UFS partition.

- The 'bootonce' functionality is implemented in the following way:

1. Walk through all the partitions and when 'bootonce'
attribute is found without 'bootme' attribute, remove
'bootonce' attribute and set 'bootfailed' attribute.
'bootonce' attribute alone means that we tried to boot from
this partition, but boot failed after leaving gptboot and
machine was restarted.
2. Find partition with both 'bootme' and 'bootonce' attributes.
3. Remove 'bootme' attribute.
4. Try to execute /boot/loader or /boot/kernel/kernel from that
partition. If succeeded we stop here.
5. If execution failed, remove 'bootonce' and set 'bootfailed'.
6. Go to 2.

If whole boot succeeded there is new /etc/rc.d/gptboot script coming
that will log all partitions that we failed to boot from (the ones with
'bootfailed' attribute) and will remove this attribute. It will also
find partition with 'bootonce' attribute - this is the partition we
booted from successfully. The script will log success and remove the
attribute.

All the GPT updates we do here goes to both primary and backup GPT if
they are valid. We don't touch headers or partition tables when
checksum doesn't match.

Reviewed by: arch (Message-ID: <20100917234542.GE1902@garage.freebsd.pl>)
Obtained from: Wheel Systems Sp. z o.o. http://www.wheelsystems.com
MFC after: 2 weeks


211817 25-Aug-2010 nwhitehorn

Fix build of ppc32 loader.


211747 24-Aug-2010 rpaulo

Replace structure assignments with explicity memcpy calls. This allows
Clang to compile this file: it was using the builtin memcpy and we want
to use the memcpy defined in gptboot.c. (Clang can't compile boot2 yet).

Submitted by: Dimitry Andric <dimitry at andric.com>
Reviewed by: jhb


211678 23-Aug-2010 imp

MF tbemd: Minor tweaks, prefer MACHINE_CPUARCH generally to MACHINE_ARCH (which simplifies some powerpc/powerpc64 ifs)


210764 02-Aug-2010 uqs

mdoc: make sure to pass at least one argument to quotation macros


210423 23-Jul-2010 avg

completely ignore zero-sized elf sections in modules of elf object type (amd64)

Current code doesn't check size of elf sections and may perform needless
actions of zero-sized memory allocation and similar.
The bigger issue is that alignment requirement of a zero-sized section
gets effectively applied to the next section if it has smaller alignment
requirement. But other tools, like gdb and consequently kgdb,
completely ignore zero-sized sections and thus may map symbols to
addresses differently.

Zero-sized sections are not typical in general.
Their typical (only, even) cause in FreeBSD modules is inline assembly that
creates custom sections which is found in pcpu.h and vnet.h. Mere inclusion
of one of those header files produces a custom section in elf output.
If there is no actual use for the section in a given module, then the
section remains empty.

Better solution is to avoid creating zero-sized sections altogether,
which is in plans.

Preloaded modules are handled in boot code (load_elf_obj.c), while
dynamically loaded modules are handled by kernel (link_elf_obj.c).

Based on code by: np
MFC after: 3 weeks


209920 12-Jul-2010 nwhitehorn

Provide support in loader for booting 64-bit PowerPC kernels. Like amd64,
64-bit PowerPC kernels are loaded by a 32-bit loader, since nearly all
powerpc64 firmwares execute in 32-bit mode.


207854 10-May-2010 imp

Formatting nit


201941 09-Jan-2010 marcel

Remove file system support based on the simple file system protocol
as this only allows us to access file systems that EFI knows about.
With a loader that can only use EFI-supported file systems, we're
forced to put /boot on the EFI system partition. This is suboptimal
in the following ways:
1. With /boot a symlink to /efi/boot, mergemaster complains about
the mismatch and there's no quick solution.
2. The EFI loader can only boot a single version of FreeBSD. There's
no way to install multiple versions of FreeBSD and select one
at the loader prompt.
3. ZFS maintains /boot/zfs/zpool.cache and with /boot a symlink we
end up with the file on a MSDOS file system. ZFS does not have
proper handling of file systems that are under Giant.

Implement a disk device based on the block I/O protocol instead and
pull in file system code from libstand. The disk devices are really
the partitions that EFI knows about.

This change is backward compatible.

MFC after: 1 week


201932 09-Jan-2010 marius

- Add code allowing a network device to only be open and closed once
by keeping it opened after the first open and closing it via the
cleanup handler when NETIF_OPEN_CLOSE_ONCE is defined in order to
avoid the open-close-dance on every file access which with firmware
that for example performs an auto-negotiation on every open causes
netbooting to take horribly long. Basically the behavior with this
knob enabled resembles the one employed between r60506 and r177108
(and for sparc64 also again since r182919) with the addition that
the network device now is closed eventually before entering the
kernel and before rebooting. Actually I think this should be the
desired MI behavior, however the U-Boot loader actually requires
net_close() to be called after every transaction in order for some
local shutdown operations to be performed (and which I think thus
will break on concurrent opens, i.e. when netdev_opens is > 1, like
the loader does at least for disks when LOADER_GZIP_SUPPORT is
enabled).
- Use NETIF_OPEN_CLOSE_ONCE to replace the hack, which artificially
increased netdev_opens for sparc64 in order to keep the network
device opened forever, as at least some firmware versions require
the network device to be closed eventually before entering the
kernel or otherwise will DMA received packets to stale memory.
The powerpc OFW loader probably wants NETIF_OPEN_CLOSE_ONCE to be
set as well for the same reasons.


201901 09-Jan-2010 marius

Remove clause 3 and 4 from TNF licenses (this was the only 4-clause TNF
license FreeBSD had in sys/boot).

Obtained from: NetBSD


201340 31-Dec-2009 nyan

Don't use 15M-16M area on pc98. It's reserved for some devices.

MFC after: 2 week


200945 24-Dec-2009 marius

- Consistently wrap debugging in NETIF_DEBUG. This basically merges
NetBSD rev 1.19.
- Make the functions match their prototypes regarding static.


200460 13-Dec-2009 marcel

Add support for memory disk (md). The size of the memory disk
is determined by MD_IMAGE_SIZE. A file system can be embedded
into the loader with /sys/tools/embed_mfs.sh.
Note that md.c is not included when MD_IMAGE_SIZE is not set.


199210 12-Nov-2009 attilio

Introduce a new option (BOOT_PROMPT_123) that lets enter the boot prompt
only when typing the sequence "123" (opposite to the standard 'push any
button' approach).
That results useful when using serial lines sending garbage and leading
to unwilling boot prompt appearence.

Obtained from: Sandvine Incorporated
Reviewed by: emaste, jhb
Sponsored by: Sandvine Incorporated
MFC: 1 week


198537 28-Oct-2009 brueffer

Close a file descriptor leak in an error case.

PR: 138374
Submitted by: Patroklos Argyroudis <argp@census-labs.com>
MFC after: 1 week


193192 01-Jun-2009 rodrigc

sys/boot/common.c
=================
Extend the loader to parse the root file system mount options in /etc/fstab,
and set a new loader variable vfs.root.mountfrom.options with these options.
The root mount options must be a comma-delimited string, as specified in
/etc/fstab.
Only set the vfs.root.mountfrom.options variable if it has not been
set in the environment.

sys/kern/vfs_mount.c
====================
When mounting the root file system, pass the mount options
specified in vfs.root.mountfrom.options, but filter out "rw" and "noro",
since the initial mount of the root file system must be done as "ro".
While we are here, try to add a few hints to the mountroot prompt
to give users and idea what might of gone wrong during mounting
of the root file system.

Reviewed by: jhb (an earlier patch)


192972 28-May-2009 dfr

Some of the boot loader code only works on a ufs file system, but it
uses the generic struct dirent, which happens to look identical to UFS's
struct direct. If BSD ever changes dirent then this will be a problem.

Submitted by: matthew dot fleming at isilon dot com


188666 16-Feb-2009 thompsa

Add a helper function for loading geli keys from the loader.


187197 13-Jan-2009 luigi

remove a file which is, as far as I can tell, totally unused.


185692 06-Dec-2008 danger

- correct variable name

PR: docs/129448
Submitted by: Kenyon Ralph <kralph@gmail.com>
MFC after: Revision 1.91 is merged


185132 20-Nov-2008 luigi

As reported in kern/118222, pxeboot in RELENG7 (and presumably
above) exhibits some misbehaviours on machines with AMD64 CPUs,
which at least in some cases I have tracked down to a heap overflow.

It is unclear whether it depends on the CPU or on the pxe bios
itself which may use more memory on AMD machines.

Noticeably a pxeboot compiled from 6.x sources works fine on all
machines I have tried so far, while a pxeboot compiled from 7.x
sources does not.

This patch is a first step in reducing the amount of memory used
while processing the configuration files read by the loader at boot
(some of them are quite large, 1700+ lines), and it does so by:
+ moving a buffer to static memory instead of allocating in the heap;
+ skipping empty lines;
+ reducing the amount of memory used for line descriptors;

Unfortunately there are several changes between 6.x and above,
affecting the compiler, the loader code itself, and libstand,
and it is not so straightforward to
These changes fix the behaviour on one motherboard with a
single-core AMD cpu, but are still not enough e.g on an Asus
M2N-VM (with a dual-core CPU).

I need to investigate the problem a bit more before figuring
out what should be committed to RELENG_7

PR: kern/118222


185029 17-Nov-2008 pjd

Update ZFS from version 6 to 13 and bring some FreeBSD-specific changes.

This bring huge amount of changes, I'll enumerate only user-visible changes:

- Delegated Administration

Allows regular users to perform ZFS operations, like file system
creation, snapshot creation, etc.

- L2ARC

Level 2 cache for ZFS - allows to use additional disks for cache.
Huge performance improvements mostly for random read of mostly
static content.

- slog

Allow to use additional disks for ZFS Intent Log to speed up
operations like fsync(2).

- vfs.zfs.super_owner

Allows regular users to perform privileged operations on files stored
on ZFS file systems owned by him. Very careful with this one.

- chflags(2)

Not all the flags are supported. This still needs work.

- ZFSBoot

Support to boot off of ZFS pool. Not finished, AFAIK.

Submitted by: dfr

- Snapshot properties

- New failure modes

Before if write requested failed, system paniced. Now one
can select from one of three failure modes:
- panic - panic on write error
- wait - wait for disk to reappear
- continue - serve read requests if possible, block write requests

- Refquota, refreservation properties

Just quota and reservation properties, but don't count space consumed
by children file systems, clones and snapshots.

- Sparse volumes

ZVOLs that don't reserve space in the pool.

- External attributes

Compatible with extattr(2).

- NFSv4-ACLs

Not sure about the status, might not be complete yet.

Submitted by: trasz

- Creation-time properties

- Regression tests for zpool(8) command.

Obtained from: OpenSolaris


183878 14-Oct-2008 raj

Initial support of loader(8) for ARM machines running U-Boot.

This uses the common U-Boot support lib (sys/boot/uboot, already used on
FreeBSD/powerpc), and assumes the underlying firmware has the modern API for
stand-alone apps enabled in the config (CONFIG_API).

Only netbooting is supported at the moment.

Obtained from: Marvell, Semihalf


182919 10-Sep-2008 marius

Revert r177108 and restore r60506 for sparc64 as long as libstand
isn't fixed to only open the network device once and not do a open
and close dance on every file access; the firmwares of newer sparc64
machines perform an auto-negotiation with every open which in turn
causes netbooting to take horribly long if we open and close the
device over and over again.


182731 03-Sep-2008 raj

Show info about net devices in loader's 'lsdev' command. While there fix style.


181278 04-Aug-2008 cperciva

Setting a variable to the same value twice doesn't actually make it
more likely to have the right value. Remove superfluous assignments.

Found by: LLVM/Clang Static Checker


180208 03-Jul-2008 peter

Set magic fbsd:nokeywords property that allows files to bypass
keyword expansion. (file-specific replacement for CVSROOT/exclude)


179634 07-Jun-2008 kib

Fix the incorrect calculation of a block address within a single indirect
block.

PR: 108215
Submitted by: Yuichiro Goto, y7goto gmail com
MFC after: 2 weeks


177108 12-Mar-2008 raj

Eliminate artificial increasing of 'netdev_opens' counter in loader's net_open().

This was introduced as a workaround long time ago for some Alpha firmware
(which is now gone), and actually prevented net_close() to ever be
called.

Certain firmwares (U-Boot) need local shutdown operations to be performed on a
network controller upon transaction end: such platform-specific hooks are
supposed to be called via netif_close() (from within net_close()).

This change effectively reverts the following CVS commit:

sys/boot/common/dev_net.c

revision 1.7
date: 2000/05/13 15:40:46; author: dfr; state: Exp; lines: +2 -1
Only probe network settings on the first open of the network device.
The alpha firmware takes a seriously long time to open the network device
the first time.

Also suppress excessive output while netbooting via loader, unless debugging.

While there, make sys/boot/uboot more style(9) compliant.

Reviewed by: imp
Approved by: cognet (mentor)


176484 23-Feb-2008 marcel

Add __elfN(relocation_offset). It holds the offset between the virtual
(link) address and the physical (load) address. Ideally, the mapping
between link and load addresses should be abstracted by the copyin(),
copyout() and readin() functions, so that we don't have to add kluges
in __elfN(loadimage)(). Then, we could also have paged virtual memory
for the kernel. This can be important under EFI, where you need to
allocate physical memory form the firmware if you want to work in all
scenarios.


173440 08-Nov-2007 ru

Document the per-arch default value of kern.maxbcache.


173040 26-Oct-2007 jhb

Use the smaller cgbase() macro in ufsread.c if UFS_SMALL_CGBASE is
defined. This lets each boot program choose which version of cgbase() it
wants to use rather than forcing ufsread.c to have that knowledge.

MFC after: 1 week
Discussed with: imp


173024 26-Oct-2007 imp

The arm boot code uses this function as well. Redefining cgbase()
saves about 500 bytes in the boot code. While the AT91RM9200 has 12k
of space for the boot loader, which is more than i386's 8k, the code
generated by gcc is a bit bigger.

I've had this in p4 for about two years now.


172940 24-Oct-2007 jhb

First cut at support for booting a GPT labeled disk via the BIOS bootstrap
on i386 and amd64 machines. The overall process is that /boot/pmbr lives
in the PMBR (similar to /boot/mbr for MBR disks) and is responsible for
locating and loading /boot/gptboot. /boot/gptboot is similar to /boot/boot
except that it groks GPT rather than MBR + bsdlabel. Unlike /boot/boot,
/boot/gptboot lives in its own dedicated GPT partition with a new
"FreeBSD boot" type. This partition does not have a fixed size in that
/boot/pmbr will load the entire partition into the lower 640k. However,
it is limited in that it can only be 545k. That's still a lot better than
the current 7.5k limit for boot2 on MBR. gptboot mostly acts just like
boot2 in that it reads /boot.config and loads up /boot/loader. Some more
details:
- Include uuid_equal() and uuid_is_nil() in libstand.
- Add a new 'boot' command to gpt(8) which makes a GPT disk bootable using
/boot/pmbr and /boot/gptboot. Note that the disk must have some free
space for the boot partition.
- This required exposing the backend of the 'add' function as a
gpt_add_part() function to the rest of gpt(8). 'boot' uses this to
create a boot partition if needed.
- Don't cripple cgbase() in the UFS boot code for /boot/gptboot so that
it can handle a filesystem > 1.5 TB.
- /boot/gptboot has a simple loader (gptldr) that doesn't do any I/O
unlike boot1 since /boot/pmbr loads all of gptboot up front. The
C portion of gptboot (gptboot.c) has been repocopied from boot2.c.
The primary changes are to parse the GPT to find a root filesystem
and to use 64-bit disk addresses. Currently gptboot assumes that the
first UFS partition on the disk is the / filesystem, but this algorithm
will likely be improved in the future.
- Teach the biosdisk driver in /boot/loader to understand GPT tables.
GPT partitions are identified as 'disk0pX:' (e.g. disk0p2:) which is
similar to the /dev names the kernel uses (e.g. /dev/ad0p2).
- Add a new "freebsd-boot" alias to g_part() for the new boot UUID.

MFC after: 1 month
Discussed with: marcel (some things might still change, but am committing
what I have so far)


172445 04-Oct-2007 obrien

Also boot *.debug if everything else fails.

Approved by: re(gnn)


169399 09-May-2007 sepotvin

Add documentation for the vm.kmem_size_min and vm.kmem_size_max tunables.

Approved by: njl (mentor, blanket)


169286 05-May-2007 jmg

fixup talk of kern.maxswzone... It's been 32MB for almost 5 years now...
and only supports just over 7GB of swap...

Sound a bit more professional..

Inspired by: Marc G. Fournier
MFC After: 3 days


166486 04-Feb-2007 imp

Document the init_chroot and init_script variables.

# I didn't check the markup too closely, so doc people, please check

Submitted by: Oliver Fromme


165876 07-Jan-2007 marius

Garbage collect the code for auto-loading modules based on ISAPNP IDs,
which is #if'ed out since nearly eight years, along with its outdated
database.

Agreed by: ru (some months ago)


165325 18-Dec-2006 kmacy

add an interface for passing the entire kernel size up front to the
loader so that it can memory can be allocated aligned at the beginning of
the desired large page


164739 29-Nov-2006 yar

Note that not all architectures use sendfile(2) buffers;
refer to the respective manpage for details.

MFC after: 3 days


163917 02-Nov-2006 ru

Unbreak compile with ELF_VERBOSE defined, and fix format warnings.


163914 02-Nov-2006 ru

Revert the last change. Masking only 2 MSBs of the virtual address
to get the physical address doesn't work for all values of KVA_PAGES,
while masking 8 MSBs works for all values of KVA_PAGES that are
multiple of 4 for non-PAE and 8 for PAE. (This leaves us limited
with 12MB for non-PAE kernels and 14MB for PAE kernels.)

To get things right, we'd need to subtract the KERNBASE from the
virtual address (but KERNBASE is not easy to figure out from here),
or have physical addresses set properly in the ELF headers.

Discussed with: jhb


163897 02-Nov-2006 marcel

Extend struct devdesc with a unit field, called d_unit. Promote the
device (kind) specific unit field to the common field. This change
allows a future version of libefi to work without requiring anything
more than what is defined in struct devdesc and as such makes it
possible to compile said version of libefi for different platforms
without requiring that those platforms have identical derivatives
of struct devdesc.


163893 02-Nov-2006 marcel

Don't unconditionally compile-in the bcache code. It's only used on
i386/amd64 and pc98. Remove useless calls to bcache_init() from the
ia64 and sparc64 loaders, as well as from the OFW common code.


163891 02-Nov-2006 marcel

o Make sure to clear f->f_devdata if d_dev->dv_open() fails. It
would otherwise cause devclose() to free() the memory again.
o Refactor devopen() so that it's more readable.


163765 29-Oct-2006 ru

Because the BTX mini-kernel now uses flat memory mode and clients
are no longer limited to a virtual address space of 16 megabytes,
only mask high two bits of a virtual address. This allows to load
larger kernels (up to 1 gigabyte). Not masking addresses at all
was a bad idea on machines with less than >3G of memory -- kernels
are linked at 0xc0xxxxxx, and that would attempt to load a kernel
at above 3G. By masking only two highest bits we stay within the
safe limits while still allowing to boot larger kernels.

(This is a safer reimplmentation of sys/boot/i386/boot2/boot.2.c
rev. 1.71.)

Prodded by: jhb
Tested by: nyan (pc98)


163327 13-Oct-2006 ru

Replace a rarely used "depuration" with "debugging".

PR: docs/85127
Submitted by: Gary W. Swearingen (partially)
MFC after: 3 days


162815 29-Sep-2006 ru

Fix WARNS=2 warnings.


162742 28-Sep-2006 jhb

Ignore a sub-topic match if it is inside the command description.
Otherwise, merge-help can get confused by a command description that
includes a word that starts with a capital S.

MFC after: 1 week


161471 20-Aug-2006 ru

Make the default "init_path" value breakable, so it fits on the
screen's width, thus eliminating a groff(1) warning.

Suggested by: marck


161431 18-Aug-2006 marck

kern.ipc.nmbclusters is sysctl, not compile-time option. Change Dv to Va.

Touch .Dd.

Pointed out by: ru
MFC after: 1 week


161429 18-Aug-2006 marck

Remove references to NMBCLUSTERS which is obsoleted.

PR: 100427
Approved by: maxim
MFC after: 1 week


158467 12-May-2006 jhb

Remove more Alpha bits from the boot code including fixing several
stale comments.


154257 12-Jan-2006 marius

In moduledir_readhints() cast the value returned by sizeof() to ssize_t
when checking whether it's greater than a struct stat st_size in order
to also catch the case when st_size is -1. Previously this check didn't
trigger on sparc64 when st_size is -1 (as it's the case for a file on
a bzipfs, TFTP server etc.), causing the content of the linker hints
file to be copied to memory referenced by a null-pointer.

PR: 91231
MFC after: 1 week


153504 18-Dec-2005 marcel

Make our ELF64 type definitions match standards. In particular this
means:
o Remove Elf64_Quarter,
o Redefine Elf64_Half to be 16-bit,
o Redefine Elf64_Word to be 32-bit,
o Add Elf64_Xword and Elf64_Sxword for 64-bit entities,
o Use Elf_Size in MI code to abstract the difference between
Elf32_Word and Elf64_Word.
o Add Elf_Ssize as the signed counterpart of Elf_Size.

MFC after: 2 weeks


150469 22-Sep-2005 ru

Add loader(8) variables for RB_DFLTROOT, RB_MUTE, and RB_PAUSE:
"boot_dfltroot", "boot_mute", and "boot_pause" respectively.


149213 18-Aug-2005 iedowse

Add a "comconsole_speed" loader variable that can be used to change
the serial console speed (i386 and amd64 only). If the previous
stage boot loader requested a serial console (RB_SERIAL or RB_MULTIPLE)
then the default speed is determined from the current serial port
speed. Otherwise it is set to 9600 or the value of BOOT_COMCONSOLE_SPEED
at compile time.

This makes it possible to set the serial port speed once in
/boot.config and the setting will propagate to boot2, loader and
the kernel serial console.


148516 29-Jul-2005 brian

Fix a comparison that broke ``set console=vidconsole'' and even the
loader.conf line ``console="vidconsole"''.

Sponsored by: ActiveState/Sophos
MFC after: 1 week


148398 25-Jul-2005 jmg

remove a pointless comment with a more helpful one...

Submitted by: Tobias Roth
MFC after: 5 days


147366 14-Jun-2005 ru

Improved markup, fixes some spelling and grammar.

Approved by: re (blanket)


146804 30-May-2005 ru

Markup nits.


146698 27-May-2005 jhb

- Add support to the loader for multiple consoles.
- Teach the i386 and pc98 loaders to honor multiple console requests from
their respective boot2 binaries so that the same console(s) are used in
both boot2 and the loader.
- Since the kernel doesn't support multiple consoles, whichever console is
listed first is treated as the "primary" console and is passed to the
kernel in the boot_howto flags.

PR: kern/66425
Submitted by: Gavin Atkinson gavin at ury dot york dot ac dot uk
MFC after: 1 week


146421 19-May-2005 sobomax

Extend `autoboot_delay' handling - is this variable is set to -1 don't allow
user to interrupt autoboot process at all. Currently, even when
`autoboot_delay' is set to 0, loader(8) still allows autoboot process to be
interrupted by pressing any key on the console when the loader reads kernel
and modules from the disk. In some cases (i.e. untrusted environment) such
behaviour is highly indesirable and user should not be allowed to interfere
with the autoboot process at all.

Sponsored by: PBXpress Inc.
MFC after: 3 days


146365 19-May-2005 sobomax

Whitespace only: kill trailing spaces.


142012 17-Feb-2005 des

Document the new default init_path.

Reminded by: ru
MFC after: 2 weeks


141060 30-Jan-2005 rwatson

Insert an explicit McAfee license, as we use a stock two-clause BSD
license rather than the slightly custom licence in ufsread.c.


138249 01-Dec-2004 scottl

Remove the last vestiges of the userconfig option. None of this actually
did anything, so this commit should be considered a NO-OP.


137667 13-Nov-2004 ru

There's no reason for "read" and "echo" commands to not
appear in the online command list.


137615 12-Nov-2004 ru

Pass the "?" command output through the pager.

(This doesn't quite work as this command is overridden by Forth,
and some Forth commands are appended to the output.)


136895 24-Oct-2004 ru

Collapse several adjacent .if's into .if/.elif.


136893 24-Oct-2004 nyan

ELF64 support is not needed on pc98.


136549 15-Oct-2004 imp

document host_start_mem.

# feel free to wordsmith.

Suggested by: ru@


136548 15-Oct-2004 ru

Polish the last change.


136525 15-Oct-2004 imp

Document hw.{pci,acpi}.host_start_mem

Requested by: ru@


136144 05-Oct-2004 pjd

Back out changes which were introduced to delay mounting root file system.
Those changes were made on gmirror needs, but now gmirror handles this
by itself.


136097 03-Oct-2004 stefanf

Use the correct printf specifier.

PR: 47187


135999 01-Oct-2004 ru

The "autoboot" command also has a third (optional) parameter.


135996 30-Sep-2004 ru

Don't give instructions on how to disable ACPI in the MI section.
For novice users, beastie.4th can just do it. Expert users can
read ACPI instructions by typing "help ACPI".


135980 30-Sep-2004 ru

Retire now useless userconfig_script_*.


135975 30-Sep-2004 ru

The value of $interpret is "OK", in uppercase.


135974 30-Sep-2004 ru

Fixed the default value of the $prompt variable, document what
happens if $prompt is unset.


135973 30-Sep-2004 ru

Setting dump device from loader(8) has not been supported since 2002.


135970 30-Sep-2004 ru

The default value of "bootfile" has been "kernel" since 2000.


135969 30-Sep-2004 ru

Mention "help index" in the online help, and provide a help for
the `?' command.


135967 30-Sep-2004 ru

Document boot_cdrom, boot_multicons, and boot_serial.
Reduce diffs between help.common and loader(8).
Mention that boot_userconfig is currently a no-op.


135965 30-Sep-2004 ru

`?' is not the same as "help index".


135929 29-Sep-2004 ru

Fixed exiting from pager using the `q' key while paging
"help index" or "help <topic>" with list of subtopics.


135729 24-Sep-2004 pjd

Document vfs.root.mountdelay value.

Reminded by: ru


134459 29-Aug-2004 iedowse

Add the loader side of support for preloading ELF relocatable object
format modules, which are currently only used on the amd64 platform.
This initial implementation just parses enough of the module to
allow it to extract dependencies and load all the bits into the
right place in memory, so the kernel must still do the full relocation
and linking. The details of the loaded sections are passed to the
kernel by supplying a copy of the ELF section header table as module
metadata with the MODINFOMD_SHDR tag.


134458 28-Aug-2004 iedowse

Separate out the ELF relocation code from the ELF loader, and add
better relocation support for the amd64 and i386 platforms. This
should not result in any change in functionality, but moves a step
towards supporting the relocatable object file modules on amd64.

The same hack/trick as load_elf*.c uses is used here to simultaneously
support both elf32 and elf64 on amd64 and i386.


134441 28-Aug-2004 iedowse

Add a few helper functions for zeroing kernel space and reading
from specified file offsets. Make use of these in load_elf.c.


134151 22-Aug-2004 maxim

Trim EOL white spaces.


134150 22-Aug-2004 maxim

Check a return code from read(2) correctly.

PR: kern/70815
Submitted by: info [at] haakh.de


133948 18-Aug-2004 maxim

Bump the manpage date.

Noticed by: ru


133947 18-Aug-2004 maxim

Retire hw.pci.allow_unsupported_io_range.

PR: bin/70533
Submitted by: Gavin Atkinson


133217 06-Aug-2004 jmg

remove /boot/kernel from the default path.. There is already code that
will prepend the current kernel booting... This prevents a problem of
loading /boot/kernel's modules when a different kernel has no modules,
but you left your module_load="YES" in loader.conf...

Reviewed by: dcs (minus the help part)


132854 29-Jul-2004 ceri

Correct a documentation bug.

Approved by: jhb


131840 08-Jul-2004 brian

Change the following environment variables to kernel options:

bootp -> BOOTP
bootp.nfsroot -> BOOTP_NFSROOT
bootp.nfsv3 -> BOOTP_NFSV3
bootp.compat -> BOOTP_COMPAT
bootp.wired_to -> BOOTP_WIRED_TO

- i.e. back out the previous commit. It's already possible to
pxeboot(8) with a GENERIC kernel.

Pointed out by: dwmalone


131814 08-Jul-2004 brian

Change the following kernel options to environment variables:

BOOTP -> bootp
BOOTP_NFSROOT -> bootp.nfsroot
BOOTP_NFSV3 -> bootp.nfsv3
BOOTP_COMPAT -> bootp.compat
BOOTP_WIRED_TO -> bootp.wired_to

This lets you PXE boot with a GENERIC kernel by putting this sort of thing
in loader.conf:

bootp="YES"
bootp.nfsroot="YES"
bootp.nfsv3="YES"
bootp.wired_to="bge1"

or even setting the variables manually from the OK prompt.


131754 07-Jul-2004 ru

mdoc(7) fixes.


131575 04-Jul-2004 stefanf

Consistently use __inline instead of __inline__ as the former is an empty macro
in <sys/cdefs.h> for compilers without support for inline.


131489 02-Jul-2004 ru

Fixed what appeared to be a hard sentence break.


131393 01-Jul-2004 ps

When building a kernel or the loader, let the hostname be overridden


129310 16-May-2004 ru

Markup fixes.


128019 07-Apr-2004 imp

Remove advertising clause from University of California Regent's
license, per letter dated July 22, 1999 and email from Peter Wemm,
Alan Cox and Robert Watson.

Approved by: core, peter, alc, rwatson


127789 03-Apr-2004 le

mdoc fix: put the end-of-list macro after the last list element.

Approved by: grog (mentor)


126837 11-Mar-2004 bde

Fixed a misspelling of 0 as NULL.


125561 07-Feb-2004 ru

Style: use the defined() expression explicitly.


125091 27-Jan-2004 des

Rename the kern.vm.kmem.size tunable to the more logical vm.kmem_size. To
assure backward compatibility (conditional on !BURN_BRIDGES), look it up
by its old name first, and log a warning (but accept the setting) if it
was found. If both the old and new name are defined, the new name takes
precedence.

Also export vm.kmem_size as a read-only sysctl variable; I find it hard to
tune a parameter when I don't know its default value, especially when that
default value is computed at boot time.


121973 03-Nov-2003 iedowse

Override the root server address if an IP address is specified in
the root path. This is reported to make non-PXE netbooting, such as
is used on sparc64 systems, work correctly when the TFTP server is
not the same as the root server.

PR: kern/57328
Submitted by: Per Kristian Hove <Per.Hove@math.ntnu.no>


119483 25-Aug-2003 obrien

Use __FBSDID().
Also some minor style cleanups.


117044 29-Jun-2003 brueffer

Capitalize an occurrence of 'ficl' for consistency.

Submitted by: Andre Guibert de Bruet <andy@siliconlandmark.com>
MFC after: 3 days


116864 26-Jun-2003 peter

Build on amd64. Yes, I know this isn't particularly nice.


115113 17-May-2003 ru

Fixed the markup and wording of the kern.ipc.nsfbufs tunable.
(It does not modify NSFBUFS, but just overrides it if set.)

Approved by: re (blanket)


114937 12-May-2003 peter

Fix lookup of module metadata on amd64 systems. While this is in
common code, the non-trivial part is #ifdef'ed and only executes when
loading amd64 kernels. The rest is trivial but needed for the the amd64
case. (Two variables changed from char ** to Elf_Addr).

Approved by: re (amd64 "low-risk" stuff)


114707 05-May-2003 obrien

Since we insist on loading the POS ACPI by default, give the poor user
instructions on the main help screen for disabling it.


114654 04-May-2003 murray

Fix a bunch of typos and grammatical errors.

PR: docs/40234
Submitted by: Chris Pepper <pepper@rockefeller.edu> (mostly)
MFC After: 3 days


114379 01-May-2003 peter

Enable the i386 loader to load and run an amd64 kernel. If this puts
things over floppy size limits, I can exclude it for release builds or
something like that. Most of the changes are to get the load_elf.c file
into a seperate elf32_ or elf64_ namespace so that you can have two
ELF loaders present at once. Note that for 64 bit kernels, it actually
starts up the kernel already in 64 bit mode with paging enabled. This
is really easy because we have a known minimum feature set.

Of note is that for amd64, we have to pass in the bios int 15 0xe821
memory map because once in long mode, you absolutely cannot make VM86
calls. amd64 does not use 'struct bootinfo' at all. It is a pure loader
metadata startup, just like sparc64 and powerpc. Much of the
infrastructure to support this was adapted from sparc64.


113161 06-Apr-2003 peter

Zap some a.out leftovers


113083 04-Apr-2003 phk

Libdisk does not need to include <sys/diskslice.h> any more.

Move the remaining bits of <sys/diskslice.h> to <i386/include/bootinfo.h>

Move i386/pc98 specific bits from <sys/reboot.h> to
<i386/include/bootinfo.h> as well.

Adjust includes in sys/boot accordingly.


111957 07-Mar-2003 trhodes

Fix a few spelling errors.

Submitted by: Stefan Farfeleder <stefan@fafoe.dyndns.org> via -doc.


111890 04-Mar-2003 seanc

Document the tunable kern.ipc.nsfbufs in help.common and loader.8. Small
nearby grammar fixup that saves a line of display while in the loader
(help set tunables), but reuses the line for kern.ipc.nsfbufs.

Approved by: roam


111852 03-Mar-2003 ru

FreeBSD 5.0 has stopped shipping /modules 2.5 years ago. Catch
up with this further by excluding /modules from the (default)
kern.module_path.


111456 25-Feb-2003 obrien

Only apply rev 1.10 (which hacks around the i386 boot2 being too big for
both ufs1 and ufs2 support) on i386.


111410 24-Feb-2003 mckusick

Revert to old (broken for over 1.5Tb filesystems) version of cgbase
so that boot loader once again will fit.

Sponsored by: DARPA & NAI Labs.


110554 08-Feb-2003 trhodes

s/hw.pci_allow_unsupported_io_range/hw.pci.allow_unsupported_io_range/

The former was incorrect and gave an `unknown oid' error.


109616 21-Jan-2003 jake

Fix module dependency (pre)loading on sparc64 by relocating the variables
read from the raw kld files.

Submitted by: Hartmut Brandt <brandt@fokus.gmd.de>
PR: 46870
Tested on: alpha (obrien), i386, sparc64


109281 15-Jan-2003 mdodd

Minimally document hw.syscons.sc_no_suspend_vtswitch.

Requested by: Nate Lawson <nate@root.org>


107877 14-Dec-2002 phk

Restructure so we can compile UFS1_ONLY, UFS2_ONLY or UFS1_AND_UFS2
versions from the same basic function.


107788 12-Dec-2002 ru

Uniformly refer to a file system as "file system".

Approved by: re


107294 27-Nov-2002 mckusick

Create a new 32-bit fs_flags word in the superblock. Add code to move
the old 8-bit fs_old_flags to the new location the first time that the
filesystem is mounted by a new kernel. One of the unused flags in
fs_old_flags is used to indicate that the flags have been moved.
Leave the fs_old_flags word intact so that it will work properly if
used on an old kernel.

Change the fs_sblockloc superblock location field to be in units
of bytes instead of in units of filesystem fragments. The old units
did not work properly when the fragment size exceeeded the superblock
size (8192). Update old fs_sblockloc values at the same time that
the flags are moved.

Suggested by: BOUWSMA Barry <freebsd-misuser@netscum.dyndns.dk>
Sponsored by: DARPA & NAI Labs.


107266 26-Nov-2002 yar

Eliminate references to defunct kernel tunables.

Approved by: re
PR: bin/43343


106845 13-Nov-2002 mdodd

Document loader tunables hw.pci.enable_io_modes and
hw.pci.allow_unsupported_io_range.

Submitted by: Hiten Pandya <hiten@angelica.unixdaemons.com>
Approved by: re (murray)


106842 13-Nov-2002 mdodd

Loader tunable 'machdep.disable_mtrrs'.
Sysctl of same name to reflect status.

Submitted by: jhb
Approved by: re (murray)
MFC after: 1 day


104678 08-Oct-2002 phk

It seems that the only problem with UFS2 booting on i386 is the 64bit
divide/remainder calls. For reasons not resolved, compiling the
relevant routines from libkern into boot2 results in stack corruption.

Do the simple thing: Don't use 64bit divide/remainder operations.

Sponsored by: DARPA & NAI Labs


104612 07-Oct-2002 phk

Move the definition of UFS1_ONLY into the Makefiles where it belongs.

Sponsored by: DARPA & NAI Labs.


102612 30-Aug-2002 iwasaki

s/hint.acpi.0.disable/hint.acpi.0.disabled/

Fix device hints entry for disabling acpi(4).
This also should fix the arbitration with apm(4) when both drivers
are enabled.

Note that your /boot/device.hints needs to be updated if you want to
stop auto-loading acpi.ko or disable acpi(4).


102588 29-Aug-2002 peter

Actually remove the stale a.out kld support. This is the stuff that was
never updated for the metadata infrastructure.


102556 29-Aug-2002 peter

Initiate deorbit burn of i386 a.out kld "support" in loader. Note that
this was quite broken, it never was updated for metadata support.
The a.out kld file support was never really used, as it wasn't necessary.
You could always load elf kld's, even in an a.out kernel.


101823 13-Aug-2002 ru

mdoc(7) police: revert unapproved changes in rev. 1.43, added missing markup bits in rev. 1.45.


101558 09-Aug-2002 obrien

Restore autoloading of ACPI module.

Document the approved ways of disabling it.
Submitted by: Daniel O'Connor <doconnor@gsoft.com.au>


101112 31-Jul-2002 jake

Stash various networking paramters in the environment for the kernel
to pick up, ala pxe.


100016 15-Jul-2002 keramida

Use present tense in all the verbs, when describing loader's startup.
Most of them are not in a future tense already.


99974 14-Jul-2002 charnier

The .Nm


99546 07-Jul-2002 mp

Change help documentation for bootfile and module_path to reflect
the actual code. Both use a ";" (not a ",") to delimit entries.

PR: 39679
Submitted by: Cyrille Lefevre <cyrille.lefevre@laposte.net>
MFC after: 3 days


98593 21-Jun-2002 jake

Enable UFS1_AND_UFS2 support for sparc64 by default. Booting from ufs1 or
ufs2 filesystems seems to work fine.


98542 21-Jun-2002 mckusick

This commit adds basic support for the UFS2 filesystem. The UFS2
filesystem expands the inode to 256 bytes to make space for 64-bit
block pointers. It also adds a file-creation time field, an ability
to use jumbo blocks per inode to allow extent like pointer density,
and space for extended attributes (up to twice the filesystem block
size worth of attributes, e.g., on a 16K filesystem, there is space
for 32K of attributes). UFS2 fully supports and runs existing UFS1
filesystems. New filesystems built using newfs can be built in either
UFS1 or UFS2 format using the -O option. In this commit UFS1 is
the default format, so if you want to build UFS2 format filesystems,
you must specify -O 2. This default will be changed to UFS2 when
UFS2 proves itself to be stable. In this commit the boot code for
reading UFS2 filesystems is not compiled (see /sys/boot/common/ufsread.c)
as there is insufficient space in the boot block. Once the size of the
boot block is increased, this code can be defined.

Things to note: the definition of SBSIZE has changed to SBLOCKSIZE.
The header file <ufs/ufs/dinode.h> must be included before
<ufs/ffs/fs.h> so as to get the definitions of ufs2_daddr_t and
ufs_lbn_t.

Still TODO:
Verify that the first level bootstraps work for all the architectures.
Convert the utility ffsinfo to understand UFS2 and test growfs.
Add support for the extended attribute storage. Update soft updates
to ensure integrity of extended attribute storage. Switch the
current extended attribute interfaces to use the extended attribute
storage. Add the extent like functionality (framework is there,
but is currently never used).

Sponsored by: DARPA & NAI Labs.
Reviewed by: Poul-Henning Kamp <phk@freebsd.org>


97864 05-Jun-2002 phk

Make sparc64 share ufsread.c with i386.

Sponsored by: DARPA & NAI Labs.


97861 05-Jun-2002 phk

Indent this file more like style(9).

Sponsored by: DARPA & NAI Labs.


97860 05-Jun-2002 phk

Preparation for UFS2 commit:

Factor the ufs reading code out of the i386/boot2 loader so it can
be reused by for instance sparc64.

Sponsored by: DARPA and NAI Labs.


97525 29-May-2002 schweikh

Fix a handful of typos and grammar bogons. No content changes.
Translators can ignore this commit.

MFC after: 2 weeks


96310 10-May-2002 obrien

We don't need bootinfo any more, and sparc64 doesn't have it anyways.


94419 11-Apr-2002 peter

Bandaid for a buffer overrun in the module searching code. When breaking
up the module_path string, we would walk one past the end of the buffer.
This hurting ia64 originally, but it was probably also happening on i386
occasionally as well. The effects were usually harmless, it would add
bogus "binary" search directories to the places it actually looked for
files.


94313 09-Apr-2002 dcs

Upgrade FICL to 3.02. Forgot this one, sorry.

PR: 36308
Submitted by: dcs


94248 09-Apr-2002 jake

Fix another unsigned long used to index the symbol table which should be
Elf_Hashelt.


93922 06-Apr-2002 peter

Use the correct elf hash table entry type. This matches a similar fix
in the kernel side of things some time ago. The hash table entries are
always 32 bits wide, even on 64 bit machines.


93306 28-Mar-2002 obrien

Not all platforms have and want a.out format support.


92766 20-Mar-2002 alfred

Remove __P.


92339 15-Mar-2002 ru

mdoc(7) police: fix a typo and markup.


92030 10-Mar-2002 sobomax

CG superfluous prototype.


91219 25-Feb-2002 bde

Declare time(not3) instead of depending on namespace pollution 3 layers
deep in <stand.h> to eventually include <time.h> to declare the user
version.

This is not quite the right place to declare it, but <stand.h> would
be worse because time() is very MD so it isn't in libstand.

Many places in the boot sources still get the user version using only
1 layer of pollution (#include <sys/time.h>. Some pollute themselves
directly (#include <time.h>). But the boot Makefiles are too broken
to enable warnings for redeclarations.


91218 25-Feb-2002 bde

Removed mounds of unused variables.


91008 21-Feb-2002 davidc

Document the hw.physmem kernel environment variable.

Reviewed by: alfred


89699 23-Jan-2002 sobomax

CG hard sentence breaks.

Submitted by: ru


89601 21-Jan-2002 sobomax

Allow dump device be configured as early as possible using loader(8) tunable.
This allows obtaining crash dumps from the panics occured during late stages
of kernel initialisation before system enters into single-user mode.

MFC after: 2 weeks


87855 14-Dec-2001 ru

mdoc(7) police: remove hard sentence break which I didn't
submit to Jonathan Mini.


87636 11-Dec-2001 jhb

- Add 'fwrite' and 'fseek' words for writing to and seeking on files.
- Change the 'fopen' keyword to accept a mode parameter. Note that this
will break existing 4th scripts that use fopen. Thus, the loader
version has been bumped and loader.4th has been changed to check for a
sufficient version on i386 and alpha. Be sure that you either do a full
world build or install or full build and install of sys/boot after this
since loader.old won't work with the new 4th files and vice versa.

PR: kern/32389
Submitted by: Jonathan Mini <mini@haikugeek.com>
Sponsored by: ClickArray, Inc.


87634 11-Dec-2001 jhb

Add support for writing blocks to the loader's disk cache.

PR: kern/32389
Submitted by: Jonathan Mini <mini@haikugeek.com>
Sponsored by: ClickArray, Inc.


87599 10-Dec-2001 obrien

Update to C99, s/__FUNCTION__/__func__/,
also don't use ANSI string concatenation.


87505 07-Dec-2001 rwatson

o Expand list of tunables documented in loader.8 to include kern.maxusers,
since other related tunables were also documented here. Add a cross
reference to tuning(7) for information on setting this value
appropriately.


87344 04-Dec-2001 des

The entry for the 'set' command no longer has a list of variables.

PR: 32454
Submitted by: Gary W. Swearingen <swear@blarg.net>
MFC after: 3 days


87261 03-Dec-2001 murray

Fix typo.

PR: 32455
Submitted by: "Gary W. Swearingen" <swear@blarg.net>


87058 28-Nov-2001 dcs

Waits for a keypress before rebooting on panic.

PR: kern/32351
Submitted by: Jonathan Mini <mini@haikugeek.com>
MFC after: 1 week


86608 19-Nov-2001 obrien

Upper case the FreeBSD loader prompt.
On OFW based machines, it is just too confusing having the firmware and
OS loader giving the same prompt. This is a nice compromise that 99% of the
users on non-OFW platforms will probably not even notice.


86469 16-Nov-2001 iedowse

Fix a number of misspellings of "dependency" and "dependencies" in
comments and function names.

PR: kern/8589
Submitted by: Rajesh Vaidheeswarran <rv@fore.com>


86168 07-Nov-2001 fenner

Initialize first to -1; this will create a (nearly) empty file on failure,
instead of looping until the disk is full. This kind of failure can
especially happen when a version of awk that doesn't support POSIX
character classes is used.

Submitted by: David Wolfskill <david@catwhisker.org>


86090 05-Nov-2001 jhb

Add a DEVT_CD type for CD drivers.


85997 04-Nov-2001 jhb

Print out 'foo devices:' as the line before displaying a group of
devices in 'lsdev' output rather than printing out a pointer to the
print function since the user really could care less about the pointer
value. Perhaps this was intended to be a debugging printf?


85935 03-Nov-2001 obrien

Revert rev 1.3 which moved us away from POSIX character classes.
The community feels our base AWK must handle them.


85808 01-Nov-2001 obrien

Bell-Labs AWK does not support POSIX "bracket expressions" (POSIXese for
"character classes", basically). So change them to their character
representation.

Submitted by: David Wolfskill <david@catwhisker.org>


84337 01-Oct-2001 silby

grammar fix: to -> too


83321 11-Sep-2001 peter

Implement the long-awaited module->file cache database. A userland
tool (kldxref(8)) keeps a cache of what modules and versions are inside
what .ko files. I have tested this on both Alpha and i386.

Submitted by: bp


81955 20-Aug-2001 ru

mdoc(7) police: markup nits.


81933 20-Aug-2001 dillon

Limit the amount of KVM reserved for the buffer cache and for swap-meta
information. The default limits only effect machines with > 1GB of ram
and can be overriden with two new kernel conf variables VM_SWZONE_SIZE_MAX
and VM_BCACHE_SIZE_MAX, or with loader variables kern.maxswzone and
kern.maxbcache. This has the effect of leaving more KVM available for
sizing NMBCLUSTERS and 'maxusers' and should avoid tripups where a sysad
adds memory to a machine and then sees the kernel panic on boot due to
running out of KVM.

Also change the default swap-meta auto-sizing calculation to allocate half
of what it was previously allocating. The prior defaults were way too high.
Note that we cannot afford to run out of swap-meta structures so we still
stay somewhat conservative here.


81462 10-Aug-2001 ru

mdoc(7) police: join split punctuation to macro calls.


79757 15-Jul-2001 dd

Remove whitespace at EOL.


78696 24-Jun-2001 dwmalone

Get rid of some constness warnings.


78465 19-Jun-2001 peter

Convert the elf loader to the new linker set layout for elf files.
This should make dependencies at load time work like before. Oops.

Noticed by: markm


78463 19-Jun-2001 peter

Fix some of the worst formatting bug (seperate commit)


78195 14-Jun-2001 peter

Nuke old gensetdefs based linker sets with extreme prejudice


77971 10-Jun-2001 jesper

Fix a minor style bug in the last commit.

Submitted by: Adrian Steinmann <ast@marabu.ch>
MFC after: 2 days


77285 27-May-2001 jesper

In sys/boot/common/module.c, near line 105 a request for a raw
file is processed by passing its name in argv[1]:
return(mod_loadobj(typestr, argv[1]));
however, it is not tested to see if argv[1] actually is defined.

At best, mod_loadobj() near line 244 returns an error like
"can't find 'garbage'" but if the "filename" entered is sufficiently
long, some buffer gets overrun. Of course, "load -t filename" is
actually a typo because we meant to type "load -t mfs_root filename";
nevertheless, a hung machine seems like too harsh a punishment for
such a small typo...

PR: i386/27693
Submitted by: Adrian Steinmann <ast@marabu.ch>
MFC after: 1 week


74850 27-Mar-2001 ru

MAN[1-9] -> MAN.


73349 02-Mar-2001 ru

setlocale(3) has been fixed to match POSIX standard:
LC_ALL takes precedence over other LC_* envariables.


73233 28-Feb-2001 ru

Eliminate mdocNG warnings caused by misplaced or extraneous macro calls.


72879 22-Feb-2001 dcs

Whenever the user might be offered a chance to quit through
pager_output(), respect that choice.

PR: 15747


71895 01-Feb-2001 ru

mdoc(7) police: split punctuation characters + misc fixes.


70519 30-Dec-2000 phk

Use <sys/queue.h> macro API.

Submitted by: "Jason" <jsmethers@pdq.net>
Reviewed by: /sbin/md5


70405 27-Dec-2000 ru

Prepare for mdoc(7)NG.


70020 14-Dec-2000 ru

mdoc(7) police: removed duplicate .Os call.


69027 22-Nov-2000 ru

mdoc(7) police: do not split author names in the AUTHORS section.


68961 20-Nov-2000 ru

mdoc(7) police: use the new features of the Nm macro.


68851 17-Nov-2000 msmith

The default kernel filename is "kernel" again, not "kernel.ko".

Submitted by: mckusick


68716 14-Nov-2000 ru

Use Fx macro wherever possible.


68548 10-Nov-2000 benno

OpenFirmware/PowerPC loader, part 2.

As of this patchset, the loader builds (under NetBSD/macppc), boots, interacts
and talks to BOOTP/NFS servers.

(main.c was moved from boot/ofw/libofw to boot/ofw/common but has no revision
history)

Reviewed by: obrien


68547 10-Nov-2000 benno

Give the network device a print method.

Reviewed by: obrien


67591 25-Oct-2000 dfr

Don't indirect through a null pointer if we run out of kernel filenames.


65940 16-Sep-2000 dcs

The default search path for kernel and modules was bogus. It makes no
sense for /boot/kernel to come last.


65881 15-Sep-2000 dcs

Start countdown only _after_ the kernel was loaded. Not very fair otherwise.


65683 10-Sep-2000 dcs

Change NOFORTH comment character from # to \ followed by space,
to make things more interchangeable between it and the FORTH case.

Perhaps requiring the space is a bit too much, but...

Nothing in the tree seems to produce loader.rc files with comment
line, at this time.


65622 08-Sep-2000 dcs

Update boot and boot-conf descriptions to reflect new and old changes.
Add a warning in loader(8) that boot might be changed by loader.4th.


65614 08-Sep-2000 dcs

Make the pnp structure a global variable, so it can be used elsewhere.


65613 08-Sep-2000 dcs

Fix autoboot. Now autoboot *always* show the correct kernel name. It
gets the name from the environment variable kernelname, which is set
when a kernel is loaded. For this reason, autoboot will _first_ try
to load a kernel, and only proceed with the wait prompt after that
succeeds. If it fails, it will abort immediately.

While I understand some may think this behavior undesirable, I think
it is, overall, the best thing to do, even if we do not consider the
aesthetic issue. Notice that anyone using the default loader.rc
already has the kernel loaded before autoboot.

On unload, unset kernelname.

Separate the code that tries to load a kernel from the list of options
to the function loadakernel(). It is used by both boot() and
autoboot().


65549 06-Sep-2000 obrien

With the committed changes to the loaders modules path code, the kernel
path does not need to be hard coded.


65502 05-Sep-2000 obrien

Fix the kernel default load from "/boot/modules" to "/boot/kernel".

Reported by: dcs


65501 05-Sep-2000 obrien

The kernel is now known as `kernel.ko' and it and its matching modules
live in ``/boot/kernel/''.


65042 24-Aug-2000 sheldonh

List loader.conf and friends in the FILES section.

Requested by: obrien


64532 11-Aug-2000 dcs

Add missing "is".

PR: 20524
Submitted by: Peter Pentchev <roam@orbitel.bg>


64527 11-Aug-2000 ps

Add support to send the string 'PXEClient' as the Vendor class
identifier to the DHCP server. Now you can check for this string
in your dhcp configuration to decide whether you will hand out a
lease to the client or not.


64220 04-Aug-2000 jhb

Bring back the perform() function. However, conditionionalize it on
BOOT_FORTH as it is only used if BOOT_FORTH is not defined.


64188 03-Aug-2000 jhb

Fix the more obvious warnings to deal with my earlier warning cleanups.


64187 03-Aug-2000 jhb

Cleanup warnings. Most of these are signed/unsigned warnings, as well as
some added const's.


62874 10-Jul-2000 kris

Don't call printf with no format string.


62873 10-Jul-2000 kris

Don't call printf with no format string. This is technically a security
vulnerability and could in principle be used to upload a new kernel from the
bootloader :-)


62049 25-Jun-2000 mph

Typo fix: tunnable.
Backslash-parsing is not the role of printf(3), but is provided
by the C language.


61943 22-Jun-2000 sheldonh

Whitespace-only changes: apply accepted line breaking style as a
pre-cursor to other markup changes.

Accepted in principle by the author.


61720 16-Jun-2000 dcs

Fix vocabulary juggling so that builtins voc is always searched before
forth vocabulary when initially creating the builtins. FICL 2.05 has a
better way to do this, but this works for now.

Fixes "?".


61693 14-Jun-2000 dcs

Remove the setting of sourceid from bf_vm(), as bf_vm() really has
no clue.

Set sourceid to 0 when booting, which is the correct setting for stdin.

Set sourceid to an arbitrary fd when include'ing, preserving and restoring
the previous sourceid. This is possibly broken(), as 0 is a valid fd. Maybe
we should +1 to this value.

This fixes the version problem widely reported.


61659 14-Jun-2000 ps

Delay calling the device cleanup routines until the absolute last
moment. We were cleaning up after PXE too early and the module
dependancy code would not be able to load any files if it needed
too.


61653 14-Jun-2000 ps

Make typing 'q' or 'Q' work for the show command as the pager prompt
says it should.


61371 07-Jun-2000 dcs

Place original builtins in a vocabulary called "builtins". This
is intended mainly for debuging purposes, but it can be used by
other words if done carefully.


61353 07-Jun-2000 dcs

Remove residual printf.

Prodded by: msmith


60938 26-May-2000 jake

Back out the previous change to the queue(3) interface.
It was not discussed and should probably not happen.

Requested by: msmith and others


60833 23-May-2000 jake

Change the way that the queue(3) structures are declared; don't assume that
the type argument to *_HEAD and *_ENTRY is a struct.

Suggested by: phk
Reviewed by: phk
Approved by: mdodd


60820 23-May-2000 dcs

Document abial's .#.


60710 19-May-2000 dcs

One of loaders' bugs disappeared somewhere along the way.


60704 19-May-2000 dcs

Move man page directives to common/Makefile.inc.


60684 18-May-2000 dcs

Make corrections to allow for Alpha.


60506 13-May-2000 dfr

Only probe network settings on the first open of the network device.
The alpha firmware takes a seriously long time to open the network device
the first time.


60490 13-May-2000 obrien

The loader was written so that if /kernel was missing /kernel.old would
be booted. Due to a bug, this wasn't happening.

There is still a lesser bug in that the loader decides which file to boot
after the 10sec count down. This means the bootfile listed in the count
down in is wrong in the case where the loader will boot /kernel.old.


60432 12-May-2000 bp

long != int on Alphas.


60006 04-May-2000 dcs

Make documentation on recently added heap? command reflect reality.


60005 04-May-2000 dcs

Add "heap?" to loader's man page.


60003 04-May-2000 dcs

Further improve ordering.


60002 04-May-2000 dcs

Sort entries in FreeBSD-specific FICL commands.


59874 01-May-2000 peter

Add $FreeBSD$


59857 01-May-2000 peter

GC unused variable (size)


59856 01-May-2000 peter

Fix some warnings on the Alpha. sizeof() returns different things on
x86 and Alpha. Sigh.


59854 01-May-2000 bp

Update loader logic to distinguish modules vs. files.
Add support for module metadata. The old way of dependancy
handling will be supported for a while.

Reviewed by: peter


59767 29-Apr-2000 jlemon

Teach the loader about the ext2fs filesystem, extended partitions, and
the new readdir function.


59408 20-Apr-2000 ps

Add a cleanup function. This is needed for PXE where you should
shutdown the UNDI and unload the stack.


59294 16-Apr-2000 msmith

Some more i386-only BIOS-friendliness:

- Add support for using the PCI BIOS functions for configuration space
accesses, and make this the default.

- Make PNPBIOS the default (obsoletes the PNPBIOS config option).

- Add two new boot-time tunables to disable each of the above.


58080 15-Mar-2000 dcs

bcache_strategy() now receives an unit number, and keep track of what
was the last unit number received. If it changes, it flushes the cache.
Add bcache_flash().

The actual fix is sligthly different from the one in the PR.

PR: 17098
Submitted by: John Hood <jhood@sitaranetworks.com>


57468 25-Feb-2000 bp

Fix the loader to handle module dependencies properly. More fixes
will be provided after modmetadata appears in the kernel.

Reviewed by: msmith
Approved by: jkh


57269 17-Feb-2000 msmith

Close a file descriptor leak in the code which loads file objects.

Submitted by: Paul Saab <paul@mu.org>
Approved by: jkh


55206 29-Dec-1999 peter

Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"
is an application space macro and the applications are supposed to be free
to use it as they please (but cannot). This is consistant with the other
BSD's who made this change quite some time ago. More commits to come.


55173 28-Dec-1999 msmith

Correctly handle a user-requested abort in the middle of displaying a
help subtopic.

PR: kern/13196
Submitted by: MIHIRA Sanpei Yoshiro <sanpei@sanpei.org>


54695 16-Dec-1999 marcel

Don't build gensetdefs when we can use /usr/bin/gensetdefs. The latter
also creates setdef{0|1}.c so there's no need to have those in the
repository. Using /usr/bin/gensetdefs has no consequences for the
output.


54264 07-Dec-1999 msmith

Update to reflect use of : not ; as separator in paths passed to the
kernel.


53993 01-Dec-1999 dcs

Add fairings. Do not depend on user actually supplying the arguments
he is supposed to supply.


53786 27-Nov-1999 dcs

Make the prompt look like on OpenBoot.


52748 01-Nov-1999 dcs

Changes the default prompt to "ok".

Mike says the whole idea of a current device was a bad idea in first place,
and will be doing away with currdev.

Anyway, people are not supposed to even notice this. :-)


51786 29-Sep-1999 dcs

Bring in ficl version 2.03. No version bump for loader.


50737 01-Sep-1999 dfr

* Fix a stack of warnings.
* Make it possible to type a filename to boot1 so that it is possible to
recover from fatally broken versions of /boot/loader.
* Make a start at a CD boot program (not yet functional).


50477 28-Aug-1999 peter

$Id$ -> $FreeBSD$


49191 28-Jul-1999 nik

Fix some typos.

PR: docs/11955
Submitted by: Christian Weisgerber <naddy@mips.rhein-neckar.de>


48952 21-Jul-1999 msmith

Walk around the end of all the silly guessing of device types and unit
numbers that we have been doing in the past, and read /etc/fstab off the
proposed root filesystem to determine the actual device name and vfs
type for the root filesystem. These are then exported to the kernel
via the environment variable vfs.root.mountfrom.


48829 15-Jul-1999 n_hibma

The boot countdown timer says it will boot in 1 seconds,
which is grammatically incorrect.

PR: 12628
Submitted-By: R. Matthew Emerson <rme@nightfly.apk.net>


48477 02-Jul-1999 msmith

Document the hw.physmem tunable. (There should be arch-specific tunable
help sections.)


48351 29-Jun-1999 peter

Reconcile all the loader newvers.sh's into one common one.


48243 26-Jun-1999 peter

ABS_SET() and BSS_SET() are no longer used. The sole remaining user of
TEXT_SET() is DDB's command tables.


48135 23-Jun-1999 ru

-mdoc fix.


47609 30-May-1999 dfr

Typo: "can't boot 'boot'" should be "can't boot 'kernel'"


47576 28-May-1999 brian

Always output a linefeed when we've decided whether to boot
or display a loader prompt; either we've said
"Booting [%s]..." or we've received a non-line-feed character
and need a '\n' anyway.


47395 22-May-1999 rnordier

Fix a reference to the mysterious Mike Smisth.


47011 11-May-1999 jb

Found the needle in the haystack!

Use colons instead of semi-colons in the default init_path to behave like
UNIX instead of DOS.

Suggested by: bde
Reminded by: des (with no hint as to *which* man page).


46356 03-May-1999 dfr

Changes to support diskless booting on the alpha:
* Make the network code in the bootstrap more chatty (helps debugging)
* Add nfs root stuff to cpu_rootconf(). I also added a check to make sure
it really was netbooting which allows the use of the same kernel for local
and network boots.
* Tweak the de driver so that it takes the speed setting from the console
for the alpha (some PWSs have broken de chipsets). This is the same
behaviour as NetBSD/alpha.

Submitted by: Andrew Gallatin <gallatin@cs.duke.edu>


46354 03-May-1999 jkoshy

Correct typos.

PR: docs/11445
Submitted by: Kazuo Horikawa <horikawa@jp.freebsd.org>


46074 25-Apr-1999 dcs

Make man page reflect reality on parsing rules. Now I know Jordan
never read this man page... :-)


45881 20-Apr-1999 des

Make the location of init(8) tunable at boot time.


45867 20-Apr-1999 joerg

Don't clobber the "prompt" variable if it has already been set (e. g.
from within loader.conf).

Reviewed by: dcs


45720 16-Apr-1999 peter

Bring the 'new-bus' to the i386. This extensively changes the way the
i386 platform boots, it is no longer ISA-centric, and is fully dynamic.
Most old drivers compile and run without modification via 'compatability
shims' to enable a smoother transition. eisa, isapnp and pccard* are
not yet using the new resource manager. Once fully converted, all drivers
will be loadable, including PCI and ISA.

(Some other changes appear to have snuck in, including a port of Soren's
ATA driver to the Alpha. Soren, back this out if you need to.)

This is a checkpoint of work-in-progress, but is quite functional.

The bulk of the work was done over the last few years by Doug Rabson and
Garrett Wollman.

Approved by: core


44780 15-Mar-1999 dcs

The man page, version 0.1.


44750 14-Mar-1999 msmith

Fix syntax for boot command

Noticed by: Ruslan Ermilov <ru@ucb.crimea.ua>


44571 08-Mar-1999 dcs

Increase ficl's dictionary size, in preparation for the newer loader.rc.


44570 08-Mar-1999 dcs

Fix a number of memory leaks and other memory-related disorders.

Also, unbreak the breakage introduced at the last revision of module.c.
This changes the semantics of mod_searchfile() (and mod_searchmodule())
to make the caller's responsibility freeing the buffer returned. This
is different from other functions in loader's code, and was done as a
fix for kern/9631. If someone wants to revert this to the original
behavior, don't forget to fix kern/9631 in another way.

This should also fix bin/10462, which was introduced as a result of the
first try at kern/9631 (module.c last revision).

PR: bin/10462
Submitted by: Takanori Saneto <sanewo@ba2.so-net.ne.jp>


44427 02-Mar-1999 dcs

Don't treat empty lines as end-of-file in include(). (I can't
believe this bug is still here... :-( )


44210 22-Feb-1999 dcs

Fix assorted memory leak/buffer reuse problems.

Not restricted to, but including:

PR: kern/9631
Submitted by: Bill Fenner <fenner@parc.xerox.com>


44069 15-Feb-1999 tegge

Enable load of i386 ELF kernels with larger KVA range (e.g. starting at
0xe0100000u or 0xc0100000u instead of the usual 0xf0100000u).


43738 07-Feb-1999 dcs

Remove strange-looking quotes. This part of the code is #if'ed out,
and the variable doesn't even exist (though it is referenced elsewhere).
Just make sure it produces error messages when Mike get back to it.

PR: kern/9934
Submitted by: Adrian Filipi-Martin


43614 04-Feb-1999 dcs

Make use of prototypes to silence warnings.

Change include() so it will be able to load files with forth code,
instead of just builtins. Remove #@- from the include section of the
help file, since they don't work in the new version of include, unless
BOOT_FORTH is not defined.

Change bf_run() so it will return the result returned by ficlExec(). Also,
make bf_run() push "interpret" to be executed by ficlExec(), since ficlExec()
doesn't do it by itself. (Things worked previously because nothing
recursed through ficlExec() by the way of bf_run()).

Change/extend comments on builtin behavior.

Search for "interpret" at the end of bf_init(), so /boot/boot.4th can
provide it's own version.

Remove dead code.


43600 04-Feb-1999 dcs

Silence a warning.
PR: bin/9754


43563 03-Feb-1999 msmith

Mention the net.inet.tcp.tcbhashsize tunable.


43561 03-Feb-1999 kato

PC98 version of new boot loader. Because boot2 has not yet ported,
files in boot2 directory are copies from legacy biosboot.

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


43491 01-Feb-1999 jkh

Whoops! Forgot to include Mr. Sobray's more command in the last set
of commits.

Submitted by: Daniel C. Sobral <dcs@newsguy.com>


43368 29-Jan-1999 msmith

Document the machdep.pccard.pcic_irq tunable, which allows the user to tune
the interrupt which will be given to the PCIC. If the value supplied is
illegal or not available, interrupts will be turned off and polled mode
used instead.


43321 28-Jan-1999 jkh

Make builtin's state-aware in loader.

Submitted by: Daniel C. Sobral
PR: 9663


43189 25-Jan-1999 rnordier

Correctly record the end of the a.out symbol table. In practice, a
bootinfo structure where bi_esymtab < bi_symtab was being passed
to the kernel. In the case of older 2.x kernels, this was causing
garbage to be printed to the video console, followed by an exception.

This should resolve a problem reported on -current by Peter Jeremy
<peter.jeremy@auss2.alcatel.com.au>.


43077 22-Jan-1999 msmith

bootstrap.h
help.common
interp.c
Rename the 'source' command to 'include' in order to avoid conflict
with the ANS Forth command of the same name. (kern/9473)

interp_forth.c:
Changes from kern/9412 (EXCEPTION word), kern/9442 (TIB buffer
sizing) and an improved version of kern/9460 (set
version numbers).

load_aout.c:
Trim some obsolete #if 0'ed cruft.

pnp.c:
Tidy the pnpscan output, turn off the module scanning until we
sort out how to do it right.

PR: kern/9412 kern/9442 kern/9460 kern/9473
Submitted by: PRs from Daniel Sobral <dcs@newsguy.com>


43072 22-Jan-1999 rnordier

Fix extraneous free() on error.


43016 21-Jan-1999 msmith

Add 'set tunables' help, list the kernel tunable values that can currently
be overridden.


42807 18-Jan-1999 msmith

Transition from using Perl to using awk for our text-manipulation
needs. This removes the dependancy on Perl for the generation of the
loader, allowing the world to be built on a perl-free system.

Submitted by: Joe Abley <jabley@clear.co.nz>


42713 16-Jan-1999 jdp

Replace duplicated "old" linker set definitions with an include of
<sys/linker_set.h>. Note, this isn't used on the i386.


42682 15-Jan-1999 abial

Fall back to /boot/boot.conf, if /boot/loader.rc was not fount. This is
to cover the transition period.

Suggested by: msmith


42636 13-Jan-1999 abial

Change /boot/boot.conf to /boot/loader.rc - this name reflects what it
really is.

Agreed upon by: jkh, msmith and many others


42620 13-Jan-1999 msmith

Typo in patch application.

PR: kern/9459
Submitted by: "Daniel C. Sobral" <dcs@newsguy.com>


42512 11-Jan-1999 msmith

No builtin command resets getopt before using it, causing
problems in case a wrong option was given previously, and no option
is given to the next command.

PR: kern/9371
Submitted by: "Daniel C. Sobral" <dcs@newsguy.com>


42465 10-Jan-1999 msmith

Enable escapes for $ to make it possible to insert variable names into
other variable values.


42418 09-Jan-1999 msmith

Add a description for 'lsdev' so that it shows up in the '?' display


42290 04-Jan-1999 peter

Fix variable initialization.. It was written with '==' instead of '-'.
#include <string.h> for string prototypes.


42289 04-Jan-1999 peter

Clean some unused variables lint


42288 04-Jan-1999 peter

Don't forget a trailing \n when loading a kernel that has been stripped.
(This might make ELF_VERBOSE look funny, but I'm tempted to delete that
anyway)


42000 22-Dec-1998 abial

* Begin integration of built-ins with Forth: leave the exit code from
a built-in command on Forth stack.
* Fix a bug which was causing a panic when loading stripped aout kernels.

Reviewed by: jkh


41861 16-Dec-1998 n_hibma

Removed dynamic loading of FileHandle


41822 15-Dec-1998 msmith

Reformat help to improve subtopic display appearance, other minor
cleaning. The 'help' command in the loader should now be usable and
hopefully informative.


41821 15-Dec-1998 msmith

Build the composite help file from the generic and architecture-specific
help files, sorting topics and subtopics to allow maximum flexibility.


41259 20-Nov-1998 archie

Fix misallocation of buffer bug (too short)


41254 19-Nov-1998 paul

This fixes a bug in the bcache code whereby false cache hits occur
the first time block 0 is read. This fix initialises the block
numbers to -1 which isn't the most correct thing for a daddr_t but
it isn't likely to cause a problem in the boot blocks and it could
do with a more thought out fix later.

The bug is probably benign on the i386 but on the alpha it can
cause initial file opens to fail. This is the cause of the "can't
open /boot/boot.conf" errors.

It appears on the alpha because of a number of combining factors.
On the alpha the LABELSECTOR is 0 so block 0 needs to be read in
from the media. The first time this happens you get a false hit
because the bc_blkno field is zero initially. Also, the timestamp
check against this cache hit succeeds because on the alpha a hacked
getsecs() function can return 0 when it starts counting so that
the zero initial timestamp + BCACHE_TIMEOUT is greater than the
current time until getsecs() has counted passed BCACHE_TIMEOUT.

The overall effect is that the first open() that occurs gets a
false cache hit and returns garbage to the bd_strategy() function
which then fails the open() call. This false hit then stays in the
cache until BCACHE_TIMEOUT getsecs() ticks have passed; all open()
calls during this time fail.

This explains why you can generally access the media by the time
you get to interp() and start issuing commands but the earlier
attempts to run the boot scripts are failing.

It's possible that this is causing the problem switching to the
mfsroot floppy as well but I haven't confirmed that.


41140 13-Nov-1998 msmith

Add documentation for $rootdev.


40988 07-Nov-1998 jkh

Eliminate much code cruft by extending simple file I/O API to include
fopen and fclose. Also look for /boot/boot.4th now and, if found,
load its contents.


40984 07-Nov-1998 jkh

Don't have debugging on by default - it makes testing annoying. :)


40950 06-Nov-1998 msmith

Ack. Create parseable command tail properly, and eat args out of the TIB.


40948 06-Nov-1998 msmith

Don't use the poxy vmGetString interface (who uses counted strings these
days?), get the input buffer ourselves. Add some debugging code.


40929 05-Nov-1998 jkh

Remember a bit more of my forth and do:

o Add fexists word to check for the presence of a file
o make fexists and fload immediate words which DTRT both interpreted
and compiled (doh!)
o add an init word which gets run at bootstrapping time to do extra
post-coldload initialization (in the default implementation, we
look for /boot/boot.4th and load it if found).


40882 04-Nov-1998 msmith

Use a smaller default dictionary to waste less space.


40875 04-Nov-1998 msmith

Add BootForth hooks; if BOOT_FORTH is defined, pass every line read
to the Forth interpreter. Instantiate all of our inbuilt commands
as Forth words, and handle them being called from there.

Add my copyright to the bcache module (oops).


40835 02-Nov-1998 msmith

Ok, the entry aging algorithm sucked; 1s time resolution is not enough for
LRU. Use a 31-bit counter instead. If we decide to do heavy I/O through
the bootloader this will have to be revisited.


40834 02-Nov-1998 msmith

Implement a simple LRU block cache. By default this is initialised to 16k,
and will bypass transfers for more than 8k. Blocks are invalidated after
2 seconds, so removable media should not confuse the cache.

The 8k threshold is a compromise; all UFS transfers performed by
libstand are 8k or less, so large file reads thrash the cache.
However many filesystem metadata operations are also performed using
8k blocks, so using a lower threshold gives poor performance.

Those of you with an eye for cache algorithms are welcome to tell me
how badly this one sucks; you can start with the 'bcachestats' command
which will print the contents of the cache and access statistics.


40832 02-Nov-1998 msmith

Standardise on ';' as a component separator; it seems to be a little more
common than ','.


40793 31-Oct-1998 dfr

* Extend the memory available for the heap from 256k to 512k.
* Embed the stack into the bss section for loader and netboot. This
is required for netboot since otherwise the stack would be inside our
heap.
* Install loader and netboot in /boot by default.
* Fix getbootfile so that it searches for a ',' instead of a ';'
when terminating the filename.


40775 31-Oct-1998 msmith

- Add a new command 'lsdev' to list devices which might be likely to host
filesystems.
- New 'help' command and data in the help.* files (not yet installed),
provides topic and subtopic help, indexes, etc.
- Don't crash if the user tries to set an invalid console. Be helpful
instead.
- Expand tabs (badly) on the i386 video console.
- Some minor cosmetic changes.


40597 22-Oct-1998 msmith

Export an interface for presetting the ISA PnP read port address.
Make the EISA ID formatter generally available


40553 21-Oct-1998 msmith

Make ISA PnP work. This successfully enumerates as many ISA devices as I
can fit into my test machine.

- Move to using STAILQs rather than ad-hoc singly-linked lists.
- Use a mostly procedural interface to the PnP information. This
improves data-hiding.

Implement a new linker-set technique (currently on i386 only but should work
on Alpha as well). This is a good candidate for replacing the current
gensetdefs cruft completely.


40465 17-Oct-1998 peter

Load the first page of the file and use the headers in it. This should
avoid the need to seek back to offset zero which is causing trouble on
the Alpha with a gzipped kernel.


40429 16-Oct-1998 peter

"fix" the gzipped kernel load problem by having the loader check that it
can seek back to the first PT_LOAD and doing a close/reopen if it cannot.
This is because the first PT_LOAD section includes the ELF headers.
This fixes gzipped kernels on the i386, it should solve mike's problem
for the Alpha.


40414 15-Oct-1998 dfr

Change some printfs so that ELF_VERBOSE prints meaningful values on the alpha.


40327 14-Oct-1998 peter

Tweak the output one more time again. The kernel or module pathname
is useful, and usually fits all on one line with the load sizes.


40291 13-Oct-1998 peter

Make the ELF load messages cleaner.


40254 12-Oct-1998 peter

Only print kernel entry point during load.
Drastically quieten down the verbose load progress messages. They were
more useful for debugging than anything, but are beyond a joke when loading
a few dozen modules.
Simplify the ELF extended symbol table load format. Just take the main
symbol table and the string table that corresponds. This is what we will
be getting local symbols from. (needed for the alpha stack tracebacks).
Use the (optional) full symbol tables in lookups. This means we have to
furhter distinguish between symbols that can come from the dynamic linking
table and the complete table.
The alpha boot code now needs to be adapted as ddb/db_elf.c cannot use
the simpler format.
I have not implemented loading the extended symbol tables from the syscall
interface yet, just for preloaded modules.
I am not sure about the symbol resolution. I *think* it's possible that
a local symbol can be found in preference to a global, depending on the
search sequence and dependency tree.


40253 12-Oct-1998 peter

Only print filename and entry address for the kernel itself. The rest
have a meaningless entry as they are relocatable.


40215 11-Oct-1998 peter

Fix a warning


40214 11-Oct-1998 peter

Probe all consoles, not just the first. It doesn't make a lot of
difference, but might later on when we implement some sort of multi-head
console mode. Select a console after probing them all.
Don't strdup a potentially NULL return from getenv().
If we don't select an active console, choose the first regardless.
Call the console init function, at startup time and on a manual change.
The env_setenv() function needs EV_VOLATILE because it's pointing to
data that isn't malloc'ed and will cause a fault if it's freed later.


40213 11-Oct-1998 peter

Cosmetic: After the autoboot timeout, print a \n.


40143 09-Oct-1998 peter

Implement preloading for elf modules
- get dependency info from PT_DYNAMIC's DT_NEEDED tags.
- store MODINFOMD_DYNAMIC for the kernel's later use
setenv kernelname when we have it
Fix firstaddr/lastaddr calculation (duh! :-)
Explicitly skip string table with section names in it.


40142 09-Oct-1998 peter

Preload support for a.out KLD not implemented yet. (almost)
KLD modules are *not* PIC. (Shared libs are pic to avoid relocations
causing copy-on-write, that's irrelevant here).
setenv kernelname when we load it.
Use MODINFO_SSYM/ESYM for each symbol section when (if) there are
more than one being loaded.


40141 09-Oct-1998 peter

Use a consistant module search path (same as kernel will be).
Use new dependency mechanism.


40140 09-Oct-1998 peter

loader <-> kernel preload module interface constants moved to common file.
Remove Mike's explicit data structures for dependency info. This is
done via DT_NEEDED etc in the dynamic section for now. This may need
to be revisited later on.


40106 09-Oct-1998 msmith

Sync the MODINFO constants with <sys/linker.h>
Remove debugging in command_read().
Correctly strip leading controls on script commands.
Make 'ls' more DWIM in regard to pathnames. We can still do better.


40015 07-Oct-1998 msmith

- VERBOSE_LS is obsolete, as the heap is much better behaved now.
- Don't whine about nodes we can't stat(); these are usually
symlinks that lead out of the filesystem.
- Autoboot is now controlled by $autoboot_delay, which is a value
in seconds or NO to disable autoboot.
- Don't autoboot at the end of boot.conf if we have already tried.
- Add a 'read' command to complement 'echo'. Both are still hidden.
- Improve the 'source' command/function so that it is possible to
source scripts off removable media. The entire script is read and
saved before beginning execution. Script lines beginning with
'@' will not be echoed when being executed. Script execution will
normally terminate at the first error, however if the script line
begins with '-' this behaviour is overriden for that command.


39968 05-Oct-1998 msmith

Insert whitespace between unargv'd arguments.
Submitted by: "Louis A. Mamakos" <louie@TransSys.COM>


39894 02-Oct-1998 msmith

boot.c
Increase the robustness of the "is it time to boot yet" test;
if the time skipped the "when" time, we would miss it.
Don't spin in an endless loop if we don't find the first possible
kernel suggested. When we run out, don't try to load an empty
kernel name.

load_aout.c
printf format warnings


39887 02-Oct-1998 peter

First shot at loading elf symbols. Things are a bit strange because
of the ..umm.. "wierd" way binutils lays out the file. The section
headers are nearly at the end of the file and this is a problem when
loading from a .gz file which can't seek backwards (or has a limited
reverse seek, ~2K from memory).

This is intended to be compatable with the ddb/db_elf.c code and the
alpha/libalpha/elf_freebsd.c layout. I've studied these (which are NetBSD
derived) but did it a bit differently. Naturally the process is similar
since it's supposed to end up with the same result.


39830 30-Sep-1998 peter

ELF loader, part 1. It works with ELF kernels generated on the i386
so far, and should probably be able to be made to work for the alpha
without too much trouble once it's connected up and my assumptions tested.

I think (but have not tested) it will also load "old" ELF kernels that
were not linked with DYNAMIC headers.

The module glue is yet to come. (oh fun.. :-)

It does not explicitly load symbols [yet]. The _DYNAMIC data contains a
runtime symbol set that ddb can use via ddb/db_kld.c. It'll be missing
some detail that stabs normally provides (eg: number of args to a function,
line numbers, etc). On the other hand, those minimal symbols will always
be available even on a stripped kernel.

This is mostly stolen from load_aout.c with some ideas from
alpha/libalpha/elf_freebsd.c.


39828 30-Sep-1998 peter

s/out_loadmodule/aout_loadmodule/ in a printf diagnostic.


39827 30-Sep-1998 peter

Uncomment prototype for elf_loadmodule


39732 28-Sep-1998 peter

Use the variable with the path in it for the error message.


39673 26-Sep-1998 dfr

* Add old UFS compatibility code to alpha/boot1.
* Fix a raft of warnings, printf and otherwise.
* Allocate the correct amount in mod_searchmodule to prevent an overflow.
* Fix the makefiles so they work outside my home directory (oops).


39660 26-Sep-1998 msmith

console.c
Allow the MI code to override the preferred console (eg. so that
an RB_SERIAL flag from the i386 boot2 can override the default
first active console)

isapnp.c
Use the standard format for ISA PnP IDs.

pnp.c
Allow trailing comments on lines, be less picky about line
contents.

ls.c
Cosmetic error message fix.

panic.c
Print the right arguments.


39530 20-Sep-1998 dfr

Make the alpha bootstrap build again, fix some warning and change sdboot to daboot.


39472 19-Sep-1998 msmith

Add a generic hexdump tool for debugging purposes.


39448 18-Sep-1998 msmith

Remove 'panic' command (it works), don't ask for a keypress in panic, as
exit() does. Perhaps it shouldn't?


39446 18-Sep-1998 msmith

Use a.out.h to get all the correct bits in one place.


39444 18-Sep-1998 msmith

Oops, missed these. Machine-independant ISA PnP enumerator.


39441 17-Sep-1998 msmith

Initial integration of the i386 bootloader and BTX.

- Discard large amounts of BIOS-related code in favour of the more compact
BTX vm86 interface.
- Build the loader module as ELF, although the resulting object is a.out,
make gensetdefs 32/64-bit sensitive and use a single copy of it.
- Throw away installboot, as it's no longer required.
- Use direct bcopy operations in the i386_copy module, as BTX
maps the first 16M of memory. Check operations against the
detected size of actual memory.


39178 14-Sep-1998 msmith

Resynch with working sources before BTX integration.

- Use format-independant module allocator.
- Conditionalise ISA PnP support.
- Simplify PnP enumerator interface.
- Improve module/object searching.
- Add missing depend/install targets in BTX makefiles.
- Pass the kernel environment and module data in extended bootinfo fields.
- Add a pointer to the end of the kernel + modules in bootinfo.
- Fix parsing of old-style kernel arguments.


38789 04-Sep-1998 msmith

Generic plug-and-play enumerator infrastructure. Query supplied
enumerators, crossreference returned identifiers with a text-format
database and automatically load corresponding modules and dependancies.


38765 03-Sep-1998 jkh

Allow quoted strings (single or double) for grouping whitespace separated
items. Eliminate warnings.


38764 03-Sep-1998 msmith

Bootstrap updates.

- Move some startup code from MD to MI sections
- Add a 'copyout' and some copyout-related functions. These will be
obsoleted when BTX is available for the 386 and the kernel load
area becomes directly addressable.
- Add the ability load an arbitrary file as a module, associating
and arbitrary type string with it. This can be used eg. for loading
splash-screen images etc.
- Add KLD module dependancy infrastructure. We know how to look for
dependancies inside KLD modules, how to resolve these dependancies
and what to do if things go wrong. Only works for a.out at the
moment, due to lack of an MI ELF loader. Attach KLD module information
to loaded modules as metadata, but don't pass it to the kernel (it
can find it itself).
- Load a.out KLD modules on a page boundary. Only pad the a.out BSS
for the kernel, as it may want to throw symbols away. (We might want
to do this for KLD modules too.)
- Allow commands to be hidden from the '?' display, to avoid cluttering
it with things like 'echo'. Add 'echo'.
- Bring the 'prompt' command into line with the parser syntax.
- Fix the verbose 'ls'; it was using an uninitialised stack variable.
- Add a '-v' flag to 'lsmod' to have it display module metadata as well
(not terribly useful for the average user)
- Support a 'module searchpath' for required modules.
- The bootstrap file on i386 is now called 'loader' to permit the
/boot directory to use that name.
- Discard the old i386 pread() function, as it's replaced by
arch_readin()


38716 01-Sep-1998 msmith

New commandline/script parser, supports backslash quoting and environment
variable substitution.

Submitted by: Jordan Hubbard <jkh@freebsd.org>


38712 31-Aug-1998 msmith

Bootloader update.

- Implement a new copyin/readin interface for loading modules.
This allows the module loaders to become MI, reducing code duplication.
- Simplify the search for an image activator for the loaded kernel.
- Use the common module management code for all module metadata.
- Add an 'unload' command that throws everything away.
- Move the a.out module loader to MI code, add support for a.out
kld modules.

Submitted by: Alpha changes fixed by Doug Rabson <dfr@freebsd.org>


38475 22-Aug-1998 dfr

Minor tweaks to track a couple of i386 changes and to make it compile.


38466 21-Aug-1998 msmith

This commit was generated by cvs2svn to compensate for changes in r38465,
which included commits to RCS files with non-trunk default branches.