I was first exposed to Linux mania in 2000 after downloading a floppy image of Debian 2.2 (Potato) over dial-up, which gave me my first noobie steps into the world of Linux and UNIX-likes in general. I was 15 at the time, I didn't have a clue what I was doing, but something clicked in me and I have been a Linux advocate ever since.
After rebuilding my earliest Pentium II PC last year, it has been on my radar to revisit Debian Potato, which was first installed on the original PII PC I had at the time, to reflect and re-experience what it was like 26 years ago (yikes!) and see how much things have moved on since.
Installation
Debian run an archive for their older releases, including installation images as well as the apt repo. I pulled down the ISO file and burnt it to one of my few remaining blank CD-Rs, which I would do anyway as a purist, but as this system does not support USB boot - I mean come-on, it doesn't even support USB keyboards in the BIOS - there was no other option.
The installer is familiar to anyone that has used Debian's text-mode installer in the years since. The basic layout is there but their process is very different. One notable feature was the step where you select your kernel modules to customise it to your system. I found a driver for my NIC but didn't even bother looking for my Sound Blaster Live! card.
The installer was clearly:
- made for users that have never touched a Linux system before, and
- designed by an Engineer.
Each page provides detailed instructions on what to do at each step, which is quaint. The security engineer in me had a good chuckle at the step which recommended the use of MD5 passwords for "better security" (notably not promising absolute security as a marketing manager might) and the ability to use a password longer than 8 characters, impressive stuff!
First boot
On the first boot I noticed kernel messages were minimal compared to what I see these days. Clearly fewer drivers are being loaded and each mostly just displaying the bare minimum as they do.
The CLI login prompt is the same as ever, dropping to a bash shell took a moment and I started to see what commands I had available. The usual free and top where there but interestingly ifconfig was not. I could ping things so it was clear networking was up but I'm unsure how I could view the current configuration.
This was long before modern apt but apt-get is already there and I faced my daemons as I entered dselect, a long-forgotten tool that sent many to dependency hell.
XFree86
Next up was a GUI, I never got this far before because downloading X packages over a slow modem connection back in 2000 wasn't going to happen, but I knew what I had to do from my later experiences using SUSE 5.2 Linux. XFree86 was the de-facto X server, and this needed a configuration. I tried running the configurator tool, but it failed and stated I needed to use the SVGA X server, this wasn't installed but I eventually located it as xserver-svga and once installed I got a GUI desktop. It was less trouble than I expected but it helped having my early experience using XFree86.
Although I thought I'd selected GNOME packages during installation I was greeted by an old friend, Window Maker. I checked the application menus and was surprised to find a wide range of tools already installed. Modern Debian is relatively spartan compared to some distributions, Potato however came with the kitchen sink! I had options for 3 different shells out of the box and wide array of applications from all different categories.
It had many games installed, all classic open-source titles, I loaded up Lincity, an Open-Source SimCity clone. Window Maker automatically changes focus as you hover over different windows and when I did so with Lincity it changes the colour palette creating strange graphical artefacts, I'm unclear why but I'm assuming it’s something to do with my limited graphics configuration.
At this point I opened a terminal and check the output of free -m and it reported used memory was under 45MB so plenty of headroom for applications on this system which has only 128MB RAM installed.
Next, I decided to see whether more packages where available online, so I modified the /etc/apt/apt.sources file to point to http://archive.debian.org instead and ran apt-get update and it found quite a few updates to install.
I also wanted to try accessing the computer over the network, I wasn't expecting SSH to be installed and it wasn't but netstat -l4n report something that hit me right in the feels, port 23 was open! Fellow long-time network admins like me will recognise this immediately as telnet - SSH but without encryption. It is extremely deprecated since years ago, so seeing it installed brought up complex feelings, it was a different time...
Summary and what next?
Back in 2000, I jumped in at the deep end with Linux without so much as a book to help me figure out what I was doing. It is surprising that I stuck with it but I suppose I enjoyed the adventure of the unfamiliar, so I kept at it.
After this experiment I installed Debian 4.0 Etch, which while being only 2 releases newer, was a lot closer to what Debian looks like today. The installer is a lot more polished and familiar. It was minimal, fast, had all the usual utilities in the base install. It was the first release with Xorg vs. XFree86 and that made life much easier. Installing XFCE 4.3 on it the system was shaping up as a very usable modern desktop.
The only problems were the outdated OpenSSL support, and the lack of memory would preclude any hope of getting a web browser up and running on it. Connecting over SSH requires awkward client options to enabled deprecated configuration.
While memory usage was higher, it was still comfortably within my 128MB limit at about 60MB to the desktop. I was expecting worse moving from kernel 2.2 to 2.6 but it was still very streamlined.
It's been an interesting trip down memory lane running Potato but Debian saw some major quality of life improvements over subsequent releases, and I'll stick with that for the time being. I may also try NetBSD on here so I can see how a modern OS can still run on such limited hardware.
For posterity, my dmesg:
Linux version 2.6.18-6-686 (Debian 2.6.18.dfsg.1-26etch2) (dannf@debian.org) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Fri Feb 19 23:40:03 UTC 2010
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000007ffd000 (usable)
BIOS-e820: 0000000007ffd000 - 0000000007fff000 (ACPI data)
BIOS-e820: 0000000007fff000 - 0000000008000000 (ACPI NVS)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
0MB HIGHMEM available.
127MB LOWMEM available.
On node 0 totalpages: 32765
DMA zone: 4096 pages, LIFO batch:0
Normal zone: 28669 pages, LIFO batch:7
DMI 2.0 present.
ACPI: RSDP (v000 ASUS ) @ 0x000f7f30
ACPI: RSDT (v001 ASUS P2B 0x58582e31 ASUS 0x31303030) @ 0x07ffd000
ACPI: FADT (v001 ASUS P2B 0x58582e31 ASUS 0x31303030) @ 0x07ffd080
ACPI: BOOT (v001 ASUS P2B 0x58582e31 ASUS 0x31303030) @ 0x07ffd040
ACPI: DSDT (v001 ASUS P2B 0x00001000 MSFT 0x01000001) @ 0x00000000
ACPI: PM-Timer IO Port: 0xe408
Allocating PCI resources starting at 10000000 (gap: 08000000:f7ff0000)
Detected 400.918 MHz processor.
Built 1 zonelists. Total pages: 32765
Kernel command line: root=/dev/hda2 ro
Local APIC disabled by BIOS -- you can enable it with "lapic"
mapped APIC to ffffd000 (01109000)
Enabling fast FPU save and restore... done.
Initializing CPU#0
PID hash table entries: 512 (order: 9, 2048 bytes)
Console: colour VGA+ 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 122348k/131060k available (1543k kernel code, 8184k reserved, 578k data, 196k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 802.69 BogoMIPS (lpj=1605399)
Security Framework v1.0.0 initialized
SELinux: Disabled at boot.
Capability LSM initialized
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 0183f9ff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: After vendor identify, caps: 0183f9ff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 512K
CPU: After all inits, caps: 0183f9ff 00000000 00000000 00000040 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
Compat vDSO mapped to ffffe000.
Checking 'hlt' instruction... OK.
SMP alternatives: switching to UP code
Freeing SMP alternatives: 12k freed
ACPI: Core revision 20060707
ACPI: setting ELCR to 0200 (from 0e20)
CPU0: Intel Pentium II (Deschutes) stepping 01
SMP motherboard not detected.
Local APIC not detected. Using dummy APIC emulation.
Brought up 1 CPUs
migration_cost=0
checking if image is initramfs... it is
Freeing initrd memory: 4377k freed
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xf0720, last bus=1
PCI: Using configuration type 1
Setting up standard PCI resources
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 *5 6 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 *9 10 11 12 14 15)
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
ACPI: Assume root bridge [\_SB_.PCI0] bus is 0
* Found PM-Timer Bug on the chipset. Due to workarounds for a bug,
* this clock source is slow. Consider trying other clock sources
PCI quirk: region e400-e43f claimed by PIIX4 ACPI
PCI quirk: region e800-e80f claimed by PIIX4 SMB
PIIX4 devres B PIO at 0290-0297
Boot video device is 0000:01:00.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: PnP ACPI: found 13 devices
PnPBIOS: Disabled by ACPI PNP
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
PCI: BIOS reporting unknown device 00:50
PCI: Device 0000:00:0a.1 not found by BIOS
pnp: 00:02: ioport range 0xe400-0xe43f could not be reserved
pnp: 00:02: ioport range 0xe800-0xe80f has been reserved
pnp: 00:02: ioport range 0x290-0x297 has been reserved
PCI: Bridge: 0000:00:01.0
IO window: disabled.
MEM window: e0000000-e1efffff
PREFETCH window: e1f00000-e3ffffff
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 2048 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 2048)
TCP reno registered
Simple Boot Flag at 0x46 set to 0x1
audit: initializing netlink socket (disabled)
audit(1771407695.600:1): initialized
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Initializing Cryptographic API
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
Limiting direct PCI/PCI transfers.
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:0a: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
mice: PS/2 mouse device common for all mice
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 8
NET: Registered protocol family 20
Using IPI No-Shortcut mode
Time: tsc clocksource has been installed.
ACPI: (supports S0 S1 S5)
Freeing unused kernel memory: 196k freed
input: AT Translated Set 2 keyboard as /class/input/input0
ACPI: CPU0 (power states: C1[C1] C2[C2])
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX4: IDE controller at PCI slot 0000:00:04.1
PIIX4: chipset revision 1
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:pio, hdd:pio
Probing IDE interface ide0...
usbcore: registered new driver usbfs
usbcore: registered new driver hub
USB Universal Host Controller Interface driver v3.0
ohci_hcd: 2005 April 22 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
8139cp: 10/100 PCI Ethernet driver v1.2 (Mar 22, 2004)
hda: HDS722516VLAT20, ATA DISK drive
Time: acpi_pm clocksource has been installed.
hdb: PLEXTOR CD-R PX-W2410A, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 9
PCI: setting IRQ 9 as level-triggered
ACPI: PCI Interrupt 0000:00:04.2[D] -> Link [LNKD] -> GSI 9 (level, low) -> IRQ 9
uhci_hcd 0000:00:04.2: UHCI Host Controller
uhci_hcd 0000:00:04.2: new USB bus registered, assigned bus number 1
uhci_hcd 0000:00:04.2: irq 9, io base 0x0000d400
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 5
PCI: setting IRQ 5 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 5 (level, low) -> IRQ 5
ohci_hcd 0000:00:0a.0: OHCI Host Controller
ohci_hcd 0000:00:0a.0: new USB bus registered, assigned bus number 2
ohci_hcd 0000:00:0a.0: irq 5, io mem 0xdf000000
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 3 ports detected
ACPI: PCI Interrupt 0000:00:0a.1[B] -> Link [LNKD] -> GSI 9 (level, low) -> IRQ 9
ohci_hcd 0000:00:0a.1: OHCI Host Controller
ohci_hcd 0000:00:0a.1: new USB bus registered, assigned bus number 3
ohci_hcd 0000:00:0a.1: irq 9, io mem 0xde800000
usb usb3: configuration #1 chosen from 1 choice
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 2 ports detected
8139cp 0000:00:09.0: This (id 10ec:8139 rev 10) is not an 8139C+ compatible chip
8139cp 0000:00:09.0: Try the "8139too" driver instead.
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.2[C] -> Link [LNKA] -> GSI 11 (level, low) -> IRQ 11
ehci_hcd 0000:00:0a.2: EHCI Host Controller
ehci_hcd 0000:00:0a.2: new USB bus registered, assigned bus number 4
8139too Fast Ethernet driver 0.9.27
ehci_hcd 0000:00:0a.2: irq 11, io mem 0xde000000
ehci_hcd 0000:00:0a.2: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb4: configuration #1 chosen from 1 choice
hub 4-0:1.0: USB hub found
hub 4-0:1.0: 5 ports detected
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKD] -> GSI 9 (level, low) -> IRQ 9
eth0: RealTek RTL8139 at 0xd000, 00:40:f4:cc:9b:7b, IRQ 9
eth0: Identified 8139 chip type 'RTL-8100B/8139D'
hda: max request size: 512KiB
hda: 321672960 sectors (164696 MB) w/1794KiB Cache, CHS=20023/255/63, UDMA(33)
hda: cache flushes supported
hda: hda1 hda2 hda3
hdb: ATAPI 40X CD-ROM CD-R/RW drive, 4096kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.20
Attempting manual resume
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
Linux agpgart interface v0.101 (c) Dave Jones
agpgart: Detected an Intel 440BX Chipset.
agpgart: AGP aperture is 64M @ 0xe4000000
gameport: EMU10K1 is pci0000:00:0b.1/gameport0, io 0xb400, speed 1193kHz
piix4_smbus 0000:00:04.3: Found 0000:00:04.3 device
input: PC Speaker as /class/input/input1
Floppy drive(s): fd0 is 1.44M
Real Time Clock Driver v1.12ac
FDC 0 is a post-1991 82077
parport: PnPBIOS parport detected.
parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,EPP,ECP,DMA]
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:00:0b.0[A] -> Link [LNKB] -> GSI 10 (level, low) -> IRQ 10
input: ImPS/2 Generic Wheel Mouse as /class/input/input2
ts: Compaq touchscreen protocol output
Adding 248996k swap on /dev/hda3. Priority:-1 extents:1 across:248996k
EXT3 FS on hda2, internal journal
loop: loaded (max 8 devices)
device-mapper: ioctl: 4.7.0-ioctl (2006-06-24) initialised: dm-devel@redhat.com
kjournald starting. Commit interval 5 seconds
EXT3 FS on hda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
eth0: link up, 100Mbps, full-duplex, lpa 0xC1E1
ACPI: Power Button (FF) [PWRF]
ACPI: Power Button (CM) [PWRB]
NET: Registered protocol family 10
lo: Disabled Privacy Extensions
IPv6 over IPv4 tunneling driver