. 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.
This commit is contained in:
Joerg Wunsch 1995-04-20 23:15:10 +00:00
parent c9755763d9
commit 9c6e0c69be
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=7966
4 changed files with 29 additions and 16 deletions

View File

@ -1,4 +1,4 @@
# $Id: Makefile,v 1.28 1995/04/14 21:26:47 joerg Exp $
# $Id: Makefile,v 1.29 1995/04/20 18:36:13 phk Exp $
#
PROG= boot
@ -50,9 +50,9 @@ boot1: boot.nohdr
boot2: boot.nohdr
dd if=boot.nohdr of=boot2 bs=512 skip=1
dd if=boot2 skip=14 of=sizetest
if [ -s sizetest ] ; then \
echo "*** Boot2 is too BIG ***" ; exit 2 ; \
@dd if=boot2 skip=14 of=sizetest 2> /dev/null
@if [ -s sizetest ] ; then \
echo "*** Boot2 is too BIG ***" ; exit 2 ; \
fi
all: boot1 boot2

View File

@ -101,6 +101,14 @@ To boot FreeBSD in serial console mode, you must do the following:
display as the console instead. (Can you say 'toggle' boys and girls?
I knew you could. :)
Should you wish to force booting off a serial console no matter if
there's a keyboard connected or not, you can also uncomment the line
with the ``FORCE_COMCONSOLE'' definition in the Makefile. Remake and
reinstall your bootblocks, and finally relabel your disk (disklabel -B)
to pick up those boot blocks.
CAVEATS:
- The idea here is to allow people to set up dedicated servers that require
@ -144,4 +152,4 @@ CAVEATS:
from the new kernel.
$Id: README.serial,v 1.1 1995/01/20 07:48:16 wpaul Exp $
$Id: README.serial,v 1.2 1995/02/16 07:37:35 wpaul Exp $

View File

@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, [92/04/03 16:51:14 rvb]
* $Id: boot.c,v 1.38 1995/04/20 18:36:14 phk Exp $
* $Id: boot.c,v 1.39 1995/04/20 23:05:23 julian Exp $
*/
@ -59,7 +59,7 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define ouraddr (BOOTSEG << 4) /* XXX */
#define NAMEBUF_LEN 100
#define NAMEBUF_LEN (8*1024)
char namebuf[NAMEBUF_LEN];
struct exec head;

View File

@ -42,7 +42,7 @@
*
* This grody hack brought to you by Bill Paul (wpaul@ctr.columbia.edu)
*
* $Id: probe_keyboard.c,v 1.3 1995/03/02 21:00:14 wpaul Exp $
* $Id: probe_keyboard.c,v 1.4 1995/04/14 21:26:52 joerg Exp $
*/
#ifndef FORCE_COMCONSOLE
@ -64,9 +64,7 @@ probe_keyboard(void)
}
/* Try to reset keyboard hardware */
#ifdef DEBUG
printf("kbd reset\n");
#endif
again:
while (--retries) {
#ifdef DEBUG
printf("%d ", retries);
@ -84,11 +82,17 @@ probe_keyboard(void)
}
gotres:
#ifdef DEBUG
printf("%d after loop.\n", retries);
printf("gotres\n");
#endif
if (!retries)
if (!retries) {
if (val == KB_RESEND) {
#ifdef DEBUG
printf("gave up\n");
#endif
return(0);
}
return(1);
else {
}
gotack:
delay1ms();
while ((inb(KB_STAT) & KB_BUF_FULL) == 0) delay1ms();
@ -99,12 +103,13 @@ probe_keyboard(void)
val = inb(KB_DATA);
if (val == KB_ACK)
goto gotack;
if (val == KB_RESEND)
goto again;
if (val != KB_RESET_DONE) {
#ifdef DEBUG
printf("stray val %d\n", val);
#endif
return(1);
}
return(0);
}
#ifdef DEBUG
printf("ok\n");