Commit Graph

220 Commits

Author SHA1 Message Date
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
Mike Smith
eddbe21def 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.
1998-10-21 20:07:05 +00:00
Peter Wemm
a6575097c6 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.
1998-10-17 03:06:38 +00:00
Peter Wemm
3323768d99 "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.
1998-10-16 03:04:15 +00:00
Doug Rabson
94bb328025 Change some printfs so that ELF_VERBOSE prints meaningful values on the alpha. 1998-10-15 21:56:47 +00:00
Peter Wemm
adf45b4bb5 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.
1998-10-14 00:41:17 +00:00
Peter Wemm
21f1bf72d3 Make the ELF load messages cleaner. 1998-10-13 09:25:27 +00:00
Peter Wemm
2d636ab077 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.
1998-10-12 09:13:50 +00:00
Peter Wemm
55820fca35 Only print filename and entry address for the kernel itself. The rest
have a meaningless entry as they are relocatable.
1998-10-12 09:05:12 +00:00
Peter Wemm
68e3a08de1 Fix a warning 1998-10-11 10:28:51 +00:00
Peter Wemm
6e9108b6ac 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.
1998-10-11 10:19:11 +00:00
Peter Wemm
450caa170f Cosmetic: After the autoboot timeout, print a \n. 1998-10-11 10:10:41 +00:00
Peter Wemm
376f525c56 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.
1998-10-09 23:18:43 +00:00
Peter Wemm
6323a7f93f 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.
1998-10-09 23:15:39 +00:00
Peter Wemm
c582ad070a Use a consistant module search path (same as kernel will be).
Use new dependency mechanism.
1998-10-09 23:12:34 +00:00
Peter Wemm
12218096e1 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.
1998-10-09 23:11:05 +00:00
Mike Smith
6ba0dd2cfc 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.
1998-10-09 07:09:22 +00:00
Mike Smith
b820c8e626 - 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.
1998-10-07 02:38:26 +00:00
Mike Smith
4d7b7e52de Insert whitespace between unargv'd arguments.
Submitted by:	"Louis A. Mamakos" <louie@TransSys.COM>
1998-10-05 05:40:58 +00:00
Mike Smith
f9ba80b0e7 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
1998-10-02 16:22:26 +00:00
Peter Wemm
2e06076f23 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.
1998-10-02 08:04:56 +00:00
Peter Wemm
efca1dc5ee 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.
1998-09-30 19:38:26 +00:00
Peter Wemm
42355b3c0b s/out_loadmodule/aout_loadmodule/ in a printf diagnostic. 1998-09-30 19:26:23 +00:00
Peter Wemm
524d1bc175 Uncomment prototype for elf_loadmodule 1998-09-30 19:25:26 +00:00
Peter Wemm
29a1d9c4e6 Use the variable with the path in it for the error message. 1998-09-28 22:03:01 +00:00
Doug Rabson
e24168e6c3 * 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).
1998-09-26 10:51:38 +00:00
Mike Smith
e12d0ec43a 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.
1998-09-26 01:29:13 +00:00
Doug Rabson
453455282c Make the alpha bootstrap build again, fix some warning and change sdboot to daboot. 1998-09-20 21:46:19 +00:00
Mike Smith
acd1d918fe Add a generic hexdump tool for debugging purposes. 1998-09-19 01:31:28 +00:00
Mike Smith
c676c40b0d Remove 'panic' command (it works), don't ask for a keypress in panic, as
exit() does.  Perhaps it shouldn't?
1998-09-18 02:01:38 +00:00
Mike Smith
a3e06d5cc1 Use a.out.h to get all the correct bits in one place. 1998-09-18 01:12:23 +00:00
Mike Smith
6d10d056f3 Oops, missed these. Machine-independant ISA PnP enumerator. 1998-09-18 00:24:25 +00:00
Mike Smith
948486abe3 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.
1998-09-17 23:52:16 +00:00
Mike Smith
0d5d0b20dc 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.
1998-09-14 18:27:06 +00:00
Mike Smith
0e02313a88 Generic plug-and-play enumerator infrastructure. Query supplied
enumerators, crossreference returned identifiers with a text-format
database and automatically load corresponding modules and dependancies.
1998-09-04 02:43:26 +00:00
Jordan K. Hubbard
2ab54b7d11 Allow quoted strings (single or double) for grouping whitespace separated
items.  Eliminate warnings.
1998-09-03 06:14:41 +00:00
Mike Smith
06b57b0e09 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()
1998-09-03 02:10:09 +00:00
Mike Smith
7ae76930a5 New commandline/script parser, supports backslash quoting and environment
variable substitution.

Submitted by:	Jordan Hubbard <jkh@freebsd.org>
1998-09-01 00:41:24 +00:00
Mike Smith
c73b70eec4 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>
1998-08-31 21:10:43 +00:00
Doug Rabson
2b5cfb37f7 Minor tweaks to track a couple of i386 changes and to make it compile. 1998-08-22 10:31:01 +00:00
Mike Smith
c2f9d95de5 This is the new unified bootstrap, sometimes known previously as the
'three-stage' bootstrap.
There are a number of caveats with the code in its current state:
 - The i386 bootstrap only supports booting from a floppy.
 - The kernel and kld do not yet know how to deal with the extended
   information and module summary passed in.
 - PnP-based autodetection and demand loading of modules is not implemented.
 - i386 ELF kernel loading is not ready yet.
 - The i386 bootstrap is loaded via an ugly blockmap.

On the alpha, both net- and disk-booting (SRM console machines only) is
supported.  No blockmaps are used by this code.

Obtained from:	Parts from the NetBSD/i386 standalone bootstrap.
1998-08-21 03:17:42 +00:00