. 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:
parent
c9755763d9
commit
9c6e0c69be
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=7966
@ -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
|
||||
|
@ -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 $
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user