<!doctype linuxdoc system>

<article>
<title>Installing Linux on ZIP disk using ppa ZIP Drive Mini-Howto
<author>John Wiggins, <htmlurl url="mailto:jwiggins@comp.uark.edu" name="jwiggins@comp.uark.edu">
<date>v0.7, 26 January 1998

<abstract>
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
system on a ZIP disk.
</abstract>

<toc>

<sect>Disclaimer

<p>
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.

<p>
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:
<itemize>
<item> You have a printer port ZIP drive (since the ZIP Plus has 
  both, I assume that it will work as well.)
<item> You already have Linux installed and running; this document is
  not for a first time install of Linux.
<item> You have ppa support in your current kernel or if module, the
  ppa module has been loaded.
<item> The mount point for the ZIP disk is the /iomega directory.
</itemize>

<sect>Introduction

<p>
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.
<p>
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.

<sect1>What's new

<p>
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:
<itemize>
<item> The Debian distribution
<item> LILO on the floppy
<item> New version of Red Hat (4.2 Biltmore)
<item> Network configuration (For Red Hat; Untested)
</itemize>

<sect1>Conventions

<p>
Indicates the following text are commands:
<p>
<bf>==></bf>
Indicates something noteworthy:
<tscreen><code>
  NOTE:
</code></tscreen>
Indicates a screen shot/capture:
<tscreen><code>
      Text here.
</code></tscreen>

<sect1>Updates

<p>
For any updates, however rare they may be, please check:
<htmlurl url="http://comp.uark.edu/~jwiggins/linuxZIP/" name="http://comp.uark.edu/~jwiggins/linuxZIP/">

<sect1>References

<p>
<itemize>
<item> Installation-HOWTO
<item> SCSI-HOWTO
<item> NET-3-HOWTO (for section 4.3.3)
<item> ZIP-Drive (mini-HOWTO)
<item> ParPort kernel patch (gives access to pass-through printer port)
<htmlurl url="http://www.cyberelk.demon.co.uk/parport/" name="http://www.cyberelk.demon.co.uk/parport/">
</itemize>

<sect2>Acknowledgments/Contributors

<p>
Slackware 2.2 section courtesy of Michael Littlejohn <htmlurl url="mailto:mike@mesa7.mesa.colorado.edu" name="mike@mesa7.mesa.colorado.edu">

<p>
Debian 1.2 section courtesy of John D. Blair <htmlurl url="mailto:jdblair@uab.edu" name="jdblair@uab.edu">

<p>
LILO information and many other helpful insight courtesy of
Darcy Boese <htmlurl url="mailto:possum@niagara.com" name="possum@niagara.com">
and
Javier Rodriguez <htmlurl url="mailto:jrodrigu@nextgeninter.net.mx" name="jrodrigu@nextgeninter.net.mx">

<sect>Setting up the ZIP disk

<p>
(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:
<p>
<bf> ==> dmesg</bf>
<p>
You may have to pipe this to more as dmesg tends to be rather long.
Here's a snip from mine:
<tscreen><code>
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
</code></tscreen>

If you only see something like:
<tscreen><code>
   scsi : 0 hosts.
   scsi : detected total.
</code></tscreen>
then you have SCSI support but the ZIP wasn't found.

<sect1>Partitioning ZIP disk

<p>
To partition the ZIP disk, run fdisk:
<p>
<bf> ==> fdisk /dev/sda/</bf>
<p>
Here is a snap of the partition table I have setup:
<tscreen><code>
 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
</code></tscreen>
I decided to use a swap partition since I wanted to be able to use
this with any machine.

<sect1>Formatting and mounting the ZIP disk

<p>
After running fdisk, format the new partition:
<p>
<bf> ==> mke2fs -c /dev/sda1</bf>
<p>
Then, create the swap partition: (15360 blocks as taken from fdisk)
<p>
<bf> ==> mkswap -c /dev/sda2 15360</bf>
<p>
Last, you'll need to mount the ZIP disk:
<p>
<bf> ==> mount /dev/sda1 /iomega -t ext2</bf>

<sect1>Creating the boot disk

<p>
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.

<sect2>Configuring and making the kernel

<p>
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:
<p>
<it> SCSI support (CONFIG_SCSI) [Y/m/n/?] </it>
<p>
Plus, SCSI disk support:
<p>
<it> SCSI disk support (CONFIG_BLK_DEV_SD) [Y/m/n/?] </it>
<p>
And finally, under the SCSI low-level drivers, is the ppa support:
<p>
<it> IOMEGA Parallel Port ZIP drive SCSI support (CONFIG_SCSI_PPA) [Y/m/n/?] </it>
<p>
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:
<p>
<it> Parallel printer support (CONFIG_PRINTER) [N/y/m/?] </it>

<tscreen><code>
  NOTE: For more information concerning the ppa driver, please
        refer to the ZIP-Drive mini-HOWTO.
</code></tscreen>

Once the kernel is configured, make the kernel:
<p>
<bf> ==> make dep; make clean; make zImage </bf>
<p>
The new kernel should be found in arch/i386/boot/zImage.

<sect2>Getting the kernel to a floppy

<p>
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.

<sect3>LILO installation

<p>
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.

<sect4>Creating the ext2 filesystem

<p>
To create an ext2 filesystem on a floppy, just do the same command
for the ZIP disk:
<p>
<bf> ==> mke2fs -t /dev/fd0 </bf>

<sect4>Copying the essential files

<p>
Next, make sure there's a directory for a mount point, and mount the
floppy (I used /mnt/floppy):
<p>
<bf> ==> mount /dev/fd0 /mnt/floppy -t ext2 </bf>
<p>
is to boot properly, you'll need the same files that LILO uses on your
current Linux installation.

<tscreen><code>
    NOTE: The file locations here are from my machine
          and may not be the same for everyone.
</code></tscreen>

<bf> ==> cp /boot/boot.b /mnt/floppy </bf>
<p>
<bf> ==> cp /boot/map /mnt/floppy </bf>
<p>
<bf> ==> cp /usr/src/linux/arch/i386/boot/zImage /mnt/floppy/vmlinuzDESK </bf>
<p>

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:
<tscreen><code>
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
</code></tscreen>
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:
<p>
<bf> ==> lilo -C /mnt/floppy/lilo.conf</bf>
<p>
Once LILO has been installed on the floppy, skip the next two steps,
unless you enjoy doing this over again :)

