Commit Graph

190 Commits

Author SHA1 Message Date
Jake Burkholder
e39756439c Back out the previous change to the queue(3) interface.
It was not discussed and should probably not happen.

Requested by:		msmith and others
2000-05-26 02:09:24 +00:00
Jake Burkholder
740a1973a6 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
2000-05-23 20:41:01 +00:00
Daniel C. Sobral
716f301734 Document abial's .#. 2000-05-23 11:47:23 +00:00
Daniel C. Sobral
aad477d890 One of loaders' bugs disappeared somewhere along the way. 2000-05-19 11:15:12 +00:00
Daniel C. Sobral
9ece4dbfe9 Move man page directives to common/Makefile.inc. 2000-05-19 08:52:16 +00:00
Daniel C. Sobral
d9f7c44adf Make corrections to allow for Alpha. 2000-05-18 12:44:50 +00:00
Doug Rabson
8bbd2c1e46 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.
2000-05-13 15:40:46 +00:00
David E. O'Brien
7f562b6673 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.
2000-05-13 02:45:11 +00:00
Boris Popov
cf448cb2c9 long != int on Alphas. 2000-05-12 05:16:37 +00:00
Daniel C. Sobral
4eb5b7979d Make documentation on recently added heap? command reflect reality. 2000-05-04 22:51:21 +00:00
Daniel C. Sobral
a1d54dfc62 Add "heap?" to loader's man page. 2000-05-04 21:26:26 +00:00
Daniel C. Sobral
19c80876dc Further improve ordering. 2000-05-04 21:22:55 +00:00
Daniel C. Sobral
c45393b59c Sort entries in FreeBSD-specific FICL commands. 2000-05-04 21:18:26 +00:00
Peter Wemm
365c5db0a7 Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
Peter Wemm
62470170de GC unused variable (size) 2000-05-01 18:03:15 +00:00
Peter Wemm
cd2d859cee Fix some warnings on the Alpha. sizeof() returns different things on
x86 and Alpha. Sigh.
2000-05-01 18:02:38 +00:00
Boris Popov
801e789e01 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
2000-05-01 17:41:25 +00:00
Jonathan Lemon
8e30378f89 Teach the loader about the ext2fs filesystem, extended partitions, and
the new readdir function.
2000-04-29 20:49:33 +00:00
Paul Saab
6450dd3cb4 Add a cleanup function. This is needed for PXE where you should
shutdown the UNDI and unload the stack.
2000-04-20 00:06:15 +00:00
Mike Smith
300451c472 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.
2000-04-16 20:48:33 +00:00
Daniel C. Sobral
a5686d2f66 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>
2000-03-15 01:56:12 +00:00
Boris Popov
ce0d1c79c3 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
2000-02-25 05:10:44 +00:00
Mike Smith
51b5739aaf Close a file descriptor leak in the code which loads file objects.
Submitted by:	Paul Saab <paul@mu.org>
Approved by:	jkh
2000-02-17 02:19:19 +00:00
Peter Wemm
c447342094 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.
1999-12-29 05:07:58 +00:00
Mike Smith
495865e47d 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>
1999-12-28 07:19:22 +00:00
Marcel Moolenaar
a031bda24e 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.
1999-12-16 17:25:01 +00:00
Mike Smith
390cab70e1 Update to reflect use of : not ; as separator in paths passed to the
kernel.
1999-12-07 18:31:43 +00:00
Daniel C. Sobral
35d9646783 Add fairings. Do not depend on user actually supplying the arguments
he is supposed to supply.
1999-12-01 18:30:26 +00:00
Daniel C. Sobral
69c9583604 Make the prompt look like on OpenBoot. 1999-11-27 21:44:47 +00:00
Daniel C. Sobral
3206c41a3c 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. :-)
1999-11-01 08:05:22 +00:00
Daniel C. Sobral
de271252c9 Bring in ficl version 2.03. No version bump for loader. 1999-09-29 04:43:16 +00:00
Doug Rabson
74b128bad6 * 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).
1999-09-01 09:11:14 +00:00
Peter Wemm
c3aac50f28 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
Nik Clayton
51e09cd72a Fix some typos.
PR:             docs/11955
Submitted by:   Christian Weisgerber <naddy@mips.rhein-neckar.de>
1999-07-28 20:30:59 +00:00
Mike Smith
73332890ea 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.
1999-07-21 00:08:54 +00:00
Nick Hibma
1854719067 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>
1999-07-15 20:40:52 +00:00
Mike Smith
396641ab13 Document the hw.physmem tunable. (There should be arch-specific tunable
help sections.)
1999-07-02 20:38:05 +00:00
Peter Wemm
5110b634b0 Reconcile all the loader newvers.sh's into one common one. 1999-06-29 21:23:26 +00:00
Peter Wemm
240ee5d0e0 ABS_SET() and BSS_SET() are no longer used. The sole remaining user of
TEXT_SET() is DDB's command tables.
1999-06-26 12:27:01 +00:00
Ruslan Ermilov
d41ebb5068 -mdoc fix. 1999-06-23 09:06:18 +00:00
Doug Rabson
75aeebed71 Typo: "can't boot 'boot'" should be "can't boot 'kernel'" 1999-05-30 10:45:03 +00:00
Brian Somers
8a768b4324 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.
1999-05-28 08:01:52 +00:00
Robert Nordier
32ea10b4fc Fix a reference to the mysterious Mike Smisth. 1999-05-22 13:18:28 +00:00
John Birrell
957055c6a9 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).
1999-05-11 11:20:13 +00:00
Doug Rabson
84b399de51 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>
1999-05-03 09:36:29 +00:00
Joseph Koshy
e539c67bbb Correct typos.
PR:		docs/11445
Submitted by:	Kazuo Horikawa <horikawa@jp.freebsd.org>
1999-05-03 08:32:45 +00:00
Daniel C. Sobral
4093b9aa2e Make man page reflect reality on parsing rules. Now I know Jordan
never read this man page... :-)
1999-04-25 21:41:09 +00:00
Dag-Erling Smørgrav
5f967b24fc Make the location of init(8) tunable at boot time. 1999-04-20 21:15:13 +00:00
Joerg Wunsch
346f1ca8fc Don't clobber the "prompt" variable if it has already been set (e. g.
from within loader.conf).

