Debian on ancient hardware

Posted by on August 26, 2002

26th August 2002

So, I’ve got my hands on a Toshiba T1910CS

The specs when I got it were along these lines:
33MHz 486
12MB RAM (4MB onboard, 8MB on an expansion card stolen from a fax machine)
200MB Hard Drive
1.4MB Floppy Drive
3Com EtherLink III 3C589D-TP PCMCIA Card for 10Base-T

Windows 95b, taking up whole drive.

(NB: at this point I had Windows drivers for the pcmcia network card, but as the install process requests lots of Files off a Win95 CD, which I don’t have and if I did, transferring the files by floppy would be ridiculously time consuming…)

And I’m going to install Linux on it. More specifically, Debian Woody (which recently became the Stable release).

I know your thinking “Are you mad???” and your not the first person to think that! But I’m very determined, and I have Google and my other Debian Box (rogue) on my side!

I’ve also downloaded the ISO images of the Woody CD distribution, which means for the most part I don’t need to go hunting on my favourite mirror ( for your reference 😉 )

For the purposes of this, I’m using the idepci flavour of the install, which has fewer drivers (no SCSI amongst other things)

DAY 1 (24/08/2002)


Rang bell – cat said no thanks he’d had eaten earlier.

OK, so standard method of installing Debian is boot the machine with the Rescue Floppy.

I created the boot floppy using dd on rogue, but tools exist in the dostools directory of the Debian distribution (and most Linux distros) that allow you to write disk images to floppy disks.

# dd if=rescue.bin of=/dev/fd0

So… booting the laptop…

“Boot Failed”

Hmm. Something wrong with the floppy? I tried writing a few more rescue floppies, but all had the same results 🙁

Using the hackers favourite friend (Google) I discovered that there was probably nothing wrong with the floppies (YAY! I’ve always had trouble using dd to floppies in the past and therefor initially assumed I was doig something wrong).

The problem is that Debian (and most Linux distros) use syslinux as the bootloader on their bootable floppy disks, and syslinux doesn’t work on older hardware, at least on the laptop which is pretty old.

Ok, what to do next? Well, in the dostools directory is a program called fips which allows for resizing the partitions of a hard disk.
So, booting the laptop into Windows (*shudder*) I uninstall (read delete) a bunch of stuff from the harddisk to free us some space. Then I run scandisk, then defrag the hard disk to move all the used space to the beginning of the disk, then scandisk again. Given the spec of the laptop, this process takes a remarkably short time, and I’m left with approx 100MB of free space.

Reboot into DOS mode (fips shouldn’t be run from a multithreaded OS, eg Windows!)

Run fips. hmm.. ok… so its going to let me shrink the partition by er… 4MB!!!

Thinking back, I remember something about reducing the size of a partition below a certain size which would inherantly imply reformatting the partition as FAT12 instead of FAT16. Bah.

OK, where to now?

Well, you can actually start the Linux install process from within Windows! (madness I hear you say, and I’d tend to agree with you!)

Another program sitting in the dostools directory is LoadLin which boots a linux kernel from DOS/Windows, and in each “flavour” (the flavours are the main one, idepci, compact and bf2.4) is an install.bat for the idepci flavour this contains the line:

..\dosutils\loadlin linux.bin root=/dev/ram initrd=../images-1.44/idepci/root.bin disksize=1.44 flavor=idepci

Ok, so I just need to get those files to the laptop. note that linux.bin is the kernal, and the root.bin file is actually a gzip’d filesystem which during a normal install is written to a floppy on its own using dd (as above but if=root.bin) and this floppy is not intended to be read as a normal floppy!

Anyway, back on track: I need the following files transferred to the laptop:
loadlin.exe linux.bin root.bin install.bat

(I’m lazy and decided editing install.bat was easier that tweaking the command line if it failed)

ok, loadlin.exe and linux.bin both fit on the same floppy, so they’re copied across easily.

rogue:/var/install/dists/woody/main/disks-i386/current/images-1.44/idepci# ls -lh
total 4.3M
-r--r--r--    1 root     root         1.0k Aug 24 15:14 README.txt
-r--r--r--    1 root     root          263 Aug 24 15:14 TRANS.TBL
-r--r--r--    1 root     root         1.4M Aug 24 15:14 driver-1.bin
-r--r--r--    1 root     root         3.8k Aug 24 15:14 kernel-config
-r--r--r--    1 root     root         1.4M Aug 24 15:14 rescue.bin
-r--r--r--    1 root     root         1.4M Aug 24 15:14 root.bin

hmm.. root.bin doesn’t fit on a floppy.

How to transfer this file across?