<sect3>Kernel only installation

<p>
<tscreen><code>
   NOTE: This does not pertain for the LILO install.
</code></tscreen>

Copy the newly made kernel to a floppy disk:
<p>
<bf> ==> cp arch/i386/boot/zImage /dev/fd0</bf>
<p>
or
<p>
<bf> ==> cat arch/i386/boot/zImage > /dev/fd0</bf>
<p>
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 :)

<sect4>Setting the root and swap on the floppy

<p>
<tscreen><code>
   NOTE: This does not pertain for the LILO install.
</code></tscreen>

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

<sect>Red Hat 4.2 installation

<p>
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.

<sect1>Personal setup

<p>
For my installation, I have and used:

<itemize>
<item>Kernel 2.0.30
<item>Iomega ppa disk drive
<item>Red Hat 4.2
</itemize>

<sect1>Package installation

<p>
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.

<sect2>What packages to get

<p>
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:
<tscreen><verb>
  redhat/redhat-4.2/i386/RedHat/base/comps
</verb></tscreen>

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;
<tscreen><verb>
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)
</verb></tscreen>
<tscreen><code>

      (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)
</code></tscreen>
And with all the above installed, I still have 32MB left!

<sect3>Updates; errata

<p>
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:
<p>
<htmlurl url="http://www.redhat.com/support/docs/rhl/rh42-errata-general.html" name="http://www.redhat.com/support/docs/rhl/rh42-errata-general.html">

<p>
<tscreen><code>
   NOTE: Before you can update the packages, you'll have to
         run the ldconfig as described in section 3.3.1.1.
</code></tscreen>

<sect2>How to install packages with rpm; without glint

<p>
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:
<p>
<bf> ==> rpm --root /iomega -i --noscripts PACKAGE.i386.rpm</bf>
<p>
As I'm sure many will notice, you should get an error message like:
<tscreen><code>
  failed to open /iomega/var/lib/rpm/packages.rpm

  error: cannot open /iomega/var/lib/rpm/packages.rpm
</code></tscreen>
So, just create the var/lib/rpm directory :)
<p>
<bf> ==> mkdir /iomega/var; mkdir /iomega/var/lib; mkdir /iomega/var/lib/rpm</bf>

<sect2>Which came first, pamconfig or pam?

<p>
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.
<p>
<bf> ==> rpm --root /iomega -i --nodeps --noscripts pamconfig-0.51-2</bf>

<sect1>Problems after installation of packages

<p>
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.

<sect2>The case of the missing /etc/ld.so.cache and libc.so.5

<p>
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.

<sect3>/etc/ld.so.cache

<p>
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:
<p>
<bf> ==> chroot /iomega /sbin/ldconfig</bf>

Thanks to Javier Rodriguez for this solution.

<sect3>libc.so.5

<p>
To solve the missing lib case, you'll have to create a symlink which
would have been created by the installation scripts.
<p>
<bf> ==> cd /iomega/lib; ln -s libc.so.5.3.12 libc.so.5</bf>

Thanks to Darcy Boese for this solution.

<sect2>Setting root password

<p>
Just as ldconfig was ran in 4.3.1.1, you might as well change/create
a root password for this new system:
<p>
<bf> ==> chroot /iomega passwd root</bf>

<sect2>What the install program created

<p>
<tscreen><code>
       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.
