From owner-freebsd-hackers Thu Apr 17 17:19:06 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id RAA18105 for hackers-outgoing; Thu, 17 Apr 1997 17:19:06 -0700 (PDT) Received: from argus (pm3-p7.tfs.net [206.154.183.199]) by freefall.freebsd.org (8.8.5/8.8.5) with SMTP id RAA18087 for ; Thu, 17 Apr 1997 17:18:59 -0700 (PDT) Received: (from jbryant@localhost) by argus (8.6.12/8.6.12) id TAA16768; Thu, 17 Apr 1997 19:19:00 -0500 From: Jim Bryant Message-Id: <199704180019.TAA16768@argus> Subject: Re: optical drives To: bde@zeta.org.au (Bruce Evans) Date: Thu, 17 Apr 1997 19:18:58 -0500 (CDT) Cc: freebsd-hackers@freebsd.org Reply-To: jbryant@tfs.net In-Reply-To: <199704171722.DAA06579@godzilla.zeta.org.au> from "Bruce Evans" at Apr 18, 97 03:22:08 am X-Mailer: ELM [version 2.4 PL24] Content-Type: text Sender: owner-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk In reply: > [This should be discussed in a technical mailing list, not -hackers.] > > >od_open() calls dsopen() calls dsinit() which calls check_part(). > > > >eventhough dsinit() has a label with the correct geometery, it is > >looking to verify the geometry by checking the DOS partitions, > >but optial drives don't have partitions (?) and we get 0 for the value > >of the sector per cylinder. check_part() does not check to see if the > >secpercyl is zero before doing an integer divide. This zero value > >for secpercyl causes the panic. > > You are probably supposed to write a partition table. Otherwise, garbage > may be interpreted as a good partition table with wrong offsets and > and data at wrong offsets may be written to. A panic is better. It > takes special garbage to produce the divide by zero error: > > - there must be a boot signature 0x55, 0xaa at the end of the MBR > - all of the bits in the places that are interpreted as ending sector > numbers must be 0 (this gives max_nsectors == 0 and secpercyl == 0) > - some of the bits in the places that are interpreted as starting > sector, head or cylinder numbers must be nonzero (otherwise, > check_part() is not called). This is unusual when the previous 2 > conditions are met, so the panic is unusual. > > Fix: treat the max_nsectors == 0 case as an error. > > >The optical drive did not work with the DOS fdisk. I do not know if this > >means optical media act like diskettes and do not have DOS partitions or > >fdisk is brain dead. > > A partition is just data. Even vn disks can have partitions in FreeBSD. under dog, use the adaptec afdisk utility [assuming you have adaptec]... > >Jim Bryant showed that his optical acts like a drive: > > > >> (ahc0:1:0): "IBM MTA-3230TC2210!B 0" type 0 removable SCSI 2 > >> sd1(ahc0:1:0): Direct-Access 217MB (446325 512 byte sectors) > >> sd1(ahc0:1:0): with 17934 cyls, 1 heads, and an average 24 sectors/track > > A very tall drive :-). well, it jives with the IBM MTA3230 manual [which is harder to find than chicken lips]... the easiest way to get a magneto-optical working is to simply jumper it as a type 0 removable... the geometry above is what worked after many experiments... this just uses the straight scsi driver... no od0 is required... this is how i prep the disks 230M and 128M [128M disktab entry follows at end]: ------------------------------------------------------------------------ -rwx------ 1 root wheel 335 Jun 6 1996 mkmo230 ------------------------------------------------------------------------ #!/bin/tcsh echo "" echo -n $0": writing partition table..." fdisk -i /dev/rsd1c <& /dev/null y 17934 64 32 y y 165 32 444384 y 0 1 1 216 63 32 y y 0 0 0 y 0 0 0 0 0 0 y y 0 0 0 y 0 0 0 0 0 0 y y 0 0 0 y 0 0 0 0 0 0 y y 0 y y EOF echo "done." sleep 2 echo -n $0": writing disk label..." disklabel -rw /dev/sd1s1 mo230 >& /dev/null echo "done." sleep 2 echo -n $0": laying filesystem..." newfs /dev/sd1s1a >& /dev/null echo "done." echo "" ------------------------------------------------------------------------ -rwx------ 1 root wheel 335 Sep 21 1996 mkmo128 ------------------------------------------------------------------------ #!/bin/tcsh echo "" echo -n $0": writing partition table..." fdisk -i /dev/rsd1c <& /dev/null y 9994 64 32 y y 165 32 247776 y 0 1 1 216 63 32 y y 0 0 0 y 0 0 0 0 0 0 y y 0 0 0 y 0 0 0 0 0 0 y y 0 0 0 y 0 0 0 0 0 0 y y 0 y y EOF echo "done." sleep 2 echo -n $0": writing disk label..." disklabel -rw /dev/sd1s1 mo128 >& /dev/null echo "done." sleep 2 echo -n $0": laying filesystem..." newfs /dev/sd1s1a >& /dev/null echo "done." echo "" ------------------------------------------------------------------------ -rw-r--r-- 1 root wheel 5613 Sep 21 1996 disktab ------------------------------------------------------------------------ mo230|IBM MTA-3230 with 230 Meg 3.5inch Magneto-Optical:\ :ty=removeable:dt=SCSI:rm#3600:\ :se#512:nt#64:ns#32:nc#216:sc#2048:su#444384:\ :pa#444384:oa#0:ba#4096:fa#0:ta=4.2BSD:\ :pc#444384:oc#0: mo128|IBM MTA-3230 with 128 Meg 3.5inch Magneto-Optical:\ :ty=removeable:dt=SCSI:rm#3600:\ :se#512:nt#64:ns#32:nc#121:sc#2048:su#247776:\ :pa#247776:oa#0:ba#4096:fa#0:ta=4.2BSD:\ :pc#247776:oc#0: assuming you have a 230M/128M magneto-optical, this [minor tweaking may be required if you are not using an IBM MTA3230, such as a Fujitsu] should get you running.. jim -- All opinions expressed are mine, if you | "I will not be pushed, stamped, think otherwise, then go jump into turbid | briefed, debriefed, indexed, or radioactive waters and yell WAHOO !!! | numbered!" - #1, "The Prisoner" jbryant@tfs.net - KC5VDJ 2M, 70cm, KPC-3+ - kc5vdj@wv0t.#neks.ks.usa.noam