Three years ago in this thread you mentioned trying to get linux on a p90 laptop-- I have a solution for getting Slackware 10.2 on a slower 486 laptop:
The idea of documenting this came about due to the lack of documentation for installing linux on small machines in general. While Slackware does have the 'zipslack' method - and I do have an older parallel port IOMEGA zip drive - this depends upon using a DOS partition, and some work-arounds for bootup that I was not happy with. I wanted a pure EFS2 filesystem that would boot straight into linux using LILO.
My choice for the OS was Slackware for several reasons. For one thing it uses tar as the basis for its packaging system - a tool that is readily available right out of the box - and the distro includes tools for creating packages in this format. Secondly, I have quite a bit of experience using Slackware over the years (it was my first distro). Finally, the standard Slackware distribution is an eminently modifiable installation - making it a perfect choice for distro hacking (as we shall see).
I got a Cyrix (Intel clone) 486 dx/66mhz processor based laptop for $45 at the local Goodwill computer store as my first subject. It is an AST Ascentia 810N - with 20 mbytes RAM, a 500 mbyte IDE harddrive, 3 1/4" floppy drive, parallel and serial ports, and two pcmcia ports (as well as a keyboard and VGA out ports). This machine was build in 1994 timeframe. It was running DOS 4.1 when I got it - what a waste of good hardware...
January 23, 2006 - Since we don't have a CDROM (generally speaking) on machines in this class (early 1990s i486 laptops) - You will need to build a set of boot and root (setup) floppy disks - that you will use to initially boot the system up.
Initially I thought the boot image should be the pport image - which I thought would support the parallel port zip drive. This was incorrect
- the pport boot image did not have any support for the IOMEGA parallel port zip drive! Instead, I grabbed the bootdisk.img file from http://lmlinux.com/distros/slackware...10.2/zipslack/
- which was sure to provide the correct drivers (since it was designed to work with the ZIP drive). Using this image will prove interesting, because it assumes you want to use the ZIP drive as your boot disk...not so, as we shall see. Once the file was on my workstation (a linux box) I executed the following steps:
- insert 1.44M DS-DD floppy disk in drive /dev/fd0 (drive a: on windoze boxen)
- cd (to the directory where the bootdisk.img file is, if you are not there already)
- dd if=bootdisk.img of=/dev/fd0 (on windoze boxen, instead execute: RAWRITE bootdisk.img a: - you can download the RAWRITE.EXE app from the same link above)
After awhile you will see that the disk has been completed (unless you get some error message).
Similarly I must download and install ''root disk'' images (contains the basic filesystem and setup utilities needed to do the install) - so I grabbed install.1 and install.2 root images from http://lmlinux.com/distros/slackware...0.2/rootdisks/
. The instructions are basically the same for creating these floppy disks:
- insert 1.44M DS-DD floppy disk in drive /dev/fd0 (drive a: on windoze boxen)
- cd (to the directory where the install.1 and install.2 image files are located, if you are not there already)
- dd if=install.1 of=/dev/fd0 (on windoze boxen, instead execute: RAWRITE install.1 a:)
- remove floppy disk from drive /dev/fd0 (a:) after the command finishes.
- insert another 1.44M DS-DD floppy disk in drive /dev/fd0 (drive a: on windoze boxen)
- dd if=install.2 of=/dev/fd0 (on windoze boxen, instead execute: RAWRITE install.2 a:)
So now we have our boot and root disks - ready to go. Now it is time to cull the standard Slackware distro to make it truely a 'microslack' that will run on such a small machine (packages for 10.2 can be found here: http://slackware.it/en/pb/browse.php?q=10.2/slackware
). I first created a working directory: /home/dev/slackware. In that directory I created the directory names corresponding to the slackware package directories (a, ap, and so on), and then downloaded the packages from the website into them.
(a) I took the bulk of the base a packages - with the exception of: cups-1.1.23-i486-1 (I will not be serving or using printers from the laptop), genpower-1.0.3-i486-1 (I am not using UPS power monitoring software on this machine), gettext-0.14.3-i486-1 (no need to internationalize my shell script error messages), isapnptools-1.26-i386-1 (the laptop does not use ISA bus), jfsutils-1.1.8-i486-1 (not using IBM's JFS), loadlin-1.6c-i386-1 (not loading kernel from DOS partition), minicom-2.1-i486-2 (do not anticipate using serial connection for communication), reiserfsprogs-3.6.19-i486-1 (not using reiserfs on this laptop), tcsh-6.14.00-i486-1 (csh considered harmful - and BASH already has most of the features I would miss from csh), xfsprogs-2.6.13-i486-1 (not using SGI's XFS high performance file system). The particulars of these choices are up to your discretion; remember you can always load a package after you get the system up and connected to your network. If I was in doubt about whether I would need a package to run the basic system - I left it in.
(ap) I grabbed the following ap packages: at-3.1.8-i486-2 (must have at-job capability), diffutils-2.8.1-i386-1 (diff is key tool), groff-1.19.1-i486-3 (for manpages), jed-0.99_16-i486-1 (editor I wanted to use instead of EMACS - which is too big to load on this system), lsof-4.72-i486-1 (lists open files), man-1.5p-i486-1 and man-pages-1.64-noarch-1 (can't live without my man pages), mc-4.6.1-i486-1 (midnight commander - Norton Commander clone), rpm-4.2.1-i486-3 (allows me to manage rpms as needed), sc-7.16-i386-1 (text-based spreadsheet calculator), screen-4.0.2-i486-1 (allows multiple virtual consoles), sgml-tools-1.0.9-i486-12 (extensive selection of tools for manipulation of sgml and xml -- may be dropped if you are low on space), sudo-1.6.8p9-i486-1 (gives user limited root privileges), texinfo-4.8-i486-1 (to read /usr/info pages), and vim-6.3.086-i486-1 (improved vi).
(d) I snarfed the d packages: binutils-126.96.36.199.2-i486-3, gcc-3.3.6-i486-1 and gcc-g++-3.3.6-i486-1 (c and c++ compiler and linker), kernel-headers-2.4.31-i386-1 (needed for compiler), make-3.80-i386-1 (make - used by most complex builds), python-2.4.1-i486-1 and python-tools-2.4.1-noarch-1 (python programming language)
With all of the files indicated as loaded, the collection was in the neighborhood of 85 megabytes - compressed. I then created a tar archive of the files:
1. cd /home/dev
2. tar -cvf slackware.tar *
Again, the selection of packages is a personal issue - since you may have other uses for your machine than I have for mine (for example, you might be a perl developer, in which case you will want to replace the python packages with the perl packages). At any rate, as a minimum you will need the base 'a' packages listed here to boot the machine - which is the key to bootstrapping linux on the system.
Once I got the Zip drive to work on my workstation (added the line: '/sbin/modprobe imm' to /etc/rc.d/rc.modules file - then ran the same command on the CLI) I mounted the zip drive (mount -t vfat /dev/sda4 /mnt/zipdrive )and copied the slackware.tar to zip drive (cp /home/dev/slackware.tar /mnt/zipdrive).
At this point I unmounted the zipdrive (umount /dev/sda4), removed it from the workstation, and plugged it into the laptop's parallel port, and gathered my boot and root floppy disks together for the installation.
- insert boot floppy in the laptop's drive
- power up the laptop
- at the boot prompt (boot:) enter: 'mount root=/dev/fd0'
At this point the system will say that it is loading vmlinuz kernel. After it completes loading and uncompressing the base kernel, it will prompt you to insert the root floppy disk.
- insert root floppy 'install.1' disk
- press 'enter' key
The system will tell you it found the RAMDISK image at block 0, and will begin loading busybox (shell tools work-a-like) etc... -- then prompt you for the install.2 floppy:
- remove 'install.1' disk
- insert root floppy 'install.2' disk
- press 'enter' key
The system will continue the boot process, installing the remaining items needed by the installation utility. After that is done, it will prompt you for non-US keyboard support - if you need this, follow the instructions for loading the keyboard map, otherwise press the 'enter' key.
At this point you should be at a slackware login prompt. Type 'root' and press 'enter' key. You will be at a command line logged in as root.
My initial idea was to mount the Iomega zipdrive, then use that as the source for the installation packages. This idea did not work because the root disks 'setup' program does not recognize the parallel port zipdrive as a valid source. So I ended up creating 3 partitions:
100 mb 'source' partition - EFS2
350 mb 'target' partition - EFS2
50 mb swap parition - SWAP
I won't go into how to use fdisk or cfdisk - suffice to say it works just as it would for a normal installation.
After I created my partitions, I formatted the 100 mb source partition (I was lazy and used the 'setup' program to do this --- which required rebooting afterwards because setup keeps track of where its target drives are located etc...); you could also use the commandline utility to format the drive: mkfs.ext2 I think (I didn't have much experience using this utility - so I opted to reboot instead - ymmv). After formatting the drive I mounted it: mount /dev/hda1 /home/dev (I created the /home/dev directory before mounting it, of course).
I created a /zipdrive directory - for mounting the iomega drive. I then ran /sbin/modprobe imm - to activate zipdrive support. After that I mounted the zipdrive as before: mount -t vfat /dev/sda4/ /zipdrive
With both the zipdrive and the new 'source' (/home/dev) directories mounted - it was just a simple matter of copying the slackware.tar file across to the /home/dev directory.
With the slackware.tar file in place, I extracted the files:
- cd /home/dev
- tar -xvf slackware.tar
After that I rebooted the system - to clear out any improper setup data. If you didn't use setup for anything at this point, you can probably skip rebooting.
Now run 'setup'. Choose the /home/dev mount point as source for setup; continue setup normally.
if setup messes up package installation - don't worry, as long as you have the key (a) packages loaded you are okay. (bug in setup script?)
Complete install as normal, and reboot to linux from the hard drive. (I won't go into details of the installation - I assume you have done a slackware install before --- you just won't have as many packages to choose from - but everything else should be the same. I had the system use the same kernel that was already running -- you could, of course, load another prepared kernel as you desire).
Use pkgtool to intall remainder of packages that were skipped after you reboot the system the first time. You will, of course need to manually setup your /home/dev mount point to automatically mount at boot time via your /etc/fstab file (I won't go into how to do that either -- you should know how to do that).
Loaded additional packages with pkgtool (I didn't add lynx to the original file list I need it to view http... etc)
I also loaded twin -- a text mode windowing system that is compatible with X. Not a slackware package (I had to build it from sources on my workstation, then move it across via the iomega zipdrive).
I bent the Slackware distro process to my needs; I can't think of another distro where this would be as easy to do. This process got the job done with minimal need to create or deploy custom apps - although, if someone were dedicated enough to do so, could produce a 'microslack' installation process that would obviate the need to load zipslack - except for supersmall memory machines (4mb). This also proves that the latest Slackware distro and Linux kernel can run on minimal systems with minimal tweaking (mostly just limited the package options).
(Additionally, I haven't had luck getting a 3COM ethernet pcmcia card working (haven't had luck with 3Com NICs in forever on any machine) -- but the system does recognize the pcmcia interface itself - I'll probably go to another card...this is a work in progress...)
Good luck with those old machines!