</code></tscreen>

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:
<tscreen><verb>
      /etc/hosts
      /etc/HOSTNAME
      /etc/resolv.conf
      /etc/sysconfig/network
      /etc/sysconfig/network-scripts/ifcfg-eth0
      (or any other network device you may have.)
</verb></tscreen>

<sect2>Networking setup

<p>
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:
<it>dash-dot.wig.org</it> (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:
<tscreen><code>
  NETWORKING=yes
  HOSTNAME=dash-dot
  DOMAINNAME=wig.org
  GATEWAY=
  GATEWAYDEV=eth0
  NS1=192.168.10.7
</code></tscreen>
Next, bascially duplicate the same info here for /etc/HOSTNAME,
/etc/resolv.conf, and /etc/hosts:
<p>
<bf>/etc/HOSTNAME:</bf>
<p>
<tscreen><code>
dash-dot.wig.org
</code></tscreen>

<p>
<bf>/etc/resolv.conf:</bf>
<p>
<tscreen><code>
search wig.org
nameserver ns.wig.org
</code></tscreen>

<p>
<bf>/etc/hosts:</bf>
<p>
<tscreen><code>
127.0.0.1 localhost
192.168.10.99 dash-dot.wig.org dash-dot
192.168.10.7  ns.wig.org ns
</code></tscreen>
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:
<tscreen><code>
  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
</code></tscreen>
And last but not least, in order to get this going right now, while
in the /etc/sysconfig/network-scripts directory, just run:
<p>
<bf> ==> ./ifup ifcfg-eth0 boot</bf>
<p>
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.

<sect>Slackware 2.2 installation

<p>
<tscreen><code>
    NOTE: This portion has not been updated.
</code></tscreen>

<sect1>Requirements

<p>
<itemize>
<item> ZIP Disk and Drive (obviously)
<item> Kernel with ZIP support
<item> ZIP Howto (recommended)
<item> 1.44" HD formated floppy
<item> 1 to 2 hours of time
</itemize>

<sect1>Installation

<p>
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.

<sect1>What to install

<p>
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

<sect>Creating /etc/fstab

<p>
(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:
<tscreen><code>
  /dev/sda1      /         ext2        defaults   1   1
  /dev/sda2      none      swap        sw
  none           /proc     proc        defaults   1   1
</code></tscreen>
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)

<sect>Debian 1.2 Installation

<p>
<tscreen><code>
    NOTE: The author of this section sent this to me June, 11th 1997.
</code></tscreen>

<sect1>Requirements

<p>
<itemize>
<item> Ppa ZIP drive and disk.
<item> 2 blank 1.44 floppy disks
<item> A complete set of Debian install disks (review the Debian install
  docs if you don't remember how to make these)
<item> A couple hours of time
</itemize>

<sect1>Overview

<p>
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.

<sect1>Creating the modified Rescue disk

<p>
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.

<sect2>Use dd (or RAWRITE under DOS) to create a new Rescue disk.

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

<sect2>Build a new kernel with ZIP ppa support

<p>
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:
<p>
<bf> ==> make dep; make clean</bf>
<p>
<it><bf> ==> make bzImage</bf></it>
<p>
Build the modules with:
<p>
<bf> ==> make modules</bf>
<p>
You will install these later.

<tscreen><code>
          NOTE: Make sure that you are using 'make bzImage', and
                not 'make zImage'.
</code></tscreen>

<sect2>Mount the new Rescue disk.

<p>
<bf> ==> fdmount fd0</bf>
<p>
or
<p>
<bf> ==> mount /dev/fd0 /mnt</bf>
<p>
or
<p>
<bf> ==> whatever :)</bf>

<sect2>Copy the kernel image

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

<sect2>Editing the 'rdev.sh' script

<p>
Open the 'rdev.sh' script located on the Rescue floppy with your favorite
editor. Change the last line:
from--:
<tscreen><verb>
       'rdev /mnt/linux /dev/ram0'
</verb></tscreen>
to--:
<tscreen><verb>
       'rdev /mnt/linux /dev/sda1'
</verb></tscreen>

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.

<sect2>Run this modified 'rdev.sh' script.

<p>
<bf> ==> ./rdev.sh</bf>

<sect1>Install the base system on the ZIP drive.

<p>
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.

<sect1>Creating the boot disk

<p>
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.

<sect1>Reboot the system.

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

<sect1>Configure the base system and complete the install process.

<p>
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.
<tscreen><code>
        NOTE: You'll at least need to install 'make' to
              complete the next step.
</code></tscreen>

<sect1>Installing the modules you built in step 7.3.2.

<p>
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:
<p>
<bf> ==> mount /dev/hda2 /mnt </bf>
<p>
<bf> ==> cd /mnt/usr/src/linux </bf>
<p>
<bf> ==> make modules_install </bf>

<tscreen><code>
        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.
</code></tscreen>

<sect>Afterthoughts

<p>
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.

</article>
