Commit Graph

120 Commits

Author SHA1 Message Date
Bruce Evans
45c7e5044d Fix recent breakage of non-floppies with 36 sectors/track.
Disable support for not looking at the label when booting from fd2d
(15-sector floppies in drive 2) and fd2b (other floppies in drive 2).
1995-09-16 13:03:59 +00:00
Nate Williams
e21fd30049 When confronted with a drive that says there are 36 sectors/track,
ignore and set it to 18 sectors/track.  This allows FreeBSD to boot with
2.88MB floppies which are used in older ThinkPads.

Submitted by:	Random Net person whose name I lost
1995-09-16 05:02:37 +00:00
David Greenman
dd4e7c343b Killed unnecessary \r. 1995-09-07 21:11:34 +00:00
Julian Elischer
623463ca4a Cosmetic changes to make a comment more nearly reflect reality 1995-09-03 05:36:13 +00:00
Bruce Evans
826c5c4980 Convert \n to \r\n in serial_putchar(). 1995-08-26 20:03:43 +00:00
Paul Traina
abdd03a364 Clean up compilation warning. 1995-08-23 05:26:21 +00:00
Joerg Wunsch
ea76f9453e First part of importing the Japanese `od' driver.
Claim the major numbers (before sombedoy else jumps in again and
claims the slots for his foocd driver :-), install all the hooks that
are required.

While i've been at this, i've cleaned up some of the routines at the
end of i386/conf.c; all the importers of the latest CDROM drivers
forgot to fill in the appropriate information.  The `ata' driver
(vapourware?) does only occupy a slot in the bdevsw[] array, btw.

The actual import of the code does require a minor change in the SCSI
subsystem, and i want to have this reviewed by Peter first, so it will
be deferred for some days.  The driver is already working for me
though.

Submitted by:	akiyama@kme.mei.co.jp (Shunsuke Akiyama)
1995-08-19 15:59:35 +00:00
Joerg Wunsch
75da8757fa Install kzip.o with BINMODE=444.
Submitted by:	graichen@sirius.physik.fu-berlin.de (Thomas Graichen)
1995-08-15 19:36:02 +00:00
Bruce Evans
9c0dc173cc Change install' to ${INSTALL}' so that default install flags can be
specified in the top level Makefiles.
1995-07-25 00:37:58 +00:00
Joerg Wunsch
f6027d9b3d this avaids the "lineoverflow" which you'll always get at 80 column
displays at bootup

Reviewed by:
Submitted by:	graichen@omega.physik.fu-berlin.de (Thomas Graichen)
Obtained from:
1995-07-22 22:32:49 +00:00
Joerg Wunsch
0f72d204e6 Reset defaults in case of boot() is looping several times (e.g. the
user has entered a bogus kernel name in the first place).

Also fix the broken #ifdef FORCE_COMCONSOLE, it has been disabled by
accident.  (NB: the keyboard probe remains disabled however.)

Few cosmetic fixes (declare functions to be void instead of int),
while i've been at this.

Pointed out by: wosch@cs.tu-berlin.de (Wolfram Schneider), for the init bug
1995-06-25 14:02:57 +00:00
Andrey A. Chernov
525cb41eb5 1) Enable boot from root partition which end > cyl 1023, it isn't criminal
2) Produce hard error when Bread attempts to read cyl >1023
Reviewed by: bde
1995-06-23 01:42:42 +00:00
Rodney W. Grimes
d3628763db Merge RELENG_2_0_5 into HEAD 1995-06-11 19:33:05 +00:00
Rodney W. Grimes
9b2e535452 Remove trailing whitespace. 1995-05-30 08:16:23 +00:00
Poul-Henning Kamp
13eb702447 Reduce the amount of bss the kzip stuff uses by moving big buffers into
the first Mb of memory.  Makes 4Mb machines more happy.
1995-05-29 01:38:07 +00:00
Poul-Henning Kamp
75e21a4e1e Now I could finally test this change: bad144 is now relative to the
partition.
1995-05-21 03:27:13 +00:00
Bruce Evans
ec0896af08 Reviewed by: phk
serial_putchar() always hung if it was called and the serial port existed,
so booting with -h hung when the above bug was fixed.  Previously, setting
-h did nothing but -h was sometimes the default due to the stack garbage
bug.
1995-05-17 07:39:43 +00:00
Bruce Evans
4061e47297 Reviewed by: phk
Submitted by:	DI. Christian Gusenbauer <cg@scotty.edvz.uni-linz.ac.at>

