*BSD News Article 14969


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!spool.mu.edu!caen!usenet.cis.ufl.edu!usenet.ufl.edu!gatech!howland.reston.ans.net!noc.near.net!uunet!pipex!uknet!mcsun!news.forth.gr!news.forth.gr!vp
From: vp@terpsi.csi.forth.gr (Vassilis Prevelakis)
Newsgroups: comp.os.386bsd.bugs
Subject: new boot code doesn't like 386BSD disk labels (with fix)
Date: 23 Apr 1993 11:18:01 +0300
Organization: Institute of Computer Science, FORTH Hellas
Lines: 43
Message-ID: <vp.735552041@news.forth.gr>
NNTP-Posting-Host: terpsi.csi.forth.gr

Hi, 

Let me be a bit more specific.  I have two SCSI disks configured with
the 386BSD disklabel program, i.e. they have no MS-loss partition
info.  You can create such disks if you ask the install programm to
allocate the entire disk to 386BSD.  The problem is that the new boot
programs supplied with patchkit 0.2.3-B1 (in /sys/i386/boot) assume
that an MS-loss partition table exists at the beginning of the disk.
So when you boot it cannot find the kernel and fails.

I am including the patch bellow (its just two lines really)

**vp

-----------------------------------
Vassilis Prevelakis   |       vp@csi.forth.gr
Thoukididou 10A       |   old style address:
Plaka, Athens 105 58  |       ...!mcvax!ariadne!vp
GREECE                |
Tel. +30 1 32 32 867  |   FAX +30 1 72 24 603

*** /sys/i386/boot/disk.oc      Thu Mar 18 10:36:33 1993
--- /sys/i386/boot/disk.c       Thu Apr 22 18:56:58 1993
***************
*** 99,104 ****
--- 99,114 ----
                for (i = 0; i < NDOSPART; i++, dptr++)
                        if (dptr->dp_typ == DOSPTYP_386BSD)
                                break;
+ #ifndef ORIG
+               /*
+                * Tried to interpret the MBR as a DOS partition table and
+                * failed to find a 386BSD partition, so check to see if
+                * 386BSD is installed on the entire drive.
+                *                      vp@csi.forth.gr (Apr. 23,1993)
+                */
+               if (i >= NDOSPART)                      /*VP*/
+                       dptr->dp_start = 0;             /*VP*/
+ #endif !ORIG
                sector = dptr->dp_start + LABELSECTOR;
                Bread(dosdev, sector++);
                dl=((struct disklabel *)0);