I used dd to split the file into two files:

dd if=root.bin of=root1.bin count=2000
dd if=root.bin of=root2.bin skip=2000

then copied the files across to the laptop on floppy.

Recombining the files under dos uses the copy command as follows:

copy /B root1.bin /B +root2.bin /b root.bin

the /B specifies binary files.

ok, everything in place

edit install.bat to:

loadlin linux.bin root=/dev/ram initrd=root.bin disksize=1.44 flavor=idepci

run install.bat and…. PENGUIN!!!

Everything running ok so far!

I proceed through the install process answering the questions as standard until I come to the question I’d been dreading… partitioning the disk. The observant among you will have noticed/remembered that there is no free space on the hard disk…

At this point, the root filesystem is actually running in memory, the install process isn’t actually using any part of the harddisk. So, throwing caution to the wind (and not for the first time) I delete the windows partition and create a 160MB linux partition and a 40MB swap partition (partition type 83), write the partition table to disk and continue.

The installer warns about rebooting to ensure the partition table is read correctly, but as you’ll also remember, there is no way for me to boot the machine into the install… so having already thrown caution to the wind, I now laugh in the face of danger and ignore it.

Everything setup ok, I configured the pcmcia drivers using the intel driver out of the two suggested, and from the third virtual terminal (Alt+F3) where you have access to a log and the second virtual terminal (Alt+F2) where you have a limited console, I could see that it had loaded the pcmcia module and the appropriate module for my card! Joy!

Configuring networking was a problem. I set about manual config as all my machines have static addresses on my internal network.

For some reason this didn’t work. I went through the process again and picked the DHCP option. I didn’t have a DHCP server running, but was amazed when I saw a light appear on my switch as it hadn’t come on during the manual config.

Switching to the console I issued the command “ifconfig” to see that configuration of my network connections. The device showed itself waiting for an address. So, still using ifconfig I did the following:

# ifconfig eth0

This automatically worked out the subnet mask of

I also at this point set the default route:

# route add default gw eth0

The installer had already setup which dns server to access as part of the manual config process. I’ve no idea why the rest didn’t work 🙁

As part of the network config, I decided to name the machine to keep consistent with the rest of my network (forge, cable, rogue, wolverine, nightcrawler… get the picture?)

Given that I’ve got a complete distribution of Woody already on my local network, I decided to install the rest of the system using nfs (I quickly installed the nfs-server package on rogue using “apt-get install nfs-server” and set it up to export /var/install to the local network read only)

The installer popped up a message saying it was looking for files named ‘dists/woody/main/binary-i386/Release’ or ‘basedebs.tar’ under that directory.
As it was taking its time, I switched to the console (Alt+F2) to make sure it was doing stuff. I did this by checking that the used disk space was changing (“df -h”) and the memory used was changin (“free”).

Suddenly, the installer window appears and asks me to pick a language – assuming it was in some sort of second stage install I went to pick english. BUT!!! the arrow keys wouldn’t work! After some playing about trying to do things, I determined that the install window had appeared in terminal 2, but was supposed to be in terminal 1! There was nothing I could do 🙁

So, I’m stuck. I can’t restart the install as the disk has been repartitioned and I can’t choose an option on the menu. Bed calls as its now about 2am.

End of Day 1.

DAY2 (25/08/2002)


Rang bell but cat had stolen battery!

Having been woken up by the phone ringin I find myself on the sofa having crashed out watching the Matrix on DVD for inspiration.

So I can’t install from the rescue floppy, and I can’t boot the machine into windows anymore. If only I had a Windows/DOS boot disk! If only I ran windows I could create one!

