From owner-FreeBSD-users-jp@jp.freebsd.org  Sun Dec 26 14:20:20 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id OAA49863;
	Sun, 26 Dec 1999 14:20:20 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from edge.sky.yamashina.kyoto.jp (edge.sky.yamashina.kyoto.jp [210.235.106.86])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id OAA49858
	for <FreeBSD-users-jp@jp.freebsd.org>; Sun, 26 Dec 1999 14:20:19 +0900 (JST)
	(envelope-from taca@sky.yamashina.kyoto.jp)
Received: from localhost (localhost [127.0.0.1])
	by edge.sky.yamashina.kyoto.jp (8.8.8/3.7W-199808061151) with ESMTP
	id OAA04131
	for <FreeBSD-users-jp@jp.freebsd.org>; Sun, 26 Dec 1999 14:20:18 +0900 (JST)
	(envelope-from taca)
Message-Id: <199912260520.OAA04131@edge.sky.yamashina.kyoto.jp>
To: FreeBSD-users-jp@jp.freebsd.org
From: taca@kyoto.jepro.co.jp
In-Reply-To: <19991226071702K.j5306050@cs.gunma-u.ac.jp>
References: <19991226071702K.j5306050@cs.gunma-u.ac.jp>
X-Mailer: Mew version 1.94 on Emacs 19.28 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Date: Sun, 26 Dec 1999 14:20:18 +0900
X-Dispatcher: imput version 990905(IM130)
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990727
X-Sequence: FreeBSD-users-jp 48565
Subject: [FreeBSD-users-jp 48565] Re: QandA about over 8GB/32GB IDE HDD
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: taca@sky.yamashina.kyoto.jp

In message <19991226071702K.j5306050@cs.gunma-u.ac.jp>
	on Sun, 26 Dec 1999 07:17:02 +0900,
	Matsumura Naoki <j5306050@cs.gunma-u.ac.jp> wrote:
