  Installing Linux on ZIP disk using ppa ZIP Drive Mini-Howto
  John Wiggins, jwiggins@comp.uark.edu
  v0.7, 26 January 1998

  This document is only useful for those with the printer port version
  of a ZIP drive who wish to have either a portable or backup Linux sys
  tem on a ZIP disk.

  1.  Disclaimer

  NOTE: I have no idea if the IDE drive works the same way as the
  printer port version does since I don't have one, so please don't ask
  me.

  The Debian install portion was basically just copied with little or no
  editing by this author.  As such, there may be some duplication of
  instructions.

  This document assumes the following:

    You have a printer port ZIP drive (since the ZIP Plus has both, I
     assume that it will work as well.)

    You already have Linux installed and running; this document is not
     for a first time install of Linux.

    You have ppa support in your current kernel or if module, the ppa
     module has been loaded.

    The mount point for the ZIP disk is the /iomega directory.

  2.  Introduction

  This document is divided into four basic sections each describing how
  to install a bare-bones Linux system on a 100MB ZIP disk using a
  printer port ZIP drive.  The first section describes how to set up the
  ZIP disk and is common to both Red Hat and Slackware distribution
  installations.  The second, third, and fourth sections describe how to
  install Red Hat 4.2, Slackware 2.2, and Debian 1.2 distributions,
  respectively, onto the ZIP disk.

  NOTE: I realize that Red Hat 5.0 has been released now, but between
  classes and work, well let's just say that it may be late May before I
  can get around to work on it.  I also, hopefully, will be testing out
  the other distributions.

  2.1.  What's new

  I've finally found enough time (although I really should be studying
  for a sociology test...) to update this document.  Thanks for all who
  emailed me with comments.

  New to this document:

    The Debian distribution

    LILO on the floppy

    New version of Red Hat (4.2 Biltmore)

    Network configuration (For Red Hat; Untested)

  2.2.  Conventions

  Indicates the following text are commands:

  ==> Indicates something noteworthy:

       ______________________________________________________________________
         NOTE:
       ______________________________________________________________________

  Indicates a screen shot/capture:

       ______________________________________________________________________
             Text here.
       ______________________________________________________________________

  2.3.  Updates

  For any updates, however rare they may be, please check:
  http://comp.uark.edu/~jwiggins/linuxZIP/

  2.4.  References

    Installation-HOWTO

    SCSI-HOWTO

    NET-3-HOWTO (for section 4.3.3)

    ZIP-Drive (mini-HOWTO)

    ParPort kernel patch (gives access to pass-through printer port)
     http://www.cyberelk.demon.co.uk/parport/

  2.4.1.  Acknowledgments/Contributors

  Slackware 2.2 section courtesy of Michael Littlejohn
  mike@mesa7.mesa.colorado.edu

  Debian 1.2 section courtesy of John D. Blair jdblair@uab.edu

  LILO information and many other helpful insight courtesy of Darcy
  Boese possum@niagara.com and Javier Rodriguez
  jrodrigu@nextgeninter.net.mx

  3.  Setting up the ZIP disk

  (Common for both Red Hat and Slackware distributions.)  Before
  starting, make sure that you have access to the ZIP  drive; either by
  having ppa in the kernel or by having the ppa module loaded.  One easy
  way to find this out is by checking dmesg:
   ==> dmesg

  You may have to pipe this to more as dmesg tends to be rather long.
  Here's a snip from mine:

       ______________________________________________________________________
       scsi0 : PPA driver version 0.26 using 4-bit mode on port 0x3bc.
       scsi : 1 host.
         Vendor: IOMEGA    Model: ZIP 100           Rev: D.08
         Type:   Direct-Access                      ANSI SCSI revision: 02
       Detected scsi removable disk sda at scsi0, channel 0, id 6, lun 0
       SCSI device sda: hdwr sector= 512 bytes. Sectors= 196608 [96 MB] [0.1 GB]
        sda: Write Protect is off
        sda: sda1 sda2
       ______________________________________________________________________

  If you only see something like:

       ______________________________________________________________________
          scsi : 0 hosts.
          scsi : detected total.
       ______________________________________________________________________

  then you have SCSI support but the ZIP wasn't found.

  3.1.  Partitioning ZIP disk

  To partition the ZIP disk, run fdisk:

   ==> fdisk /dev/sda/

  Here is a snap of the partition table I have setup:

       ______________________________________________________________________
        Disk /dev/sda: 64 heads, 32 sectors, 96 cylinders
        Units = cylinders of 2048 * 512 bytes

           Device Boot   Begin    Start      End   Blocks   Id  System
        /dev/sda1            1        1       81    82928   83  Linux native
        /dev/sda2           82       82       96    15360   82  Linux swap
       ______________________________________________________________________

  I decided to use a swap partition since I wanted to be able to use
  this with any machine.

  3.2.  Formatting and mounting the ZIP disk

  After running fdisk, format the new partition:

   ==> mke2fs -c /dev/sda1

  Then, create the swap partition: (15360 blocks as taken from fdisk)

   ==> mkswap -c /dev/sda2 15360

  Last, you'll need to mount the ZIP disk:

   ==> mount /dev/sda1 /iomega -t ext2

  3.3.  Creating the boot disk

  Since the ppa version of the ZIP drive isn't a true SCSI device, it
  isn't a bootable device and, therefore, requires a boot disk which has
  ppa included in the kernel and not as a module.

  3.3.1.  Configuring and making the kernel

  First, you'll need to configure and make a kernel that has ppa support
  enabled and not as a loadable module.  In order to get to the ppa
  option, select SCSI support:

   SCSI support (CONFIG_SCSI) Y/m/n/?

  Plus, SCSI disk support:

   SCSI disk support (CONFIG_BLK_DEV_SD) Y/m/n/?

  And finally, under the SCSI low-level drivers, is the ppa support:

   IOMEGA Parallel Port ZIP drive SCSI support (CONFIG_SCSI_PPA) Y/m/n/?

  Again, be sure not to include ppa as a module, but rather in the
  kernel.  Thus far, without the use of the parport kernel patch (see
  1.4), the ppa driver will not allow the passive port of the ZIP drive
  to be used for a printer, so you may want to say no to parallel
  printer support:

   Parallel printer support (CONFIG_PRINTER) N/y/m/?

       ______________________________________________________________________
         NOTE: For more information concerning the ppa driver, please
               refer to the ZIP-Drive mini-HOWTO.
       ______________________________________________________________________

  Once the kernel is configured, make the kernel:

   ==> make dep; make clean; make zImage

  The new kernel should be found in arch/i386/boot/zImage.

  3.3.2.  Getting the kernel to a floppy

  After having to have 4 separate floppies due to different kernels and
  needing different parameters, (plus the great email I got telling me
  how to do this) I have included a section on LILO as one of the means
  of creating a bootable floppy.

  3.3.2.1.  LILO installation

  For those who have to, or for that matter just want to, have several
  kernels on one floppy (now adays, mine are too large) or just want to
  be able to pass arguments (such as single user mode) I received email
  on how to install LILO on a floppy.

  3.3.2.1.1.  Creating the ext2 filesystem

  To create an ext2 filesystem on a floppy, just do the same command for
  the ZIP disk:

   ==> mke2fs -t /dev/fd0

  3.3.2.1.2.  Copying the essential files

  Next, make sure there's a directory for a mount point, and mount the
  floppy (I used /mnt/floppy):

   ==> mount /dev/fd0 /mnt/floppy -t ext2

  is to boot properly, you'll need the same files that LILO uses on your
  current Linux installation.

       ______________________________________________________________________
           NOTE: The file locations here are from my machine
                 and may not be the same for everyone.
       ______________________________________________________________________

   ==> cp /boot/boot.b /mnt/floppy

   ==> cp /boot/map /mnt/floppy

   ==> cp /usr/src/linux/arch/i386/boot/zImage /mnt/floppy/vmlinuzDESK

  Now to create the config file for LILO, now I miss the liloconfig
  program... (Thanks to Javier Rodriguez for this info) First, create
  the LILO config file, /mnt/floppy/lilo.conf, for the kernel(s) for the
  ZIP disk.  Here's what I used so that I could have different kernels
  to test with:

  ______________________________________________________________________
  boot=/dev/fd0
  map=/mnt/floppy/map
  install=/mnt/floppy/boot.b
  prompt
  compact
  timeout=50
  image=/mnt/floppy/vmlinuzLAP
     label=Laptop
     root=/dev/sda1
     read-only
  image=/mnt/floppy/vmlinuzDESK
     label=Desktop
     root=/dev/sda1
     read-only
  image=/mnt/floppy/vmlinuzDESK
     label=rescue
     root=/dev/hdc1
     read-only
  ______________________________________________________________________

  I have two kernels, one for my 486 laptop which required the math-co
  emulation in the kernel and the other for my desktop.  The rescue
  allows me to make an emergency boot to the hard drive.

  Last but not least, with the floppy still mounted, run LILO to install
  it on the floppy with the command:

   ==> lilo -C /mnt/floppy/lilo.conf

  Once LILO has been installed on the floppy, skip the next two steps,
  unless you enjoy doing this over again :)

  3.3.2.2.  Kernel only installation

       ______________________________________________________________________
          NOTE: This does not pertain for the LILO install.
       ______________________________________________________________________

  Copy the newly made kernel to a floppy disk:

   ==> cp arch/i386/boot/zImage /dev/fd0

  or

   ==> cat arch/i386/boot/zImage > /dev/fd0

  Yes, there are many ways to copy the kernel to a floppy, but the last
  way, my favorite, is a little more encrypted.  Try not to forget the >
  unless you like viewing binary files :)

  3.3.2.2.1.  Setting the root and swap on the floppy

  ______________________________________________________________________
     NOTE: This does not pertain for the LILO install.
  ______________________________________________________________________

  Once the kernel is on the floppy, you need to set the root device to
  the ZIP disk:
   ==> rdev /dev/fd0 /dev/sda1 I'm not sure if the next option is
  needed, but I did it none the less.  To set the swap:

   ==> rdev -s /dev/fd0 /dev/sda2

  4.  Red Hat 4.2 installation

  With anything computer related, something 3 months old is considered
  obsolete and is in need of upgrading.  Since I'm not always going to
  have the time to update this document with every update, I'll try my
  best to at least update it every other version.  As for the other
  distributions, unless the authors wish to send updates, they well
  remain as they are.

  4.1.  Personal setup

  For my installation, I have and used:

    Kernel 2.0.30

    Iomega ppa disk drive

    Red Hat 4.2

  4.2.  Package installation

  When I first decided to attempt to install Red Hat on a ZIP disk, I
  figured it would be much easier to just use a Red Hat boot disk.  Then
  I woke up.  I came very close to actually getting a boot disk created,
  even got help from various folks at Red Hat via e-mail but ultimately
  I began to give up on the whole project when I discovered the --root
  option with rpm.

  4.2.1.  What packages to get

  I found what packages to install by browsing a file I had found on one
  of Red Hat's mirrors.  This file can be found on any mirror at:

         redhat/redhat-4.2/i386/RedHat/base/comps

  For this installation, I wanted to include network support but due to
  Red Hat's X network configuration, I'm going to have to manually
  configure, or rather manually attempt to configure, the network setup
  scripts found in /etc/sysconfig/ (see section 4.3.3.)

  I decided against installing any development packages as the ZIP
  drive, at least an unpatched kernel version, is rather slow to get
  anything to compile.  I also choose not to install X mainly for disk
  space issues.  Later on, I may attempt to mount my hard drive and
  create a symlink with /usr to see if I can get X to work.

  Following is a list of what packages I installed, listed in order of
  installation.  Those marked with a * have updates from Red Hat's
  errata.  In parentheses is the updated package number;

       e.g. NetKit-B-0.09-6 was updated to NetKit-B-0.09-8 so the entry
           would be: *91) NetKit-B-0.09-6 (-8)

  ______________________________________________________________________

        (List created by the command rpm --root /iomega -qa)

         1) setup-1.7-2                   2) pamconfig-0.51-2
         3) filesystem-1.3-1              4) MAKEDEV-2.2-9
         5) adduser-1.7-1                 6) libc-5.3.12-18
         7) SysVinit-2.64-8               8) ash-0.2-8
         9) at-2.9b-2                    10) libtermcap-2.0.8-4
        11) bash-1.14.7-1                12) bc-1.03-6
        13) bdflush-1.5-5                14) cpio-2.4.2-4
        15) cracklib-dicts-2.5-1         16) tmpwatch-1.2-1
        17) crontabs-1.5-1              *18) db-1.85-10 (-11)
        19) dev-2.5.1-1                  20) diffutils-2.7-5
        21) etcskel-1.3-1                22) file-3.22-5
        23) fileutils-3.16-1             24) findutils-4.1-11
        25) grep-2.0-5                   26) groff-1.10-8
       *27) ld.so-1.7.14-4 (-5)          28) getty_ps-2.0.7h-4
        29) gzip-1.2.4-7                 30) mingetty-0.9.4-3
       *31) initscripts-2.92-1 (93-1)    32) ed-0.2-5
        33) info-3.9-1                   34) ncurses-1.9.9e-4
        35) libg++-2.7.1.4-5            *36) pwdb-0.54-3 (-4)
        37) rootfiles-1.5-1             *38) pam-0.57-2 (-4)
        39) redhat-release-4.2-1         40) less-321-3
        41) mount-2.5l-2                 42) zlib-1.0.4-1
        43) rpm-2.3.11-1                 44) e2fsprogs-1.10-0
        45) sysklogd-1.3-15              46) tar-1.11.8-11
        47) passwd-0.50-7                48) gawk-3.0.2-1
        49) gdbm-1.7.3-8                 50) gpm-1.10-8
        51) hdparm-3.1-2                 52) kbd-0.91-9
        53) slang-0.99.37-2              54) newt-0.8-1
        55) kbdconfig-1.4-1              56) ncompress-4.2.4-7
       *57) sh-utils-1.16-4 (-5)         58) procinfo-0.9-1
       *59) logrotate-2.3-3 (4-1)        60) lilo-0.19-1
        61) losetup-2.5l-2               62) linuxthreads-0.5-1
       *63) mkinitrd-1.6-1 (7-1)         64) mailcap-1.0-3
       *65) man-1.4h-5 (j-1)             66) mt-st-0.4-2
        67) modules-2.0.0-5              68) mailx-5.5.kw-6
        69) net-tools-1.32.alpha-2       70) procmail-3.10-10
        71) procps-1.01-11               72) psmisc-11-4
        73) quota-1.55-4                 74) readline-2.0-10
        75) sed-2.05-6                   76) setconsole-1.0-1
        77) sendmail-8.8.5-4             78) shadow-utils-960530-6
        79) stat-1.5-5                   80) tcsh-6.06-10
        81) termcap-9.12.6-5             82) textutils-1.22-1
        83) time-1.7-1                   84) timeconfig-1.8-1
        85) util-linux-2.5-38            86) vim-4.5-2
        87) vixie-cron-3.0.1-14          88) which-1.0-5
        89) zoneinfo-96i-4               90) tcp_wrappers-7.5-1
       *91) NetKit-B-0.09-6 (-8)        *92) lpr-0.18-1 (19-1)
       *93) bind-4.9.5p1-2 (9.6-1)      *94) bind-utils-4.9.5p1-2 (9.6-1)
       *95) wu-ftpd-2.4.2b12-6 (b15-1)   96) anonftp-2.3-3
        97) zip-2.1-1                    98) unzip-5.12-5
        99) statserial-1.1-7            100) minicom-1.75-2
       101) lrzsz-0.12.14-1             102) dip-3.3.7o-9
       103) ppp-2.2.0f-3                104) portmap-4.0-3
       105) perl-5.003-8               *106) traceroute-1.0.4.4bsd-2 (1.4a5-1)
      *107) elm-2.4.25-7 (-8)           108) lynx-2.6-2
       109) ncftp-2.3.0-5               110) pine-3.95-2
       111) rdate-0.960923-1            112) apache-1.1.3-3
      *113) nfs-server-2.2beta16-7     *114) nfs-server-clients-2.2beta16-7
            (2.2beta16-8)                    (2.2beta16-8)
  ______________________________________________________________________

  And with all the above installed, I still have 32MB left!

  4.2.1.1.  Updates; errata

  As many, I hope, Red Hat users know, some packages may be found to
  have some security flaws or anything else which may cause issues to
  arise.  For this reason, Red Hat releases updates for such packages.
  I have updated what packages I had which had updates and are marked in
  the above list.  Please refer to Red Hat's web page concerning the
  updated packages at:

  http://www.redhat.com/support/docs/rhl/rh42-errata-general.html

       ______________________________________________________________________
          NOTE: Before you can update the packages, you'll have to
                run the ldconfig as described in section 3.3.1.1.
       ______________________________________________________________________

  4.2.2.  How to install packages with rpm; without glint

  With rpm, use the --root option to specify the mounted directory as
  the root for installation.  I had discovered that many packages were
  failing to install becuase of preinstall or postinstall scripts that
  weren't executing correctly due to the different root directory, thus,
  use the --noscripts option:

   ==> rpm --root /iomega -i --noscripts PACKAGE.i386.rpm

  As I'm sure many will notice, you should get an error message like:

       ______________________________________________________________________
         failed to open /iomega/var/lib/rpm/packages.rpm

         error: cannot open /iomega/var/lib/rpm/packages.rpm
       ______________________________________________________________________

  So, just create the var/lib/rpm directory :)

   ==> mkdir /iomega/var; mkdir /iomega/var/lib; mkdir
  /iomega/var/lib/rpm

  4.2.3.  Which came first, pamconfig or pam?

  If anyone's tried to install pamconfig, it'll complain about a failed
  dependency of pam; and when you go try to install pam, pam complains
  about a failed dependency of pamconfig!  This, being the chicken or
  the egg issue, puzzled me for a while, but thanks to the --nodeps
  flag, we can force pamconfig to install; besides pam has more failed
  dependencies than just pamconfig.

   ==> rpm --root /iomega -i --nodeps --noscripts pamconfig-0.51-2

  4.3.  Problems after installation of packages

  Once everything is all nicely installed, unfortunately, the disk is
  not fully functionable, if that's a word.  What I mean to say is, if
  you try to boot now with the floppy, you won't get very far.  As soon
  as init tries to start up, you'll get two lovely errors; both of which
  complain about some files not being found that would have been made
  had the scripts been run.

  4.3.1.  The case of the missing /etc/ld.so.cache and libc.so.5

  If you tried booting, you'd get two error messages, the first will be
  the abscence of /etc/ld.so.cache file.  The second complains about a
  missing libc.so.5.

  4.3.1.1.  /etc/ld.so.cache

  As mentioned by many readers, my previous instructions didn't quite
  work as stated.  In order to get this file created, you'll have to run
  ldconfig while the ZIP disk is still mounted:

   ==> chroot /iomega /sbin/ldconfig

  Thanks to Javier Rodriguez for this solution.

  4.3.1.2.  libc.so.5

  To solve the missing lib case, you'll have to create a symlink which
  would have been created by the installation scripts.

   ==> cd /iomega/lib; ln -s libc.so.5.3.12 libc.so.5

  Thanks to Darcy Boese for this solution.

  4.3.2.  Setting root password

  Just as ldconfig was ran in 4.3.1.1, you might as well change/create a
  root password for this new system:

   ==> chroot /iomega passwd root

  4.3.3.  What the install program created

       ______________________________________________________________________
              NOTE: This is just a very brief setup, one which I haven't
                    been able to test to see if it works.  In theory it
                    should, but please do not send me complaints saying
                    that this didn't work.
       ______________________________________________________________________

  While exploring my Red Had 4.2 CD-ROM, I came across something rather
  interesting; the source code for the install program.  I found it
  under /misc/src/install and one thing which I found of some use was
  the net.c file.  In this, I found what other files that would be
  created had the install program been run.  Most of these just give
  network support (hince the name net.c) but even if you don't have a
  network card, you can still use localhost for networking (plus apache
  will complain about not being able to determine a hostname.)  These
  files include:

             /etc/hosts
             /etc/HOSTNAME
             /etc/resolv.conf
             /etc/sysconfig/network
             /etc/sysconfig/network-scripts/ifcfg-eth0
             (or any other network device you may have.)

  4.3.4.  Networking setup

  For this document, I wanted network support for my 3Com 3c595 fast-
  ethernet card (which for the last several months has been used in
  another machine.)

  First I needed a name, and since I'm running my own name server (which
  is another long story) I gave myself the name: dash-dot.wig.org (I
  just liked the sound of it.)  Having a name without an IP is kind of
  pointless, so I used a reserved non-internet usable network of
  192.168.10.0 which my name server also uses.  Even though the hostname
  is typically stored in /etc/HOSTNAME, Red Hat checks for
  /etc/sysconfig/network for this name; so let's start there.  Sample of
  my /etc/sysconfig/network:

       ______________________________________________________________________
         NETWORKING=yes
         HOSTNAME=dash-dot
         DOMAINNAME=wig.org
         GATEWAY=
         GATEWAYDEV=eth0
         NS1=192.168.10.7
       ______________________________________________________________________

  Next, bascially duplicate the same info here for /etc/HOSTNAME,
  /etc/resolv.conf, and /etc/hosts:

  /etc/HOSTNAME:

       ______________________________________________________________________
       dash-dot.wig.org
       ______________________________________________________________________

  /etc/resolv.conf:

  ______________________________________________________________________
  search wig.org
  nameserver ns.wig.org
  ______________________________________________________________________

  /etc/hosts:

       ______________________________________________________________________
       127.0.0.1 localhost
       192.168.10.99 dash-dot.wig.org dash-dot
       192.168.10.7  ns.wig.org ns
       ______________________________________________________________________

  Red Hat configures all network devices from scripts found in
  /etc/sysconfig/network-scripts.  The configuration of any network
  device is usually first created via the install program so I had to
  create these config files manually.  They all begin with ifcfg-XXX
  where XXX is the network interface which ifconfig brings up; e.g.
  ppp0, eth0, etc.  For this example, I had to create a file called
  ifcfg-eth0 which contains the following:

       ______________________________________________________________________
         DEVICE=eth0
         ONBOOT=yes
         BOOTPROTO=none
         BROADCAST=192.168.10.255
         NETWORK=192.168.10.0
         NETMASK=255.255.255.0
         IPADDR=192.168.10.99
       ______________________________________________________________________

  And last but not least, in order to get this going right now, while in
  the /etc/sysconfig/network-scripts directory, just run:

   ==> ./ifup ifcfg-eth0 boot

  This will start the script which configures the network interface if
  that interface was set to start at 'boot' time.

  For further information, please refer to the NET-3-HOWTO document.

  5.  Slackware 2.2 installation

       ______________________________________________________________________
           NOTE: This portion has not been updated.
       ______________________________________________________________________

  5.1.  Requirements

    ZIP Disk and Drive (obviously)

    Kernel with ZIP support

    ZIP Howto (recommended)

    1.44" HD formated floppy

    1 to 2 hours of time

  5.2.  Installation

  Okay, now comes the fun part: Figuring out what files need to be on
  the system disk, and what packages that you want (and can fit) on your
  ZIP drive.

  I decided that the easiest way to get started was install Slackware
  directly to the ZIP drive.  I decided on this approach mostly because
  Slackware is a smaller distribution then Red Hat, and it would be
  easier to trim out what I didn't want.  That and the fact that I am
  using the Slackware distribution anyway made it an obvious choice.

  Installing Slackware onto the ZIP disk is easy, as root run the setup
  program, and choose /iomega as the install to partition, set the
  install from partition to where the Slackware sources are (cdrom,
  hardrive, etc), select install and follow the prompts.

  5.3.  What to install

  The hardest part is deciding what to add, and what not to add.
  Obviously, you'll need the 'A' series (Which is about 8 megs), the
  rest is up to you.

  I managed to trim down the Slackware release to a respectable
  installation of 70 megs, which included gcc/g++, perl, X11R6 (NOT ALL
  OF IT!), sendmail, online docs (Minus all the development man pages,
  but including all the howto's), and an assortment of other goodies,
  while leaving about 10 megs free for user files.  YMMV

  6.  Creating /etc/fstab

  (Common to both Red Hat and Slackware distributions)

  The last thing that needs to be done before rebooting is to create the
  fstab file on the soon to be root partion.  The following is what you
  should have as a minimum for /iomega/etc/fstab:

       ______________________________________________________________________
         /dev/sda1      /         ext2        defaults   1   1
         /dev/sda2      none      swap        sw
         none           /proc     proc        defaults   1   1
       ______________________________________________________________________

  Save the file, and reboot with the freshly made boot floppy and enjoy!

  (Special thanks to Mike for reminding me about this very important and
  crucial step. - John)

  7.  Debian 1.2 Installation

       ______________________________________________________________________
           NOTE: The author of this section sent this to me June, 11th 1997.
       ______________________________________________________________________

  7.1.  Requirements

    Ppa ZIP drive and disk.

    2 blank 1.44 floppy disks

    A complete set of Debian install disks (review the Debian install
     docs if you don't remember how to make these)

    A couple hours of time

  7.2.  Overview

  After spending a few hours wrestling with dpkg I decided it would be
  simpler to modify the Debian "Rescue" disk so that it would recognize
  the ppa ZIP drive.  This proved to be very easy.  You can then use
  this modified disk to procede through the normal Debian base system
  install.  Once you've completed installing the base system you can use
  a boot disk to start the new base system and complete the installation
  using dselect.  To use this technique you need to build two kernels -
  one with ppa and initial RAM disk support, and another without the RAM
  disk support.

  If you want, you can skip all the steps in section 2 and let the
  Debian install procedure handle formatting the ZIP disk for you.

  7.3.  Creating the modified Rescue disk

  The Debian rescue disk is a SYSLINUX style boot disk, which uses a DOS
  formatted floppy disk and a special boot loader to avoid loading MS-
  DOS.  These disks are very easy to modify to start your own custom
  boot configuration.  The Debian 'boot-floppies' package contains a set
  of scripts to automate the process of building boot disks.  However,
  its so simple I found it easier to do the process by hand.  This
  deviates a bit from the Debian philosophy, but I'm over it :).  There
  are brief instructions in the 'readme.txt' file of the Rescue floppy.

  7.3.1.  Use dd (or RAWRITE under DOS) to create a new Rescue disk.

  Review the Debian install docs if you don't remember how to do this.

  7.3.2.  Build a new kernel with ZIP ppa support

  Build a new kernel with ZIP ppa support (as in step 3.3.1), but also
  configure RAM disk and initial RAM disk support.  You also need to
  configure the msdos, fat, minix, ext2fs, and procfs filesystems.

  Also configure any modules that you would like in your final
  installation on the ZIP disk.

  Once the kernel is configured, build with:

   ==> make dep; make clean

   ==> make bzImage

  Build the modules with:

   ==> make modules

  You will install these later.

       ______________________________________________________________________
                 NOTE: Make sure that you are using 'make bzImage', and
                       not 'make zImage'.
       ______________________________________________________________________

  7.3.3.  Mount the new Rescue disk.

   ==> fdmount fd0

  or

   ==> mount /dev/fd0 /mnt

  or

   ==> whatever :)

  7.3.4.  Copy the kernel image

  Copy the kernel image (on the i386 platform it will be located at
  arch/i386/boot/bzImage) to 'linux' on the floppy disk.

  7.3.5.  Editing the 'rdev.sh' script

  Open the 'rdev.sh' script located on the Rescue floppy with your
  favorite editor. Change the last line: from--:

              'rdev /mnt/linux /dev/ram0'

  to--:

              'rdev /mnt/linux /dev/sda1'

  You will also have to change all occurences of /mnt/linux to the
  appropriate path.  Since I mount my floppies under /fd0, I had to
  change /mnt/linux to /fd0/linux.

  7.3.6.  Run this modified 'rdev.sh' script.

   ==> ./rdev.sh

  7.4.  Install the base system on the ZIP drive.

  Boot your modified Rescue disk.  If all goes correctly you will be
  presented with the familiar Debian menu based install process, except
  that now it is aware of your ppa ZIP drive.  Procede through this
  process as if you were installing the system on a normal hard drive,
  but mount /dev/sda1 as root and initialize /dev/sda2 as swap.

  There is one deviation from the standard install process-- don't
  install and/or configure any loadable modules. You will install the
  modules you built in step 7.3.2 later.

  7.5.  Creating the boot disk

  You can create the boot disk just as described in steps 3.3.1 to
  3.3.2, or, if you want, just use the "Create Boot Disk" option during
  the Debian install. I like this second option because I get another
  SYSLINUX boot disk, allowing me to edit the greeting message to
  describe the nature of my custom boot floppy and allow me to enter
  additional kernel arguments. You can even include help files,
  accessible via the functions keys. You may still wish to rebuild the
  kernel and modify this boot disk by hand later to remove the RAM disk
  support. Your call.

  7.6.  Reboot the system.

  Insert your boot disk and choose the 'Reboot' option from the install
  menu.

  7.7.  Configure the base system and complete the install process.

  When the system reboots you will have a slow but completely workable
  Debian base installation running off of your ppa ZIP drive.  Proceed
  normally with the installation at this point. I installed all the
  normal UNIX utilities, along with documentation sets, make, gcc,
  libraries, and various useful file manipulation utilities. The result
  is a very powerful emergency boot system that I can use to rescue any
  of the systems in our department in an emergency.

       ______________________________________________________________________
               NOTE: You'll at least need to install 'make' to
                     complete the next step.
       ______________________________________________________________________

  7.8.  Installing the modules you built in step 7.3.2.

  If you installed make in the last step, you should be able to mount
  the hard drive partition containing your kernel build, cd to the
  proper directory and run 'make modules_install'.  Here's how I did it:

   ==> mount /dev/hda2 /mnt

   ==> cd /mnt/usr/src/linux

   ==> make modules_install

       ______________________________________________________________________
               NOTE: You won't need to modify the /etc/fstab file, as explained
                     in step 5.  The Debian installation process has already
                     taken care of that.
       ______________________________________________________________________

  8.  Afterthoughts

  Whew, and sigh. After amassing 31 ZIP disks and a ZIP unleashed
  battery pack, my next experiment is to try to get pcmcia working for
  my laptop.