All is not lost however as after a few quick Googles, I find an online source for boot disk images. (

I downloaded the boot95b.exe file and tried to run it under wine ( which I already had installed on rogue. No Joy ™.

Hedging my bets that it was a self extracting zipped exe file I ran “unzip boot95b.exe”

rogue:/tmp# unzip boot95b.exe
Archive:  boot95b.exe
warning [boot95b.exe]:  105508 extra bytes at beginning or within zipfile
  (attempting to process anyway)
file #1:  bad zipfile offset (local header sig):  211016
  (attempting to re-compensate)
  inflating: winb95b.IMA
rogue:/tmp# ls -lh winb95b.IMA
-rw-r--r--    1 root     root         1.4M Nov 18  1999 winb95b.IMA

Now, that file looks about the right size…
# dd if=winb95b.IMA of=/dev/fd0

I successfully booted storm with the floppy which complained about no FAT partition on the hard disk, but otherwise worked. Next thing to do was run fdisk, which royally complained about the hard disk.

I tried again with a Windows 98 boot floppy. This version of fdisk was obviously more up to date and I deleted both non-dos partitions and created a 10MB partition at the start of the drive. Reboot, “format /S C:” copy linux.bin, loadlin, root.bin and install.bat to that partition. Still with me? Good.

edit install.bat, run it, go through the install process as before with the only differences I leave the 10MB partition at the start of the drive, create a 40MB linux swap at the end of the diskspace and use the rest of the space for one big Linux partition.

Then I reboot. Its at this point I discover that the v. basic system on C: won’t run under toshiba! ok, boot with my Win98 floppy and run install.bat again. go through all the install questions, perform the jiggery pokery with the network and am at the where do I want to get the rest of the install files from? http/ftp/nfs or a few other options.

I try the nfs route again.

After it scans for that file, I leave it on that console and don’t flip to any of the other.

As expected, a short while later, I’m presented with a menu asking me to pick a language. This time I can!

Ok, so its actually back at the start of the install questionaire 🙁

I run through all these questions, and try installing the base system from a few different sources.

Eventually, I go looking through my install set at the Release file (see above) but I wouldn’t know whats wrong with it if there was anything! However, I discover that there is a conspicuous absence of a basedebs.tar file… But, of course, this is a CD distribution, for installing from CD, so it probably wouldn’t be included… I find a link to a basedebs.tar file on the Debian website which I download, throw at /var/install/basedebs.tar on rogue and told storm to use nfs again.

Yay! It found the basedebs.tar file and started extracing and installing from it!

While it was chugging away, one of my friends came round, we sat about yapping and drinking tea for a few hours, went to the video shop, got out Men In Black, watched Men In Black with two breaks to make popcorn, disassembled my bed and reassembled it facing across my bedroom to give me more space) then sat about chatting some more. And went looking at online goth clothing shops. It was about here that the extract finished. Then it booted the system and went through the initial config of the base packages

Did I want to run tasksel to pick some bundles of software? Yes. But I didn’t pick anything as the bundles all seemed a bit big…

Did I want to run dselect? Yes.

It then spent a long time bringing this up. My friend had gone home and I was considering moving to my (newly repositioned) bed to finish the config and watch TV as it was about 10:30pm.

It was at this point I discovered that the battery life on storm (for a full charge) is approx 5 seconds.

Oh well. Set it up on my bed. Booted. tasksel? No. dselect? No.

It then gave a list of over 70 packages which were going to be installed, did I want to continue? As most of the packages appeared erroneous for my purposes I said NO! Once that was over, and I had a login prompt, the first thing I did was

# apt-get install ssh

This installed an configured ssh (after approx 1ns of thought I decided not to run the ssh server!) and took approx 40minutes to extract and install the files once it had downloaded them.

ssh is the main reason I wanted to get the laptop running as it will enable me to use my significantly more powerful machines in my data center (read: dining room) as I don’t allow unsecure telnet connections to them.

After sitting chatting from bed for a while, I decided to install gpm (apt-get install gpm) which took approx. 10 minutes. I configured it setting the type exps2 with no repeater.

End of Day2 .

Day 3 (26/08/2002)


Cat rang bell, I ate food.

Well, I’ve been typing this up most of the morning while its still reasonably fresh in my head.

Where do I go from here with storm?

Well, having been inspired by the picture at

I’ll be having a bash at installing X on it.

I’m also going to compile a custom kernal for the machine to reduce on some memory overhead that probably exists so trying to get it running as trim as possible.

To speed up installing packages, I’m considering taking a tar of the whole system, transferring it to rogue and running it in a chroot’d jail using user mode linux, then just copying diff’d files back across to storm. But thats for another day.

Its lunchtime 🙂



The Woody CD images were downloaded from and the contents copied to my /var/install directory on rogue:

mkdir foo
mount -o loop debian-30r0-i386-binary-1.iso foo
cp -R foo/* /var/install
umount foo
mount the next ISO...

rogue:/var/install/dists/woody/main/disks-i386/current/idepci# ls
README.txt  drivers.tgz  kernel-config  tftpboot.img
TRANS.TBL   install.bat  linux.bin

rogue:/var/install/dists/woody/main/disks-i386/current/images-1.44/idepci# ls
README.txt  TRANS.TBL  driver-1.bin  kernel-config  rescue.bin  root.bin

rogue:/var/install/dists/woody/main/disks-i386/current/dosutils# ls
TRANS.TBL  loadlin.exe  rawrite2.exe  rawrite2.txt  setlang.bat

Tags: , ,

Do you have anything to say?

Powered by Wordpress and Stripes Theme Entries (RSS) | Comments (RSS)