SUMMARY: driver for 3 1/2" MO drive

From: Howard Schultens (hs@demeter.ukps.gwdg.de)
Date: Fri Jan 14 1994 - 04:58:12 CST


----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 104

 SUMMARY: is a driver necessary for 3-1/2" MO drives?

The original query was

> Hi,
>
> we are planning to purchase a 3-1/2", 128 MB Magneto-Optical drive for one of
> our workstations. The configuration is:
>
> SparcStation 1, 40MB main memory, 2 hard disks and 1 QIC tape drive on the
> SCSI bus, SunOS 4.1.1
>
> I get conflicting reports on whether an extra driver is necessary for the MO
> (either a Fujitsu M2511A or IBM MD 3125 B). The vendor asserts that it is
> necessary, or the computer won't recognize a volume change; the vendor, of
> course, gets $$$ for the driver. A couple of summaries posted here stated
> that -- for certain drives, at least -- this is not necessary, that the sd
> driver can handle it.
>
> What about volume change and media eject? Any suggestions, shell scripts,
> freeware are very welcome (we are on a really tight budget at the university).

I apologize for taking over a month to send out this summary, but I wanted
to get everything working so the information would be reliable.

6 people replied, the majority said that NO extra driver is necessary. We
bought a Fujitsu M2511A (128 MByte) and hooked it up -- it didn't work, but
the problem turned out to be the OS version: you need SunOS 4.1.2 or later,
then it definitely works without any extra driver. We now use it daily, and
it is very useful, albeit rather slow when you write a lot of small files to
it. Basic things about the operation:

1) formatting the disks is almost never necessary, the ones we buy are
   pre-formatted. Just install a file system with newfs. The parameters
   you use for newfs have a big influence on how much space is available
   on the disk -- and on performance. I tried various things, and Y. Tsuji's
   parameters

        newfs -v -c 64 -f 2048 -i 4096 -r 3600 -t 1 -m 3 /dev/xxxx

   brings the capacity up to 118 MBytes (114 avail). newfs /dev/xxxxx
   with no additional parameters gives a capacity of 104 MBytes.

2) the eject button is disabled when the device is mounted, enabled when
   it us unmounted. This is automatic (i.e. handled by the driver and/or
   hardware). In other words, the drive must be unmounted for a media change,
   so there is no danger of someone taking out your disk while you are still
   working on it.

3) shell scripts with setuid to root ease handling the device enormously.
   Bill Morrow sent me shell scripts for various functions, Y.Tsuji sent me
   some of his tools and much information on using the drive. I have adapted
   the scripts for our installation, so users now just type in mo_init,
   mo_mount, mo_umount, and work with the drive as with any disk on the
   system. These files are attached to this summary as a shell archive.
   Why did I use sd2g rather than sd2c? A SunOS-ace told me that this is
   the usual convention, even though the c partition is always understood
   to be the whole disk. Change this in the shell archive before unpacking
   the files if you want it otherwise.

4) the drive works fine on our SparcStation 1 with its old
   SCSI hardware. We tried it on a SS10 with 4.1.3 and had problems.
   probe-scsi in "boot mode" found the drive, but the information printed
   out had spurious characters at the end of the message, and the drive was
   not found when booting up the operating system.

5) the drive does not work with all SCSI ID numbers (addresses) on our SS1.
   I had trouble with all odd numbers -- the drive was not recognized or
   confused the interface somehow. With ID = 6, the drive was not found on
   bootup. I have no trouble with the following arrangement:

   1: system disk, 2: MO drive, 3: data disk, 4: streamer tape

6) Among the configuration switches on the drive is one for "Direct access
   device/ Optical memory device" (SW2#3). Set this to "Direct access device"
  (off). Another switch is SW2#7, "UNIT ATTENTION". Set this to ON (inhibited)
   or probe-scsi hangs when there is no cartridge in the drive.

Particular thanks go to Bill Morrow (morrow@cns.ucalgary.ca) and Y. Tsuji
(ystuji@cfi.waseda.ac.jp) for the information and programs they sent me,
and to some friends at the DLR here in Goettingen for helping me test the
drive on SparcStations with newer versions of the operating system.

Others who replied:

tony@sparky.esd.mun.ca (Tony Kocurko): Pinnacle Mirco PMO-650 works without
                                       extra driver on SS10 and SServer1000