Reviewed by:	dcs
1999-04-20 12:07:03 +00:00
Peter Wemm
6182fdbda8 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
1999-04-16 21:22:55 +00:00
Daniel C. Sobral
306a07af57 The man page, version 0.1. 1999-03-15 08:52:23 +00:00
Mike Smith
8a252a3737 Fix syntax for boot command
Noticed by:	Ruslan Ermilov <ru@ucb.crimea.ua>
1999-03-14 19:55:01 +00:00
Daniel C. Sobral
1d2a3d5731 Increase ficl's dictionary size, in preparation for the newer loader.rc. 1999-03-08 11:00:02 +00:00
Daniel C. Sobral
08c9325cb2 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>
1999-03-08 10:32:39 +00:00
Daniel C. Sobral
c7bf325ce2 Don't treat empty lines as end-of-file in include(). (I can't
believe this bug is still here... :-( )
1999-03-02 16:16:57 +00:00
Daniel C. Sobral
85f0ea7590 Fix assorted memory leak/buffer reuse problems.
Not restricted to, but including:

PR:		kern/9631
Submitted by:	Bill Fenner <fenner@parc.xerox.com>
1999-02-22 13:12:37 +00:00
Tor Egge
3d8befc22d Enable load of i386 ELF kernels with larger KVA range (e.g. starting at
0xe0100000u or 0xc0100000u instead of the usual 0xf0100000u).
1999-02-15 17:36:58 +00:00
Daniel C. Sobral
0538bafc65 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
1999-02-07 12:12:29 +00:00
Daniel C. Sobral
47749087ac 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.
1999-02-04 17:06:46 +00:00
Daniel C. Sobral
b7efae4386 Silence a warning.
PR:		bin/9754
1999-02-04 13:16:21 +00:00
Mike Smith
617aa5cdf8 Mention the net.inet.tcp.tcbhashsize tunable. 1999-02-03 09:07:33 +00:00
KATO Takenori
dccbc08d92 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>
1999-02-03 08:39:09 +00:00
Jordan K. Hubbard
ae84df99c4 Whoops! Forgot to include Mr. Sobray's more command in the last set
of commits.

