Linux on Compaq Armada 1130T

Johannes Lehtinen, Aug 10th 2004
Halikko, Finland

Introduction

Compaq Armada 1130TThis 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.

About the laptop

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.

Hardware configuration

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)

Linux support

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")

Installation and setup

Base system

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.

  1. 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.

  2. 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).

  3. After the laptop was rebooted from the hard disk drive for completing the installation I manually enabled swapping again from VT 2.

    swapon /swapfile
    
  4. 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.

  5. 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.

  6. 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
    
  7. 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.

X-window environment

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.

  1. 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.

  2. 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.

  3. 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.

Performance tuning

Here are some performance tuning tweaks I did to (hopefully) get better laptop performance and longer lasting batteries.

  1. 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.

  2. 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.

  3. 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.

  4. "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.

  5. 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.

  6. 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.)

  7. 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.

Usability tunings

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.

  1. 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.

  2. 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 >