Johannes Lehtinen, Aug 10th 2004
Halikko, Finland
This page
describes how I installed and configured Debian GNU/Linux on a Compaq Armada
1130T laptop. This information was gathered on June-August 2004 and should be
valid for the listed software versions. The settings listed here worked for me
but I will not guarantee that they would work for you. Notice that it is
possible to even damage the hardware by using improper settings.
Armada 1130 is an oldish laptop that, in my opinion, can be used for light text-processing, web browsing and e-mail checking. It also serves well as a network inspection tool or server console. My sister used this unit for writing documents. The laptop is easily capable of running simple X applications but OpenOffice (v1.1.1) usage is pain due to lag and general slowness. Abiword and Gnumeric are better alternatives in this regard.
Armada 1130 is not a lightweight laptop but it has all the usual ports (of the time) embedded so one does not need to carry a docking station around. Actually I have had two 1130s. One with a DSTN display (1130) and other with a TFT display (1130T). The DSTN display was already rather dim when I got it but the TFT display was in great condition.
Following is the hardware configuration of my unit.
| Manufacturer | Compaq |
|---|---|
| Model | Armada 1130T |
| Weight | 2.8 kg |
| Dimensions | 30.2 x 22.6 x 5.7 cm |
| Processor | Intel Pentium 120 MHz, 256 KiB L2 cache |
| Memory | 48 MiB, expanded (shipped with 16 MiB) |
| Display | 10.4" 800x600 TFT |
| Hard disk drive | Fujitsu 1 GB, 128 KiB cache (FUJITSU M2714T) |
| Drives | 3.5" floppy disk drive |
| Battery | NiMH 10.8 V 2.8 Ah |
| Connectors | 1 x VGA, 1 x PS/2 for external mouse/keyboard, 1 x serial, 1 x parallel, 2 x PCMCIA type-II / 1 x PCMCIA type-III |
| IDE chipset | OPTi Inc. 82C557/82C558 Viper-M |
| Graphics controller | Cirrus Logic GD7548 |
| Power management | APM |
| PCMCIA controller | Cirrus Logic CL672x |
Output of lspci:
0000:00:00.0 Host bridge: OPTi Inc. 82C557 [Viper-M] (rev 14) 0000:00:01.0 ISA bridge: OPTi Inc. 82C558 [Viper-M ISA+IDE] (rev 02) 0000:00:02.0 VGA compatible controller: Cirrus Logic GD 7548 0000:00:14.0 IDE interface: OPTi Inc. 82C621 [Viper-M/N+] (rev 12)
Below you can find the status of Debian GNU/Linux support for the hardware (as of August 2004).
| Architecture | supported, i386/i586 |
|---|---|
| IDE chipset | works after disabling DMA (Linux 2.6.7 "ide-generic", Linux 2.4.26 "opti621") |
| Graphics | works after disabling acceleration (XFree86 4.3.0 "cirrus", XFree86 3.3.6 "SVGA") |
| Power management | shutdown, battery status and suspend works, suspend-to-disk not tested (Linux 2.6.7 & 2.4.26 "apm") |
| PCMCIA | supported (Linux 2.6.7 & 2.4.26 "i82365") |
Because I had wiped the whole hard disk drive clean I tried first to reinstall the Compaq setup and diagnostics into a special partition using the "Compaq setup and diagnostics for portables" (SP2054) which I downloaded from here: http://h18007.www1.hp.com/support/files/Armada/us/download/8421.html. It installed fine and worked fine when ran from the floppies but does not run correctly from the diagnostic partition when pressing F10 at startup. However, I have not found any use for the setup and diagnostics so I didn't waste my time trying to fix it.
The easiest way to install Debian into this laptop was by using boot floppies and network installation. Here are the steps for installing the Debian GNU/Linux base system into a clean Compaq Armada 1130T. Installation was rather simple and easy this time.
I used Debian Sarge (testing) test candidate 1 (tc1) boot floppies ("boot", "root" and "net-drivers") for network installation. Network connectivity was provided by my Xircom 10/100 Mbps PCMCIA network card.
During the installation I used mostly the default setup suggested by the Debian installer. However, due to small hard disk size I did not use the default partitioning scheme but chose to create a single ext3 root partition and no swap partition at all. It is easier to resize a swap file than a swap partition should I later need more space for the file system.
To make sure there was enough virtual memory available for the rest of the installation procedure I switched to second virtual terminal (VT 2) by Alt-F2, logged in as root and created a 256 MiB swap file into the newly created root partition.
dd if=/dev/zero of=/target/swapfile bs=1024k count=256 mkswap /target/swapfile swapon /target/swapfile
I then logged out ("exit") and continued
installation at VT 1 (Alt-F1).
After the laptop was rebooted from the hard disk drive for completing the installation I manually enabled swapping again from VT 2.
swapon /swapfile
To my surprise the Debian installation told me after the reboot
that the laptop was not connected to a network!
Apparently a wrong PCMCIA driver was tried.
I switched to VT 2, logged in as root and edited
/etc/default/pcmcia (for example
"editor /etc/default/pcmcia") to have:
PCIC=i82365
I then started the PCMCIA support.
/etc/init.d/pcmcia start
The setup procedure continued normally after I told it I did not need PPP to setup connectivity.
After completing the Debian setup I logged in as root and loaded the Advanced Power Management (APM) module to be able to shutdown and power off properly.
modprobe apm
I also edited /etc/modules and added "apm"
in the end of the file for automatic loading.
To enable swap file usage automatically, I created a startup script
/etc/init.d/local-swapfile (copy available
here) and made a symbolic link
for it.
ln -s ../init.d/local-swapfile /etc/rcS.d/S36local-swapfile
I noticed Linux tried to enable DMA on hard disk and this caused
DMA timeouts and retries during boot. So I edited
/boot/grub/menu.lst default kernel options
("# kopt=...") to include "ide=nodma" and
then ran update-grub.
If your system hangs during
installation and you get DMA errors, try booting installation with
"linux ide=nodma" (and later editing Grub boot command
correspondingly by pressing 'e' on Grub menu).
At this point I had a usable but unoptimized text mode Linux setup.
Configuring the X server is typically one of the more problematic tasks while setting up Linux on an older laptop. In this case it was easy to make it work unaccelerated. With little experimentation one could perhaps enable some acceleration.
Here are the steps for setting up X environment.
I started by installing the "x-window-system-core" package
(use "aptitude" or do
"apt-get install x-window-system-core").
I did not enable sub-pixel text rendering because of limited CPU power
available. Hardware auto detection did not seem to work correctly so I
manually picked "cirrus" driver. PCI bus address and other driver options
can be omitted. I then selected
/dev/psaux as the mouse port and PS/2 as the mouse type.
The display is, of course, LCD and I used the medium configuration level
for specifying it as 800x600 60 Hz. The color depth is 16 bits.
After the setup I manually edited /etc/X11/XF86Config-4
to add the following options in "Device" section. The
accelerated graphics do not work so NoAccel needs to be
specified (perhaps some subset of acceleration options could be disabled
instead).
Option "NoAccel" Option "HWCursor"
I also commented away "Generic Mouse" in "ServerLayout" section.
At this point I had the X server configured and working. Here is copy of my XF86Config-4.
People have very different preferences considering X environments. I proceeded to install the Xfce Desktop Environment (packages "xfce4" and "xfce4-goodies") to have a light but fairly complete X desktop. I also installed Rxvt (package "rxvt") as the terminal emulator and GDM (package "gdm") as the display manager (because it offers convenient restart and shutdown actions right from the startup screen).
I like booting directly to X but being able to boot into
a text-only mode by selecting the run level at boot time. Unfortunately Debian
does not make
real distinction between runlevels (for example, display manager is started
in any multiuser mode). I modified /etc/inittab to have default
runlevel of 5:
id:5:initdefault:
To make the GDM only run on runlevel 5 I then did:
update-rc.d -f gdm remove update-rc.d gdm stop 01 0 1 2 3 4 6 . start 99 5 .
And finally, I added a new alternative to the Grub boot menu by adding
the following altoptions line:
# altoptions=(text console) 3
And doing "update-grub".
Now I can make the choice between multi-user text-only mode (runlevel 3) and graphical mode (runlevel 5) right at the Grub boot menu.
Here are some performance tuning tweaks I did to (hopefully) get better laptop performance and longer lasting batteries.
First I updated to a 2.6 series kernel (the latest was 2.6.7). This does not necessarily boost performance by itself but a 2.6 series kernel is needed for some of the tunings described below.
Then I eliminated all unnecessary processes. I removed "at"
because I do not need it. I also configured Exim to not start any background
processes by editing /etc/default/exim4 to have:
QUEUERUNNER='nodaemon'
Startup time could be shortened by removing "discover" and making sure "hotplug" was not installed either.
Laptops are not usually powered on around the clock so I installed "anacron" to make sure the maintenance scripts are run when laptop is powered on. If "powermgmt-base" is also installed then Anacron is only started when on AC power which is very convenient.
"hdparm" can be used to tune IDE disk parameters. I installed it and
turned on 32-bit IO and IRQ unmasking for the /dev/hda in
/etc/hdparm.conf:
/dev/hda {
io32_support = 1
interrupt_unmask = on
}
Helps a bit despite the absence of working DMA support.
I installed "apmd" to be able to control the operating characteristics
depending on the availability of AC power and to handle suspends nicely. In
fact, "hdparm" already provides a script
(/etc/apm/event.d/20hdparm) for tuning the hard disk drive
spindown time when on battery power. I edited the script to make it possible
to specify a separate spindown time for AC operation. Here is my version of the
script. I use a very aggressive spindown time (15 s) on battery
power.
Hard disk drive spindown timeout does not help a lot if continuous IO keeps it spinning. Thus I tried to eliminate processes that wake the hard disk drive up. One way to find them is to do the following:
/etc/init.d/klogd stop echo 1 > /proc/sys/vm/block_dump cat /proc/kmsg
And then tune processes using other terminal.
I had already disabled Exim daemon processes which helped a lot. Then I
made sure that "syslogd" would not write the usual mark timestamps by
editing the /etc/init.d/sysklogd to have:
SYSLOGD="-m 0"
(Followed by "/etc/init.d/sysklogd restart", of course.)
Processes writing to the disk are not the only factor when trying to keep the disk from waking up. With this laptop it is hard to keep the disk not waking up when running X (due to swapping) but the following tunings definitely make a difference when doing text editing in text-only mode on battery power. Being a software developer I have personally used this approach quite often to make the battery last longer.
Reading data from a file system (even data cached in memory) normally
updates the access times of files. These updates are writes that
wake up the disk. Because access time information is rarely needed on a
laptop,
I disabled access time updates by mounting the disk-based file systems using
the "noatime" option in /etc/fstab.
The disk writes can be delayed as well (notice that this is not
a good idea if the integrity of latest data is highly
important for you). Use of the ext3 file system makes
this a bit more complicated as it commits data every 5 seconds by default.
This can be changed using the "commit=600" option which
makes the commits occur only every 10 minutes. I added this option to
/etc/fstab and then wrote a short apmd script (available here, copy to
/etc/apm/event.d) to tune buffer
parameters differently depending on mode of operation (AC/battery). The
script adjusts the time the kernel is willing to wait before flushing the
dirty buffers to a disk. It
also enables the "laptop_mode" when on battery power which forces any
pending updates to disk whenever data is read from the disk. The idea is to
save battery power by writing data to disk when it is not spinned down
anyway.
I was configuring this laptop for a user not familiar with Linux so I did preinstall some software and did some usability tunings as well.
I had already installed the Xfce desktop environment ("xfce4") as a lighter alternative to Gnome and KDE. Then, I installed some software likely to be needed such as a web browser ("mozilla-firefox"), a mail reader ("mozilla-thunderbird"), a text processor ("abiword") and a spreadsheet ("gnumeric"). OpenOffice is too heavy for this laptop or at least requires extensive patience from the user. I added the applications to the Xfce launchbar.
To make it easier to access the floppy disk I installed "autofs". I made
a directory /var/autofs/floppy and put the following in the
master configuration file /etc/auto.master:
/var/autofs/floppy /etc/auto.floppy --timeout=2
I then created the floppy mounting configuration
/etc/auto.floppy:
floppy0 -fstype=vfat,defaults,user,umask=000 :/dev/fd0
Finally I replaced the directory /media/floppy0 with a
symbolic link pointing to /var/autofs/floppy/floppy0 and
restarted "autofs".
Now the floppy can be accessed as /media/floppy without
thinking about mounting and unmounting.
Copyright 2004 Johannes Lehtinen, < johannes.lehtinen@iki.fi >