*BSD News Article 15946


Return to BSD News archive

Newsgroups: comp.os.386bsd.bugs
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!howland.reston.ans.net!zaphod.mps.ohio-state.edu!cs.utexas.edu!uunet!destroyer!cs.ubc.ca!newsserver.sfu.ca!sfu.ca!vanepp
From: vanepp@fraser.sfu.ca (Peter Van Epp)
Subject: Re: IDE_CONF.EXE, PFDISK.EXE (by popular demand)
Message-ID: <vanepp.737185219@sfu.ca>
Sender: news@sfu.ca
Organization: Simon Fraser University, Burnaby, B.C., Canada
References: <C6ssI1.HxJ@rex.uokhsc.edu> <1993May10.175619.19445@fcom.cc.utah.edu> <1993May11.170235.7400@fcom.cc.utah.edu>
Date: Wed, 12 May 1993 05:40:19 GMT
Lines: 337

	I have been working on cleaning up bootmenu (which is where pfdisk.c
is from, the whole original distribution is availible in comp.sources.misc 
Vol15), and have a not yet finished version that works on 386BSD. With the
post of Terry's copy of pfdisk, I pulled it down and hacked in the necessary
changes to make it run on 386BSD (and presumably NetBSD, but thats on another
partition of my disk and hasn't been tested yet). What follows is alpha level
code, it has been tried successfully on 386BSD at pl 2.3 using Julian's SCSI
driver, and it successfully reads the disk geometry and reads and writes (and
the written partition table looked the same under DOS). The changes to s_msdos.c
have not yet been tested under DOS and may not work. As I said this is alpha
code, and it is playing with your partition table so the risk is all yours
(but then you have the source too).
	What I would like is for a variety of people with different disk types
to try it out an see if the ioctl being used to get the geometry in fact works
for all disk controller types (I have only tried it on an Adaptec 1542B SCSI
controller with a Micpolis disk attached and the geometry gets read correctly.
From loooking at the code, I believe this should still be true even if there
is not a partition table on the drive (but again I haven't tried it yet).
I have an IDE controller and drive, but they aren't hooked up and haven't
been tried yet.
	Assuming this works for all disk types, this should be able to be 
used to solve the NetBSD installation problems (with perhaps some further
changes). This should be able to read the drive geometry that NetBSD is 
going to use, and since it may already have the DOS partition numbers (and
supplies a sector offset and length in relative sectors), the install 
script should be able to figure out what part of the disk DOS is using 
(in sectors relative to 0, and therefore geometry independent) and round
up to the next untranslated cylinder boundary (wasting a few sectors) to
start a BSD partition. In addition, if you fetch the binary copies of the
various boot menu programs that are part of the distribution of bootmenu,
you can use pfdisk from NetBSD or 386BSD to install them, and allocate
a partition for DOS, OS/2 or another SYSV unix, and select between them
at boot time (for instance I have OS/2, DOS, 386BSD, NetBSD, and ESIX SysV
loaded, any 4 of them are bootable from the menu, the other one requires
the partition table be rewritten and the machine booted to make it take
effect).
	The further change that I see being needed is to detect that there
is no partition table at all present and present the option of using the 
whole disk for BSD, at present I don't think pfdisk will do this (although
I haven't thought about it too hard). 
	The following is a tarred, compressed and uuencoded archive made on
386BSD and then uudecoded and re uuencoded on a Unix box, when vi complained
about "line too long" when I tried to include it, so I hope it is actually
Ok! It should be uudecoded, uncompressed and then untarred over top
of the pfdisktc directory that Terry just posted. It contains several 
complete programs (makefile, s_386BSD.c pathnames.h) largely stolen from
a combination of the s_srv4.c file of bootmenu and disklabel.c from 386BSD.
The other files are a set of cdifs generated with 386BSD's diff -c between
the code in Terry's tar file (xxx.c.orig) and my modified version, feeeding
them all to patch should get you a pfdisk that will make under 386BSD and 
I assume but haven't tried, NetBSD and DOS using turbo C.
	Please try it out (carefully, after backing everything up and at
your own risk!) and either post or send me information on what doesn't
work (and if you have a fix to make it work, so much the better!).

Peter Van Epp   #include <std.disclaimer>
vanepp@sfu.ca		     


begin 660 newpfdisk.tar.Z
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
 
end