The `howto' arg to boot() was not supplied, so it was stack garbage (actually
the return address in the boot program).  I didn't use the submitted fix.
1995-05-17 07:37:53 +00:00
Poul-Henning Kamp
303fd456bf Use spc, not spt, DUH! Thanks Bruce!
Submitted by:	bde
1995-05-11 16:19:50 +00:00
Poul-Henning Kamp
0f15ab39ec Make disk.c smart enough to handle disk with "OnTrack Disk manager".
Make it complain if people try to boot from a partition which extends
past 1024 cylinders.  This is better than a random reset...
1995-05-08 02:02:56 +00:00
Poul-Henning Kamp
886b0df400 New and improved version from the author.
Submitted by:	DI. Christian Gusenbauer <cg@fimp01.fim.uni-linz.ac.at>
1995-04-27 18:22:36 +00:00
Julian Elischer
220112c567 Submitted by: bde@freebsd.org 1995-04-21 22:20:34 +00:00
Bruce Evans
8da0f3b87a Make some functions static like they always should have been.
Change the interfaces of these functions to save space.  The code
that takes the least amount of space is often the opposite to what
you might expect.  E.g., it helps to waste a few bytes passing
pointers so that the compiler can't see that certain addresses
are identical (gcc likes to waste space by reloading fat constants
even when the constant is already in a register).

Rewrite getbootdev() to save 80 bytes of space and to make it less
ugly.  32 bytes were saved simply by omitting the continue statements
in the pseudo-switch.
1995-04-21 16:50:32 +00:00
Bruce Evans
34951155ae Update the pseudo-prototype for serial_putc() to match the actual prototype. 1995-04-21 16:30:18 +00:00
Bruce Evans
a9ef92e638 Never pass char or short args to functions. This saves 64 bytes of
recently introduced bloat in just 2 calls to biosread(), although
very little in calls to putc() and serial_putc().  Gcc produces
amazingly bad code for unnecessary conversions.  E.g., if it has
`int x' in register %edx and wants to pass a char, then it could
simply push %edx and access only one byte in the callee.  Instead,
it sometimes unnecessarily spills %edx; it always sign extends
%edx and pushes the result.

Remove useless `extern' in function prototypes.

Remove unused declaration of `end'.

Declare pbzero() and pcpy() like the library bzero and bcopy().

Declare printf() properly.
1995-04-21 16:07:12 +00:00
Joerg Wunsch
9c6e0c69be . Make Poul's boot2 overflow warning less noisy in case the blocks
do fit, and beeping in case of an overflow.

.  Drop a comment about the ``FORCE_COMCONSOLE'' option into
   README.serial.

.  Increase the name buffer for the root directory from 100 bytes
   to 8 KB;  this is in no way ideal, but (IMHO) the best that can
   be done by now.  People did encounter problems with their root
   dir name listing overflowing the allocated buffer space.  Once
   we've got the three-stage boot, we should implement some basic
   malloc().  Swap space is already getting tight now, perhaps the
   swap should go into another 64 KB segment instead.

.  Make the keyboard probe less paranoid.  It should not give up in
   case of a keyboard that's continuously demanding RESEND's.  Even
   though the keyboard reset apparently has not been reported to be
   complete, it's at the very least proven that there IS something
   like a keyboard available.

   This solves problems with the ``Gateway-2000 AllKey programmable''
   (sp?) keyboard, that experienced a total hang with the previous
   probe.

   Thanks goes to Scott Blachowicz <scott@statsci.com> for his
   extensive testing of my various interim (debugging) bootblocks
   to get this working.
1995-04-20 23:15:10 +00:00
Julian Elischer
c9755763d9 Add an option to make it easy to default to the hd1 mode
also save a few bytes
1995-04-20 23:05:23 +00:00
Poul-Henning Kamp
3226e381f8 Added a check so compilation fails if the bootblocks are too big.
replaces a switch with ifs to reduce size.
1995-04-20 18:36:14 +00:00
Poul-Henning Kamp
16b560a716 Added -C option to set RB_CDROM, so that we use our cdrom as root. 1995-04-20 06:08:27 +00:00
Joerg Wunsch
afb7eb14a5 Remove the #ifdef REDUNDANT crud. This could be looked up in CVS by
interested parties.

Make the loader refuse to load anything below 1 MB -- we didn't
support it since FreeBSD 2.0R.  Avoid gratuitously wiping out the BIOS
variables or the loader.
1995-04-16 13:02:52 +00:00
Poul-Henning Kamp
6d7b3d3838 Added kzipboot 1995-04-15 08:24:33 +00:00
Poul-Henning Kamp
7970b29866 The magic code to uncompress a kernel.
Reviewed by:	phk
Obtained from:	Linux via 386BSD.
1995-04-15 08:23:55 +00:00
Poul-Henning Kamp
0fbb4a064b "jl" and "jb" doesn't quite do the same thing...
Reviewed by:	phk
Submitted by:	"DI. Christian Gusenbauer" <cg@scotty.edvz.uni-linz.ac.at>
1995-04-14 23:01:33 +00:00
Joerg Wunsch
15c99149f8 Boot block cleanup.
o Fix the keyboard probe to properly wait for the ready bit before
sending a command to the keyboard controller.  This should avoid the
problems some people are experiencing where the boot blocks hang the
system during keyboard probe.  (It does solve it for me.)

