Markus Wernig

UNIX/Network Security Engineer
CCSA, CCSE
CISSP


PGP key transition note
GPG Key
 (in use after Aug. 9 2013)

old GPG Key
 (in use up to Aug. 9 2013)

Personal | Professional | IT related | Writings de

Linux on a Palmax PD1100 Penbook

Warning! This document is about installing Linux (Gentoo) on my oldest, weakest and most awkward machine, a Palmax PD1100 Penbook. This is a computer that runs on a Cyrix MediaGX(tm) main processor, that at the same time acts as sound and video processor (hence the word "Media" in the name). It sports an amazing 266 MHz frequency (509.95 bogomips), 16 KB cache size, and 64(!) MB of RAM plus a 6 GB harddisk - more than you need for a decent Linux installation!
As anyone familiar with the Gentoo approach of compiling everything on the target machine will confirm: This is not for the timid. And not for the impatient. Be prepared to measure setup time in weeks, simple command execution times in seconds (minutes, when busy).

The main reason this baby is still being kindled (besides its amazingly small dimensions) is this: it has got a touchscreen, and it's supported under Linux! It seems that at one point in history Alan Cox had one of those and being the man he is, he wrote up the touch screen support. It was first released as a separate kernel patch, then somehow made it into the main kernel tree. Then he added drivers for XFree86, of which I hoped, they were implemented in X.org, which I use under Gentoo. See this site for a collection of his drivers for the Palmax.

This is what it looks like:

palmax

Yes, it's about half the width of a regular keyboard, and even less in depth when measured without the underlying docking station. We used it as an FTP server during one of our install parties. (The blue screen obviously is the BSOD screensaver;-)

The Palmax came with a preinstalled Windows 98, which didn't last through the first day of posession, though. The box saw its first Linux installation (SuSE 6.something) the same day, and with the above patches all features (pen as button, lid buttons) worked. Things became less reliable, but still worked through a series of updates up to SuSE 8.2. Then along came Novell, and I decided it's time to change aspects. That's why I took to install Gentoo on all my machines, the Palmax being the least used and therefore last one.

This site documents the steps, findings and failures on that journey.

1. Basic Installation

The Gentoo installation CD booted, but the framebuffer settings in that boot kernel do not expect a resolution of 640x480, or what the Cyrix graphics system made of it, which seemed more like 320x240 (actually, only a quarter of the bootsplash screen was visible). So the kernel needs to be told not to use the Framebuffer (and some other features, which I found out try after try). The boot line that finally got me to the installation prompt was:

	nofb noapic noacpi noapm dopcmcia