> $B$G!"AG?M$NL\$GFI$s$G$_$?$i(B1$B$D5?Ld$,=P$F$-$?$N$G$9$,!"(B
>    boot loader $B$N@)8B(B
>     $B%+!<%M%k$r4^$`%Q!<%F%#%7%g%s$,(B8.4GB$B0JFb$K<}$^$C$F(B
>     $B$$$J$1$l$P$J$i$J$$(B
> $B$H$$$&$N$O(B SCSI HDD $B$G$bEv$F$O$^$k$s$G$9$h$M(B?
$BDL>o$O(BSCSI$B$N%O!<%I%G%#%9%/!&%I%i%$%V$O!"(BSCSI$B$N(BBIOS$B$G(BIDE$B$N%G%#%9%/$K8+$;(B
$B$kMM$J=hM}$,9T$o$l$^$9$+$i!";v>p$O0l=o$G$7$g$&!#(B

$B$J$*!"(BFreeBSD$B$N%V!<%H%m!<%@$K$D$$$F$O!"(B[FreeBSD-users-jp 47933]$B$G;d$,=q(B
$B$$$?LdBj$b$"$j$^$9!#(B

1. geometry$BJQ49$5$l$?8e$G%7%j%s%@?t$,(B1024$B0J>e$H$J$C$F$$$k!#(B
2. root$B%U%!%$%k%7%9%F%`$O(B1024$BL$K~$N%7%j%s%@$K<}$^$C$F$$$k$,!"$=$l$r4^$s(B
   $B$@(Bc$B%Q!<%F%#%7%g%s$O(B1024$B0J>e$KEO$C$F$$$k!#(B
3. bad144(8)$B$GITNI%;%/%?!&%F!<%V%k$r:n$C$F$$$k!#(B

$B$H$$$C$?>r7o$,B7$&$H!"(BFreeBSD 2.2.8$B$^$G$N%V!<%H%m!<%@(B($B@53N$K$O(Bboot2)$B$O!"(B
$BITNI%;%/%?$N%F!<%V%k$rD4$Y$K$$$C$?$H$3$m$G%a%C%;!<%8$r=P$7$FDd;_$7$F$7$^(B
$B$$$^$9!#$7$+$b!"(BCtrl-Alt-Delete$B$G%j%;%C%H$b$G$-$J$/$J$C$F$7$^$$$^$9!#(B

$B$3$N$"$?$j$,(B3.X$B0J9_$G$I$&JQ$o$C$F$$$k$+$OB8$8$^$;$s!#(BNetBSD$B$G$OLdBj$,5/(B
$B$-$J$$$H;W$C$?$i!"$=$b$=$b8=:_$N%V!<%H%m!<%@$O(Bbad144(8)$B$NITNI%;%/%?$N%F!<(B
$B%V%k$K4X$9$k=hM}$r9T$C$F$$$J$$MM$G$9!#(B

$BBP=h$H$7$F$O!"(B

o boot2$B$rD>$7$FITNI%;%/%?$N%F!<%V%k$rFI$^$J$$$+!"FI$b$&$H$7$F%(%i!<$K$J$C(B
  $B$?>l9g$O$=$l$rL5;k$7$F=hM}$rB3$1$kMM$K$9$k!#(B

o root$B%U%!%$%k%7%9%F%`$r4^$s$@(Bc$B%Q!<%F%#%7%g%s$,(B1024$BL$K~$N%7%j%s%@$K<}$^(B
  $B$kMM$K!"%9%i%$%9$N9=@.$GJ,$1$F$7$^$&!#(B

$B$H$$$&J}K!$,9M$($i$l$^$9!#(B

boot2$B$K$D$$$F$O!"0J2<$NMM$J=$@5$r9T$C$F2sHr$7$F$_$^$7$?!#(B

1. bad144(8)$B$NITNI%;%/%?!&%F!<%V%k$rFI$a$J$+$C$?>l9g$O!"$3$l$rL5;k$7$F(B
   $B=hM}$rB3$1$k!#(B

2. 1.$B0J30$NFI$_9~$_$G%(%i!<$,5/$-$?>l9g$O%-!<F~NOBT$A$r$7$F!"(B
   Ctrl-Alt-Delete$B$G%j%;%C%H$r2DG=$H$9$k!#(B

$B$H$$$C$?JQ99$r9T$C$?$D$b$j$G$9!#%Y!<%9$O(B2.2.8 STABLE$B$N(B9$B7n:"$G$9$,!"(B
RELEASE$B$HFbMF$OJQ$o$C$F$$$J$$$O$:$G$9!#$;$C$+$/$J$N$G!"$3$3$K=P$7$F(B
$B$H$-$^$9!#(B

--
$B?@8M(B $BN4Gn(B($B$+$s$Y(B $B$?$+$R$m(B) at home


Index: boot.h
===================================================================
RCS file: /usr/local/libdata/cvs/src/sys/i386/boot/biosboot/boot.h,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.1.2.2
diff -u -u -r1.1.1.2 -r1.1.1.1.2.2
--- boot.h	1999/09/06 03:39:44	1.1.1.2
+++ boot.h	1999/10/25 11:05:18	1.1.1.1.2.2
@@ -76,6 +76,7 @@
 /* io.c */
 void gateA20(void);
 void printf(const char *format, ...);
+int getchar(int in_buf);
 void putchar(int c);
 void delay1ms(void);
 int gets(char *buf);
Index: disk.c
===================================================================
RCS file: /usr/local/libdata/cvs/src/sys/i386/boot/biosboot/disk.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.1.2.4
diff -u -u -r1.1.1.2 -r1.1.1.1.2.4
--- disk.c	1999/09/06 03:39:44	1.1.1.2
+++ disk.c	1999/11/25 13:52:58	1.1.1.1.2.4
@@ -102,6 +102,9 @@
 		dl = &disklabel;
 #else	EMBEDDED_DISKLABEL
 		p = Bread(dosdev_copy, 0);
+		if (p == NULL) {
+			return 1;
+		}
 		dptr = (struct dos_partition *)(p+DOSPARTOFF);
 		slice = WHOLE_DISK_SLICE;
 		for (i = 0; i < NDOSPART; i++, dptr++)
@@ -111,6 +114,9 @@
 				break;
 			}
 		p = Bread(dosdev_copy, sector + LABELSECTOR);
+		if (p == NULL) {
+			return 1;
+		}
 		dl=((struct disklabel *)p);
 		disklabel = *dl;	/* structure copy (maybe useful later)*/
 #endif	EMBEDDED_DISKLABEL
@@ -170,6 +176,10 @@
 		    do {
 			/* XXX: what if the "DOS sector" < 512 bytes ??? */
 			p = Bread(dosdev_copy, dkbbnum + i);
+			if (p == NULL) {
+				do_bad144 = 0;
+				break;
+			}
 			dkbptr = (struct dkbad *) p;
 /* XXX why is this not in <sys/dkbad.h> ??? */
 #define DKBAD_MAGIC 0x4321
@@ -207,6 +217,11 @@
 	{
 		dosdev_copy = dosdev;
 		p = Bread(dosdev_copy, badsect(sector++));
+		if (p == NULL) {
+			printf("Error: reading %d\n", --sector);
+			for(;;)			/* loop forever */
+				getc();
+		}
 		bcopy(p, iodest+offset, BPS);
 	}
 }
@@ -221,8 +236,7 @@
 
 		cyl = sector/spc;
 		if (cyl > 1023) {
-			printf("Error: C:%d > 1023 (BIOS limit)\n", cyl);
-			for(;;);        /* loop forever */
+			return NULL;
 		}
 		head = (sector % spc) / spt;
 		sec = sector % spt;
@@ -235,9 +249,15 @@
 		    nsec = 1;
 		    twiddle();
 		    while (biosread(dosdev, cyl, head, sec, nsec, ra_buf) != 0) {
+			int n = 5;
 			printf("Error: D:0x%x C:%d H:%d S:%d\n",
 			       dosdev, cyl, head, sec);
-			twiddle();
+			if (n-- > 0)
+				twiddle();
+			else {
+				for(;;)
+					getc();
+			}
 		    }
 		}
 		ra_dev = dosdev;
Index: io.c
===================================================================
RCS file: /usr/local/libdata/cvs/src/sys/i386/boot/biosboot/io.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.1.2.2
diff -u -u -r1.1.1.2 -r1.1.1.1.2.2
--- io.c	1999/09/06 03:39:45	1.1.1.2
+++ io.c	1999/10/25 11:05:19	1.1.1.1.2.2
@@ -46,8 +46,6 @@
 					   enable clock line */
 
 
-static int getchar(int in_buf);
-
 /*
  * Gate A20 for high memory
  */
@@ -134,7 +132,7 @@
 		putc(c);
 }
 
-static int
+int
 getchar(int in_buf)
 {
 	int c;