o Fix a bug that effectively prevented the boot blocks from ever
passing control to the serial console.  [while(--retries) instead of
while(retries--)]

o Gratuitously reduced the keyboard probe timeout from 500 to 5
seconds. :)

o Introduced a new option ``FORCE_COMCONSOLE'' as a commented-out
example in the Makefile, to force the usage of a serial console
regardless of a keyboard being connected or not.

o Moved all external declarations to boot.h, declared all functions
there, and ANSIfied all function declarations/definitions.
(printf() remains bogus, however -- i'm too lazy to fix this.)
We're in the ninetees, dunno why we should still support compilers
from the 70's.
1995-04-14 21:26:53 +00:00
Bill Paul
8a03631b28 According to a Usenet posting forward to me by Jordan, there's
at least one user out there who's system won't autoboot from the
serial console because of what sounds like 'phantom keystrokes'
making the timeout timer trip. I've tried to solve this by
adding an extra call to init_serial() right before the 'Boot:'
prompt is printed (done only if RB_SERIAL is set) to hopefully
make sure that the input buffer is clear. Unfortunately, the fellow
is in Germany and I haven't heard back from him yet. I haven't
been able to duplicate this problem on my hardware, so this is
a stab in the dark. At the very least, it shouldn't hurt anything.
1995-04-14 01:35:59 +00:00
Martin Renters
fd7e139eed Break netboot into device specific versions.
nb8390.[cr]om for NS8390 boards (if_ed driver)
nb3c509.[cr]om for 3c509 boards (if_ep driver)

Submitted by:	Serge Babkin (babkin@hq.icb.chel.su)  [3c509 support]
1995-04-12 20:15:33 +00:00
Bruce Evans
e1bc021264 Include <machine/cpufunc.h> to get i/o functions - don't duplicate almost
200 lines of code.
1995-04-01 16:08:58 +00:00
Bruce Evans
19b204bc85 Fix dependencies for netboot.rom. ${OBJS} isn't valid when the
dependencies are checked - it is set much later in bsd.prog.mk.

Add a comment about broken dependencies on options.
1995-04-01 16:03:25 +00:00
Jordan K. Hubbard
b32d3189e4 Diskless boot support for 3C509.
I'm not exactly sure why all the inb/outw stuff got added to netboot.h
and I'd be happy if someone like Martin or Bruce could take a look at it!
Submitted by:	"Serge A. Babkin" <babkin@hq.icb.chel.su>
1995-03-31 06:51:37 +00:00
Poul-Henning Kamp
c57e984258 Don't install /usr/mdec/boot
Install the biosboot as /usr/mdec/boot[12]
Make the traditional links from [swf]dboot and boot[swf]d to boot[12] files.
Install dosboot as /usr/mdec/boot/fbsdboot.exe
1995-03-28 19:22:43 +00:00
Poul-Henning Kamp
9346bafa46 And all serial chars with 0x7f to discard parity bits. 1995-03-19 06:10:32 +00:00
David Greenman
78dfa6036a Removed "-D" option and made symbols load all the time. They will be
discarded if the kernel isn't built with DDB.
1995-03-14 08:21:53 +00:00
Bill Paul
e8dfeb8828 Some people have complained that they were unable to boot the
Feb. 10th snapshot. The keyboard probe in the bootblock seems to
have been singled out as the cause of these problems, so I've beefed it
up alittle. This pushes us right up to the edge of the size limit:
the second stage boot is now 7152 bytes in size, just 8 bytes under
the wire. On the other hand, the new probe now does almost exactly
what syscons does, so hopefully this will do the trick. It seems
to work properly on my hardware, but then so did the old probe.
1995-03-02 21:00:14 +00:00
Bruce Evans
2987d72f4a Adjust for rearranged slice numbers. 1995-02-16 15:06:09 +00:00
Jordan K. Hubbard
6129798f6a Update this a little, though we probably need to either nuke or rename it! 1995-02-16 12:02:08 +00:00
Bill Paul
fbf23e9a0b Minor changes and additions to the serial README file. 1995-02-16 07:37:35 +00:00
Poul-Henning Kamp
b8e4cd2bb3 This is a MS-DOS program, but is does something useful for us:
It boots FreeBSD from a running MS-DOS system.

It's compiled using some MS-DOS tools, but there is a binary
hidden in the uuencoded file.  (Go ahead, flame me if you can come up
with a solution for the problem.  Just saying "this is bad" doesn't count!)

Rod, you were right: one would have to deal with weird interfaces to the
memory managers, and it seems that Christian found them all, and made them
work.

Thanks Christian!

Reviewed by:	phk
Submitted by:	DI. Christian Gusenbauer <cg@fimp01.fim.uni-linz.ac.at>

Christians README:
------------------

Hi Everybody!

This is version 1.5 of "fbsdboot", a program that allows you to boot a kernel
from a MS-DOS partition or a FreeBSD partition. This program runs using DOS.
It works with various memory managers (like  EMM386, 386MAX) under certain
circumstances.

First, a FreeBSD kernel is always loaded to memory starting at 0x100000. To
assure that loading the kernel *does not* overwrite memory used by memory
managers, high memory for the kernel is allocated and after loading the kernel
it's moved to 0x100000.

Second, there are many ways to switch to protected mode which is necessary to
start the kernel. Each BIOS gives you the possibility to use INT15H (AH=89H)
to do that. But some memory-managers like 386max does not allow you to use
this method.

An other way to do the switch is to use DPMI services, but they do not
guarantee, that the protected mode application is executed with privilege
level 0. Therefore this method is *not* used.

VCPI services offer another way to switch to protected mode, and VCPI servers
are built into "emm386.exe", "386max" and "qemm". That's why, this method is
implemented in fbsdboot.exe.

Fbsdboot.exe tries to switch to protected mode using VCPI services. If they're
not available INT15H is used to do the switch. If that fails, it's not possible
for this version of fbsdboot.exe to boot a kernel :-(.

You can get commandline options of fbsdboot if you start it with "-?" as option!

I don't know, if fbsdboot works with QEMM, as I don't have the possibility to
test it.

Enjoy and have fun!

Christian.
cg@fimp01.fim.uni-linz.ac.at


PS: Many thanks to Bruce Evans for his assistance!
1995-02-15 04:45:50 +00:00
Rich Murphey
73b2840c90 Reviewed by: Jordan
Submitted by:	Rich

Make conditionals on BIOSWAIT consistent with usage in io.c.

If you had 'BOOTWAIT=0' in your /etc/make.conf then biosboot wouldn't
compile.  It was '#if' in io.c and '#ifdef' in probe_keyboard.c so I
changed the latter to '#if'.

Even if BOOTWAIT is undefined then '#if BOOTWAIT' becomes
'#if 0' so it should compile either way with this change.
1995-02-15 04:17:59 +00:00
David Greenman
8710a63985 Get rid of extra []'s and otherwise fix-up boot prompt. Reordered
boot flags processing to be alpha-beta.
1995-01-28 03:51:39 +00:00
Bruce Evans
b5d89ca8ad Load the kernel symbol table in the boot loader and not at compile time.
(Boot with the -D flag if you want symbols.)

Make it easier to extend `struct bootinfo' without losing either forwards
or backwards compatibility.

ddb_aout.c:
Get the symbol table from wherever the loader put it.
Nuke db_symtab[SYMTAB_SPACE].

boot.c:
Enable loading of symbols.  Align them on a page boundary.  Add printfs
about the symbol table sizes.
Pass the memory sizes to the kernel.
Fix initialization of `unit' (it got moved out of the loop).
Fix adding the bss size (it got moved inside an ifdef).
Initialize serial port when RB_SERIAL is toggled on.
Fix comments.
Clean up formatting of recently added code.

io.c:
Clean up formatting of recently added code.

netboot/main.c, machdep.c, wd.c:
Change names of bootinfo fields.

LINT:
Nuke SYMTAB_SPACE.
Fix comment about DODUMP.

Makefile.i386:
Nuke use of dbsym.
Exclude gcc symbols from kernel unless compiling with -g.
Remove unused macro.
Fix comments and formatting.

genassym.c:
Generate defines for some new bootinfo fields.  Change names of old ones.

locore.s:
Copy only the valid part of the `struct bootinfo' passed by the loader.
Reserve space for symbol table, if any.

machdep.c:
Check the memory sizes passed by the loader, if any.  Don't use them yet.

bootinfo.h:
Add a size field so that we can resolve some mismatches between the loader
bootinfo and the kernel boot info.  The version number is not so good for
this because of historical botches and because it's harder to maintain.
Add memory size and symbol table fields.  Change the names of everything.

Hacks to save a few bytes:

asm.S, boot.c, boot2.S:
Replace `ouraddr' by `(BOOTSEG << 4)'.

boot.c:
Don't statically initialize `loadflags' to 0.  Disable the "REDUNDANT"
code that skips the BIOS variables.  Eliminate `total'.  Combine some
more printfs.

boot.h, disk.c, io.c, table.c:
Move all statically initialzed data to table.c.

io.c:
Don't put the A20 gate bits in a variable.
1995-01-25 21:40:47 +00:00