Zip® Drives
Prev |  | Next

# 2 Parallel ZIP: The `vpo` Driver

To use a parallel-port ZIP drive under FreeBSD, the `vpo` driver must be configured into the kernel. Parallel port ZIP drives also have a built-in SCSI controller. The vpo driver allows the FreeBSD kernel to communicate with the ZIP drive's SCSI controller through the parallel port.

Since the vpo driver is not a standard part of the kernel (as of FreeBSD 3.2), you will need to rebuild the kernel to enable this device. The process of building a kernel is outlined in detail in the FreeBSD Handbook. The following steps outline the process in brief for the purpose of enabling the vpo driver:

1. Run `/stand/sysinstall`, and install the kernel source code on your system.

2. Create a custom kernel configuration, that includes the driver for the vpo driver:

       # cd /sys/i386/conf
       # cp GENERIC MYKERNEL

   Edit `MYKERNEL`, change the `ident` line to `MYKERNEL`, and uncomment the line describing the vpo driver.

   If you have a second parallel port, you may need to copy the section for `ppc0` to create a `ppc1` device. The second parallel port usually uses IRQ 5 and address 378. Only the IRQ is required in the config file.

   If your root hard disk is a SCSI disk, you might run into a problem with probing order, which will cause the system to attempt to use the ZIP drive as the root device. This will cause a boot failure, unless you happen to have a FreeBSD root file-system on your ZIP disk! In this case, you will need to wire down the root disk, i.e. force the kernel to bind a specific device to `/dev/da0`, the root SCSI disk. It will then assign the ZIP disk to the next available SCSI disk, e.g. `/dev/da1`. To wire down your SCSI hard drive as `da0`, change the line

       device  da0

   to

       disk da0 at scbus0 target 0 unit 0

   You may need to change the target above to match the SCSI ID of your disk drive. You should also wire down the scbus0 entry to your controller. For example, if you have an Adaptec® 15xx controller, you would change

       controller scbus0

   to

       controller scbus0 at aha0

   Finally, since you are creating a custom kernel configuration, you can take the opportunity to remove all the unnecessary drivers. This should be done with a great deal of caution, and only if you feel confident about making modifications to your kernel configuration. Removing unnecessary drivers will reduce the kernel size, leaving more memory available for your applications. To determine which drivers are not needed, go to the end of the file `/var/log/messages`, and look for lines reading "not found". Then, comment out these devices in your config file. You can also change other options to reduce the size and increase the speed of your kernel. Read the section on rebuilding your kernel for more complete information.

3. Now it is time to compile the kernel:

       # /usr/sbin/config MYKERNEL
       # cd ../../compile/MYKERNEL
       # make clean depend && make all install

After the kernel is rebuilt, you will need to reboot. Make sure the ZIP drive is connected to the parallel port before the boot begins. You should see the ZIP drive show up in the boot messages as device vpo0 or vpo1, depending on which parallel port the drive is attached to. It should also show which device file the ZIP drive has been bound to. This will be `/dev/da0` if you have no other SCSI disks in the system, or `/dev/da1` if you have a SCSI hard disk wired down as the root device.

Prev | Home | Next
Zip® Drives |  | Mounting ZIP disks