After that, the installation (copying over the core files) went as usual (very diligently described in the Gentoo Installation Handbook. Up to the point where you need an internet connection for downloading portage. The pcmcia subsystem had initialized (telling from the two beeps at startup), but the system just refused to send DHCP requests over the network card, an ancient 3COM 589 chipset. I had to manually modprobe yenta_socket and modprobe 3c589_cs first.

I then set my local GENTOO_MIRRORS and the following compiler directives in /etc/make.conf:

	CFLAGS="-O2 -mcpu=i586 -march=i586 -fomit-frame-pointer -pipe"
	CHOST="i386-pc-linux-gnu"

The Cyrix is a i586 compatible, but the Gentoo Handbook warns against changing CHOST unless using stage 1 builds. I had used stage 3, just copying and untarring the files.

The emerge --sync that is recommended during installation failed with spurious timeout errors which I postponed. I emerged development-sources, since I wanted kernel 2.6. I got kernel-2.6.10-r1. This then compiled fine (~5 hours). Use i586 (CONFIG_M586=y) as the processor type, not the Cyrix3 definition (CONFIG_MCYRIXIII).

After some fiddling (no framebuffer!) this brought me to the login prompt. Final configuration was performed according to the Gentoo Handbook. This was about 2 days after I had started.

2. Installing X and KDE

Then it was time to decide on the graphic user interface. X.org was given (good night, XFree86, it was good while it lasted ...), and being somewhat spoiled by eye-candy, I went for KDE as a window/display manager. I knew this was going to take some time - even my 2.2GHz "real" workstation chews up half a day on compiling all the necessary components. So, calculating the PD1100's computing power to be about ene tenth of that, I expected the initial compile (X.org, KDE and all required libs and stuff) to be around 5 (five) days.

As usual, I started out with emerge --sync, but that, again, failed with timeouts. The most prominent error message was:

	io timeout after 180 seconds - exiting
	rsync error: timeout in data send/receive (code 30) at io.c(109) 
	[...]
	rsync: connection unexpectedly closed (2587288 bytes read so far)
	rsync error: error in rsync protocol data stream (code 12) at io.c(189)

See Gentoo forums for details. In short, I had to raise RSYNC_TIMEOUT to 500 in /etc/make.conf. After that, emerge --sync finally pulled all portage updates (~3 hours), and I was all set to start the party:
Before starting

	emerge --Duv kde

I added some more swap space.

	dd if=/dev/zero of=/var/moreswap.file bs=1024k count=256
	mkswap /var/moreswap.file
	swapon /var/moreswap.file

Then emerge set about to download and compile some 60+ ebuilds (packages) on March 8, 2005, at 23:26. (As I'm writing this on March 14, 21:30, 30 packages remain to be installed ;-) vmstat has been reporting 0 % idle for days now.)

mini src # date
Mon Mar 14 21:38:19 CET 2005
mini src # ps auxfw
[...]
root     12309  0.2  0.0 17584   24 ?        S    Mar08  23:26 /usr/bin/python -O /usr/bin/emerge -Duv kde
root      4334  0.0  0.0  1444   32 ?        S    14:30   0:00  \_ [kdewebdev-3.3.2] sandbox /usr/lib/portage/bin/ebuild.sh compile
root      4335  0.0  0.0  3084   36 ?        S    14:30   0:05      \_ /bin/bash /usr/lib/portage/bin/ebuild.sh compile
root     11346  0.0  0.0  1828   36 ?        S    14:42   0:00          \_ /bin/bash /usr/lib/portage/bin/emake
root     11347  0.0  0.0  1908   44 ?        S    14:42   0:00              \_ make -j2
root     11349  0.0  0.0  1908   44 ?        S    14:42   0:00                  \_ make all-recursive
root     11350  0.0  0.0  1804   36 ?        S    14:42   0:00                      \_ /bin/sh -c set fnord $MAKEFLAGS; amf=$2;  dot_seen=no;  target=`echo all-recursive
root     28619  0.0  0.0  1804   36 ?        S    17:04   0:00                          \_ /bin/sh -c set fnord $MAKEFLAGS; amf=$2;  dot_seen=no;  target=`echo all-recur
root     28620  0.0  0.0  1888   44 ?        S    17:04   0:00                              \_ make all
root     28621  0.0  0.0  1804   36 ?        S    17:04   0:00                                  \_ /bin/sh -c set fnord $MAKEFLAGS; amf=$2;  dot_seen=no;  target=`echo a
root      4426  0.0  0.0  1804   36 ?        S    18:08   0:00                                      \_ /bin/sh -c set fnord $MAKEFLAGS; amf=$2;  dot_seen=no;  target=`ec
root      4427  0.0  0.0  2072   44 ?        S    18:08   0:00                                          \_ make all
root      4428  0.0  0.0  1804   36 ?        S    18:08   0:00                                              \_ /bin/sh -c set fnord $MAKEFLAGS; amf=$2;  dot_seen=no;  ta
root      4797  0.0  0.1  2156   80 ?        S    18:12   0:02                                                  \_ make all-am
root      5184  0.0  0.0  1656   32 ?        S    20:47   0:00                                                      \_ /usr/i386-pc-linux-gnu/gcc-bin/3.3.5/i386-pc-linux
root      5185 14.0 34.0 47456 19840 ?       D    20:47   6:21                                                      |   \_ /usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.5/cc1pl
root      5186  0.0  0.0  2804   56 ?        S    20:47   0:01                                                      |   \_ /usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.5/../..
root      5257  0.0  0.1  1656  108 ?        S    21:27   0:00                                                      \_ /usr/i386-pc-linux-gnu/gcc-bin/3.3.5/i386-pc-linux
root      5258 47.4 45.3 31380 26424 ?       D    21:28   2:26                                                          \_ /usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.5/cc1pl
root      5259  0.0  0.1  2276  108 ?        S    21:28   0:00                                                          \_ /usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.5/../..
mini src # vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 1  1  81160   1500    108   5200    3   25    29    34   26    56 77 12  1  9
 1  1  81160   1436    108   5272  312    0   384     0 1054    61 86  4  0 10
 0  2  81216   1604    108   5152  624  140   700   140 1086   131 48  8  0 43
 0  3  81280   1664    108   5076  744  148   780   148 1095   184 13  9  0 78
 1  2  81280   1456    108   4792  748    0   748     0 1101   151 13  7  0 80
 1  2  81380   1572    108   4400  500  384   500   384 1116   144 53 14  0 33
 1  1  81384   1524    108   4360  324   40   324    40 1070   104 94  6  0  0
 1  1  81428   1640     80   4008  736  180   736   180 1115   174 86 14  0  0

I will continue this page as installation proceeds ...

March, 15: Started frentic disc activity, build process slowed down even more. The machine was swapping like mad ... Killed a tail -f nohup.out (emerge was started with nohup) and swapping stopped. Probably the "tail" had grown to the size of the logfile, which is 30M now.

March, 17: Still compiling ... (22 packages left)


Markus Wernig

webmaster wernig net