vasey@issi.com (Ron Vasey): Alphatronix sells boxes that are 100% compatible
                            with standard SunOS drivers
cc_gucky@rcsun1 (Gerhard Holzer): Another satisfied Pinnacle (5 1/4") user
                                  who doesn't need extra drivers.

----------------------------------------------------------------------------
\ ..\ /../ Howard Schultens Tel: ++49 551 39 5914
 \.o.\ /../ Zentrum Physiologie FAX: ++49 551 39 5923
  \o.o> /: / Abteilung Neuro- und
   \o/ / \ Sinnesphysiologie
    Y R .oo \ Humboldtallee 23
     / o o.o \ D-37073 Goettingen
    <_*o*_*.*_> Germany E-Mail: hs@demeter.ukps.gwdg.de
--===r=R=r=Rr===------------------------------------------------------------

----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: mo_util.shar
X-Sun-Content-Lines: 371

# This is a shell archive. Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file". Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
# mo_format.c
# mo_format_script
# mo_init.c
# mo_mount.c
# mo_mount_script
# mo_umount.c
# format.dat
#
echo x - mo_format.c
sed 's/^X//' >mo_format.c << 'END-of-mo_format.c'
X/*=============================================================================
X * mo_format.c Wed Jan 5 15:28:44 1994 has
X *=============================================================================
X *
X * adapted from formatmo.c by Bill Morrow (morrow@cns.ucalgary.ca)
X *
X * Most MO disks are pre-formatted, you probably won't need this
X * command.
X */
X#include <stdio.h>
X#include <strings.h>
X
Xchar *env[] = { "PATH=/usr/ucb:/usr/bin:/usr/etc", 0 };
X
Xmain()
X
X{
X execle("/usr/local/bin/mo_format_script", "mo_format_script", "mo_format",
X (char *)getenv("USER"),(char *)0, env);
X perror("mo_format");
X exit(1);
X}
END-of-mo_format.c
echo x - mo_format_script
sed 's/^X//' >mo_format_script << 'END-of-mo_format_script'
X#! /bin/sh
X#==============================================================================
X# mo_format_script Thu Jan 6 10:48:03 1994 has
X#==============================================================================
X#
X# Adapted from format_mo_script by Bill Morrow (morrow@cns.ucalgary.ca)
X# This script does the actual formatting and/or initializing of the MOD
X#
X#==============================================================================
X# Definitions
X#==============================================================================
X#
X#set -x
XSCSIDEV="sd2"
XDEVICE="/dev/$SCSIDEV"g
XRAW_DEVICE="/dev/r$SCSIDEV"g
XPROG=$1
XOWNER=$2
XGROUP=`groups | awk '{print $1}'`
XFORMAT_CMD="-f /usr/local/bin/mo_format_cmd"
XINIT_CMD="-f /usr/local/bin/mo_init_cmd"
XUNKNOWN="**UNKNOWN** (not mounted with mo_mount)"
X
X#==============================================================================
X#==============================================================================
X
Xif [ $# -ne 2 ]; then
X echo ""
X echo "****$PROG: wrong number of arguments"
X echo ""
X exit 1
Xfi
X
Xif [ "$1" = "mo_format" ]; then
X COMMAND=$FORMAT_CMD
Xelif [ "$1" = "mo_init" ]; then
X COMMAND=$INIT_CMD
Xelse
X echo ""
X echo "****$PROG: Unrecognized or missing command $1"
X echo ""
X exit 1
Xfi
X
X# ------- check to see if root --------
Xif [ "`whoami`" != "root" ]; then
X echo ""
X echo "****$PROG must be run as root"
X echo ""
X exit 1
Xfi
X
X# check if mo is mounted
Xif [ "`grep $DEVICE\ /mo /etc/mtab`" != "" ]; then
X /usr/local/bin/mo_mount_script "mo_umount" "$OWNER"
Xfi
X
Xecho -n "$1 MO drive ($SCSIDEV) for owner \"$OWNER\" (group \"$GROUP\"), are you sure (Y)?"
Xread ans
Xecho ""
Xif [ -n "$ans" ]
Xthen
X case $ans in
X y*) break;;
X Y*) break;;
X *) exit 1;;
X esac
Xfi
X
X/usr/etc/format -s -d $SCSIDEV -t "Fujitsu M2511A" -p "Fujitsu M2511A v1" $COMMAND
X
Xecho "***Creating file system on $DEVICE"
Xecho ""
Xnewfs -v -c 64 -f 2048 -i 4096 -r 3600 -t 1 -m 3 $RAW_DEVICE
X
X/usr/local/bin/mo_mount_script "mo_mount" "$OWNER"
Xchown -R $OWNER.$GROUP /mo
Xchmod -R a+w /mo
X
Xecho ""
Xecho -n "?$PROG: done -- leave MO disk mounted for $OWNER (Y)?"
Xread ans
Xecho ""
Xif [ -n "$ans" ]; then
X case $ans in
X y*) break;;
X Y*) break;;
X *) /usr/local/bin/mo_mount_script "mo_umount" "$OWNER"
X exit;;
X esac
Xfi
X
Xexit
X
END-of-mo_format_script
echo x - mo_init.c
sed 's/^X//' >mo_init.c << 'END-of-mo_init.c'
X/*=============================================================================
X * mo_init.c Wed Jan 5 10:32:00 1994 has
X *=============================================================================
X *
X * adapted from formatmo.c by Bill Morrow (morrow@cns.ucalgary.ca)
X */
X#include <stdio.h>
X#include <strings.h>
X
Xchar *env[] = { "PATH=/usr/ucb:/usr/bin:/usr/etc", 0 };
X
Xmain()
X
X{
X execle("/usr/local/bin/mo_format_script", "mo_format_script", "mo_init",
X (char *)getenv("USER"),(char *)0, env);
X perror("mo_init");
X exit(1);
X}
END-of-mo_init.c
echo x - mo_mount.c
sed 's/^X//' >mo_mount.c << 'END-of-mo_mount.c'
X/*=============================================================================
X * mo_mount.c Wed Jan 5 12:12:26 1994 has
X *=============================================================================
X *
X * adapted from mountmo.c by Bill Morrow (morrow@cns.ucalgary.ca)
X */
X#include <stdio.h>
X#include <strings.h>
X
Xchar *env[] = { "PATH=/usr/ucb:/usr/bin:/usr/etc", 0 };
X
Xmain()
X
X{
X execle("/usr/local/bin/mo_mount_script", "mo_mount_script", "mo_mount",
X (char *)getenv("USER"),(char *)0, env);
X perror("mo_mount");
X exit(1);
X}
END-of-mo_mount.c
echo x - mo_mount_script
sed 's/^X//' >mo_mount_script << 'END-of-mo_mount_script'
X#!/bin/sh
X#==============================================================================
X# mo_mount_script Thu Jan 6 16:33:40 1994 has
X#==============================================================================
X#
X# Adapted from mount_mo_script by Bill Morrow (morrow@cns.ucalgary.ca)
X# This script does the actual mounting/unmounting of the MOD
X#
X# Usage:
X# mo_mount_script "caller" "user"
X#
X# caller = name of calling program: (mo_mount|mo_umount)
X# user = login name of the one mounting the drive
X#
X# The script maintains a soft lock for the drive, noting the user name
X# of whoever has the drive mounted in the file /usr/local/bin/mo_mounter. If
X# the drive is free, this is set to "unmounted"
X#
X#==============================================================================
X# Definitions
X#==============================================================================
X#
X#set -x
XSCSIDEV="sd2"
XDEVICE="/dev/$SCSIDEV"g
XPROG=$1
XOWNER=$2
XGROUP=`groups | awk '{print $1}'`
XUNKNOWN="**UNKNOWN** (not mounted with mo_mount)"
Xif [ -f /usr/local/bin/mo_mounter ]; then
X MOUNTER=`cat /usr/local/bin/mo_mounter`
Xelse
X MOUNTER=$UNKNOWN
Xfi
X
X#
X#==============================================================================
X#==============================================================================
X#
X
Xif [ $# -ne 2 ]; then
X echo ""
X echo "****$PROG: wrong number of arguments"
X echo ""
X exit 1
Xfi
X
X# -- check to see if root
Xif [ "`whoami`" != "root" ]; then
X echo ""
X echo "****$PROG must be run as root"
X echo ""
X exit 1
Xfi
X
X# -- check if /mo exists
Xif [ ! -d /mo ]; then
X echo ""
X echo "****$PROG: /mo doesn't exist or is not a directory"
X echo ""
X exit 1
Xfi
X
Xif [ "$1" = "mo_mount" ]; then
X#
X#==============================================================================
X# Mount the drive
X#==============================================================================
X# -- check if already mounted
Xif [ "`grep $DEVICE\ /mo /etc/mtab`" != "" ]; then
X if [ "$MOUNTER" = "unmounted" ]; then MOUNTER=$UNKNOWN; fi
X echo ""
X echo "****$PROG: /mo is already mounted by \"$MOUNTER\""
X echo ""
X exit 1
Xfi
X
X/usr/etc/mount -v $DEVICE /mo
Xif [ "`grep $DEVICE\ /mo /etc/mtab`" = "" ]; then
X echo ""
X echo "****$PROG: unable to mount /mo"
X echo ""
X exit 1
Xfi
X
Xecho $OWNER > /usr/local/bin/mo_mounter
X
X#
X# If you want to export the drive to other machines, uncomment the following
X# command. Add "-o root=host1:host2:...hostn,access=hosta,hostb,..."
X# as necessary for your system
X#exportfs -i -v /mo
X
Xelif [ "$1" = "mo_umount" ]; then
X#==============================================================================
X# Umount the drive
X#==============================================================================
X#
X# -- check if mo is mounted
Xif [ "`grep $DEVICE\ /mo /etc/mtab`" = "" ]; then
X echo ""
X echo "****$PROG: /mo is not mounted"
X echo ""
X echo "unmounted" > /usr/local/bin/mo_mounter
X exit 1
Xfi
X
X# -- check if this user has the drive
Xif [ "$OWNER" != "$MOUNTER" ]; then
X if [ "$MOUNTER" = "unmounted" ]; then MOUNTER=$UNKNOWN; fi
X echo ""
X echo -n "****$PROG: media mounted by \"$MOUNTER\": unmount (Y)?"
X read ans
X echo ""
X if [ -n "$ans" ]
X then
X case $ans in
X y*) break;;
X Y*) break;;
X *) exit 1;;
X esac
X fi
Xfi
X
X# Uncomment the following command if you want to manage exporting the drive
X#exportfs -vu /mo
X
X# -- unmount the MO drive
Xumount -v /mo
Xif [ "`grep $DEVICE\ /mo /etc/mtab`" != "" ]; then
X echo ""
X echo "****$PROG: could not unmount /mo"
X echo ""
X exit 1
Xfi
X
X# reset the userid in mounter file
X
Xecho "unmounted" > /usr/local/bin/mo_mounter
X
Xexit
X
Xelse
X echo ""
X echo "****$PROG: Unrecognized or missing command $1"
X echo ""
X exit 1
Xfi
X
Xexit
END-of-mo_mount_script
echo x - mo_umount.c
sed 's/^X//' >mo_umount.c << 'END-of-mo_umount.c'
X/*=============================================================================
X * mo_umount.c Wed Jan 5 12:12:26 1994 has
X *=============================================================================
X *
X * adapted from umountmo.c by Bill Morrow (morrow@cns.ucalgary.ca)
X */
X#include <stdio.h>
X#include <strings.h>
X
Xchar *env[] = { "PATH=/usr/ucb:/usr/bin:/usr/etc", 0 };
X
Xmain()
X
X{
X execle("/usr/local/bin/mo_mount_script", "mo_mount_script", "mo_umount",
X (char *)getenv("USER"),(char *)0, env);
X perror("mo_umount");
X exit(1);
X}
END-of-mo_umount.c
echo x - format.dat
sed 's/^X//' >format.dat << 'END-of-format.dat'
X# Addition to /etc/format.dat for the Fujitsu M2511A MO drive
Xdisk_type = "Fujitsu M2511A" \
X : ctlr = SCSI : fmt_time = 7\
X : ncyl = 9950 : acyl = 2 : pcyl = 9952 : nhead = 1 : nsect = 25 \
X : rpm = 3600 : bpt = 12800
X
Xpartition = "Fujitsu M2511A v1" \
X : disk = "Fujitsu M2511A" : ctlr = SCSI \
X : a = 0,0 : b = 0,0 : c = 0,0 : g = 0,248750
X
END-of-format.dat
exit



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:08:54 CDT