Submitted by:	Daniel C. Sobral <dcs@newsguy.com>
1999-02-01 06:08:21 +00:00
Mike Smith
07dd15c173 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.
1999-01-29 01:16:50 +00:00
Jordan K. Hubbard
652375d1e5 Make builtin's state-aware in loader.
Submitted by:	Daniel C. Sobral
PR:		9663
1999-01-28 06:33:03 +00:00
Robert Nordier
5ca1fa1ed0 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>.
1999-01-25 10:34:35 +00:00
Mike Smith
b7fd9e91ed 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>
1999-01-22 23:50:14 +00:00
Robert Nordier
9e4af42e20 Fix extraneous free() on error. 1999-01-22 21:33:52 +00:00
Mike Smith
4291c3b7ad Add 'set tunables' help, list the kernel tunable values that can currently
be overridden.
1999-01-21 22:03:16 +00:00
Mike Smith
378972ac6b 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>
1999-01-18 19:05:27 +00:00
John Polstra
5e26973571 Replace duplicated "old" linker set definitions with an include of
<sys/linker_set.h>.  Note, this isn't used on the i386.
1999-01-16 03:25:24 +00:00
Andrzej Bialecki
0d9ab84751 Fall back to /boot/boot.conf, if /boot/loader.rc was not fount. This is
to cover the transition period.

Suggested by:	msmith
1999-01-15 00:31:45 +00:00
Andrzej Bialecki
fb0b33b136 Change /boot/boot.conf to /boot/loader.rc - this name reflects what it
really is.

Agreed upon by:	jkh, msmith and many others
1999-01-13 21:59:58 +00:00
Mike Smith
4e24cd8e44 Typo in patch application.
PR:		kern/9459
Submitted by:	"Daniel C. Sobral" <dcs@newsguy.com>
1999-01-13 08:11:41 +00:00
Mike Smith
95d50652d0 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>
1999-01-11 06:41:32 +00:00
Mike Smith
e4329c9942 Enable escapes for $ to make it possible to insert variable names into
other variable values.
1999-01-10 05:08:12 +00:00
Mike Smith
b6e83eb8f4 Add a description for 'lsdev' so that it shows up in the '?' display 1999-01-09 02:34:48 +00:00
Peter Wemm
4cd1140888 Fix variable initialization.. It was written with '==' instead of '-'.
#include <string.h> for string prototypes.
1999-01-04 18:39:24 +00:00
Peter Wemm
f68d58133b Clean some unused variables lint 1999-01-04 18:38:23 +00:00
Peter Wemm
717b58274a 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)
1999-01-04 18:37:41 +00:00
Andrzej Bialecki
1c49fb07d8 * 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
1998-12-22 11:41:51 +00:00
Nick Hibma
e6799271cd Removed dynamic loading of FileHandle 1998-12-16 09:09:09 +00:00
Mike Smith
8719fada36 Reformat help to improve subtopic display appearance, other minor
cleaning.  The 'help' command in the loader should now be usable and
hopefully informative.
1998-12-15 14:32:17 +00:00
Mike Smith
aa203600d5 Build the composite help file from the generic and architecture-specific
help files, sorting topics and subtopics to allow maximum flexibility.
1998-12-15 14:21:30 +00:00
Archie Cobbs
a8c0f6e542 Fix misallocation of buffer bug (too short) 1998-11-20 02:57:41 +00:00
Paul Richards
9abd5d84ac 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.
1998-11-19 18:12:03 +00:00
Mike Smith
bcda95d923 Add documentation for $rootdev. 1998-11-13 23:53:02 +00:00
Jordan K. Hubbard
ed82a24960 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.
1998-11-07 06:18:00 +00:00
Jordan K. Hubbard
c412a7ae32 Don't have debugging on by default - it makes testing annoying. :) 1998-11-07 03:44:10 +00:00
Mike Smith
8a34f8ba88 Ack. Create parseable command tail properly, and eat args out of the TIB. 1998-11-06 03:50:44 +00:00
Mike Smith
84924924e1 Don't use the poxy vmGetString interface (who uses counted strings these
days?), get the input buffer ourselves.  Add some debugging code.
1998-11-06 03:45:36 +00:00
Jordan K. Hubbard
82f35547c9 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).
1998-11-05 08:39:43 +00:00
Mike Smith
66683792a4 Use a smaller default dictionary to waste less space. 1998-11-04 03:41:09 +00:00
Mike Smith
c7db92c026 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).
1998-11-04 00:29:01 +00:00
Mike Smith
ddfd18e255 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.
1998-11-02 23:50:59 +00:00
Mike Smith
af1f6e0673 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.
1998-11-02 23:28:11 +00:00
Mike Smith
3c0efe5da1 Standardise on ';' as a component separator; it seems to be a little more
common than ','.
1998-11-02 16:55:57 +00:00
Doug Rabson
06feb69276 * 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.
1998-10-31 17:12:32 +00:00
Mike Smith
dc8be6a8f5 - 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.
1998-10-31 02:53:12 +00:00
Mike Smith
60edbabff6 Export an interface for presetting the ISA PnP read port address.
Make the EISA ID formatter generally available
1998-10-22 20:20:51 +00:00