Installing SuSE 9.0 Linux on a Toshiba Portégé 3015CT Laptop

This article describes how to install SuSE Linux version 9.0 onto a Toshiba Portégé from a CD using a CardBus CD-ROM. More details about installing from an NFS server, and additional information about the Toshiba 3015CT laptop, can be found at http://randombio.com/linuxsetup23.html.

These older Porteges are preferable to the later ones, because they have a trackpoint ("eraser head") pointer instead of a touchpad, and two PCMCIA slots instead of a single slot like later models. They are also thinner. The computer is extremely light and convenient and fairly rugged for an ultralight, though it was highly susceptible to even a few drops of water. At one point, in an attempt to kill a fly by spraying Windex at it, I accidentally sprayed a couple drops of Windex onto the keyboard. This shorted something out inside the keyboard, and caused the keys to generate keystrokes continuously. I had to hit the reset button to shut off the Toshiba and wait until the keyboard dried out. Unfortunately, the disk became corrupted at this point, forcing a reinstall of Linux. I began to suspect that Windex may actually be produced by Microsoft. After some false starts, I finally got SuSE 9.0 installed from an ATAPI CD-ROM.

Toshiba 3015CT and SuSE Installation screen
The Toshiba 3015CT showing the Yast text-mode installation screen. The evil glass cleaner is visible lurking in the background. Notice, however, that there are no flies anywhere in sight.

Installing SuSE 9.0 on this vintage ultraportable is only possible if you have a lot of patience. Because of the small amount of physical RAM, Yast automatically goes into text mode. Unfortunately, even the text-mode version of Yast has a large memory footprint, which causes a lot of page swapping if you only have the default 32MB of RAM. I strongly recommend getting the extra 32MB memory module, if you can find one, before attempting installation.

Hardware

This is the hardware configuration of my 3015CT:

Bios settings

It's necessary to change the BIOS configuration, otherwise installation will hang after trying to load the "yenta_socket" driver for the PCMCIA bus. This is a disaster, because PCMCIA is needed for both network and CD-ROM installation. Because I had problems with yenta_socket hanging, I borrowed a USB CD-ROM to attempt installation from a USB CD-ROM. Unfortunately, the installation software wouldn't recognize the USB CD-ROM regardless of how I tweaked the BIOS settings. If you can't get past the yenta_socket driver (which replaces the old reliable i82365 driver for the i82365 chipset), it would be very difficult if not impossible to install SuSE on this machine.

BIOS Settings
   device config = All Devices
   Controller Mode = CardBus/16 Bit
   PCI Bus = IRQ 11
   HDD = Primary IDE (10FH/IRQ 14)
   Hard Disk Mode = Enhanced IDE (Normal)

Installation Procedure

  1. Before starting the installation, I updated the BIOS using the file 3301cv80.exe from Toshiba's Web site. This didn't seem to do much, and the computer was still unable to boot from a CD-ROM.
  2. Insert the CD-ROM's PCMCIA card in the slot on the left and the network card in the slot on the right before powering up the Toshiba. If they're switched, the CD-ROM drive won't be recognized by Yast, and Yast will give the message:
       Unable to mount cd-rom!

  3. Boot from the Bootdisk floppy (which is on CD #1) and select "Manual installation" with no options on the command line at the bottom of the menu screen. This is important, because if you select "Installation" or "Installation - Safe Mode", it will hang when it tries to load the "yenta_socket" driver for the PCMCIA bus.
  4. Insert modules disk 1 when prompted.
  5. Load PCMCIA modules from modules disk 4. It should say "Found yenta_socket". Press Enter with no parameters.
  6. It should say, "Starting card manager" and the CD drive should spin up. The messages screen will say something like:
       hdc attached ide-cdrom driver
       hdc:ATAPI 23X CD-ROM DRIVE, 128 kB Cache
       Uniform CD-ROM driver Revision:3.12
  7. Next, select "load network card modules" and load the Tulip DEC tulip (DC21x4x) PCI module (or the 3c598C module for the 3Com EtherLink III card).

Installation

Because of its bloated memory footprint, the text-based version of Yast that is included with SuSE 9.0 runs extremely slowly on the Toshiba compared to previous versions of Yast. If you can use the default package choices, I recommend accepting them. On the Toshiba 3015CT, every time a package was selected or deselected, the display paused for precisely 1 minute and 47 seconds, with the hard disk light flashing continuously. Since there are hundreds of packages, selecting them individually at this rate could take days. Just selecting all the Perl modules would take at least two hours.

In fact, Yast's page-swapping on the Toshiba makes it so slow that merely scrolling down a list took several seconds per line. At one point, I tried to scroll up. The computer froze for two minutes, and then over the course of the next few minutes, it finally scrolled up, then down, then up again. The speed is the same regardless of whether you install from a CD-ROM or NFS. In contrast, in a desktop, these operations are instantaneous. I finally gave up on selecting packages individually and selected the "Kernel developer" and "Network server" categories. Despite the fact that I skipped installation of many small packages, I still had to fight with Yast to get it to deselect unwanted packages in order to cram the installation into the 1.75 GB /usr partition. This took over six hours. (Of course, I was doing other things at the same time, like surfing the Web, eating lunch and dinner, dealing with a hacker attack on the lab's email server, and putting up some drywall). Installation from the CDs took another three hours. This is an order of magnitude slower than installation of SuSE 7.0.

This has always been a problem with SuSE--you have either too much or too little granularity in package selection. For example, it would be nice to be able to install all the Perl-related files or all the programming packages with one selection. What SuSE really needs is some way to select packages to install on some other computer, then transfer that list to the new computer during installation. This would be very useful in reducing the down-time required when upgrading a critical server.

Problems with installation

As always, there are problems. Nonetheless, it's remarkable that Yast didn't crash despite the small amount of available memory.

  1. Several times Yast, unable to conceive of anyone wanting to install Sendmail and ftp, automatically re-selected Lukemftp, fetchmail, mailx, postfix, and a bunch other programs, and then reported a "conflict". On such a slow computer, where it takes two minutes to delete each one, this is a big annoyance.
  2. Yast also insisted on selecting the kernel source, again causing the Toshiba to run out of disk space. In order to deselect this, it was necessary to deselect the "developer" category, then re-check the list of packages to re-select those that were lost when "developer" was turned off.
  3. At the end of installation, Yast automatically selected a number of extra useless packages, ostensibly to eliminate conflicts. It was not possible to get rid of these extra packages individually.
  4. After Yast finished installing software, I removed the external PCMCIA CD-ROM. The machine booted successfully, but suddenly there was no network. /sbin/ifconfig only showed 'lo' (loopback). Checking the configuration with Yast did not reveal any problems.
    Solution: moved the network card to the left slot and power-cycled the laptop. This caused the card to be recognized. Apparently, if the left PCMCIA slot is empty, any device in the right slot may not be accessible.
  5. Yast didn't detect the built-in sound card (a Yamaha YM OPL3-SA3). So much for playing those MP3s through the Toshiba's 3/4-inch speaker.
  6. It is recommended to use a lighter window manager such as fvwm instead of KDE or Gnome on this computer to avoid continuous page-swapping.

Problems after installation

There were many more problems with SuSE 9.0 than SuSE 7.0, many of which would probably be difficult for an inexperienced user to fix.

  1. Can't reboot After the machine was running for a few days, I tried to reboot it. Shutdown hung on "Shutting down PCMCIA". The machine was completely frozen and the reset button had to be pressed to continue. This caused a disk fsck at boot-up. Fsck failed and it was necessary to hit the reset button again to reboot. The Reiserfs disk replayed 1182 transactions. Second time it rebooted satisfactorily.
  2. No network after rebooting. Starting the network manually by typing
         /etc/rc.d/network start eth0
    gave the message
         network: line 234: ifcfg-eth0: No such file or directory

    Solution:
         cd /etc/sysconfig/network
         ln -s ifcfg-eth-pcmcia ifcfg-eth0 
    This stopped the error message but network still wouldn't start. The /var/log/messages file had the line
         /etc/hotplug/net.agent: No HW description found ... exiting
    Edited /etc/sysconfig/hotplug, added the line
         HOTPLUG_NET_DEFAULT_HARDWARE="pcmcia" 
    and rebooted (restarting network had no effect). This solved the problem.
  3. No telnet or ftp server running.
    Solution:
         cd /etc/init.d/rc3.d
         ln -s ../inetd S98inetd
         cd ..
    edit /etc/inetd.conf to uncomment the desired services then type
         ./inetd start
  4. Bash shell scripts with function operator "( )" no longer work, giving the message
         syntax error near unexpected token `('
    Solution: change
         myfunctionname ()
    to
         function myfunctionname()
    in the script. For example, the following script allows mc (Midnight Commander) to stay in the directory being displayed when you quit mc.
         function mc()
         {
             echo Starting...
             MC=/tmp/mc$$-"$RANDOM"
             /usr/bin/mc -P "$@" > "$MC"
             cd `cat "$MC"`
             rm "$MC"
             unset MC;
             echo Ending...
         }
  5. Linux doesn't go into suspend mode when lid is closed. The "On" LED turned yellow, and computer continued to run, albeit slowly, with the lid closed, and the display stayed lit (although it was obviously hard to tell with the lid closed).

    First, verify that acpi=off is not set in /etc/lilo.conf.

    If this doesn't help, it's necessary to edit the SuSE sysconfig files. SuSE has a SuSE-specific hack to handle acpi. The /etc/acpi/events/ directory just contains a single file, "default", which has a single line pointing to /etc/sysconfig/powermanagement and a script called acpid_proxy. This script seems to be incomplete, because it lacks a function for "resume". The few docs that exist about ACPI talk about the normal ACPI config file, which is completely different from SuSE's "pile of obscure config files strewn in random places" method, and the SuSE manual is only marginally useful.

    Edited /etc/sysconfig/powermanagement set the following
         ACPI_MODULES="toshiba_acpi ac battery button fan processor thermal"
         ACPI_BUTTON_LID_CLOSE=standby  
         #(Note: the line below is the problem line. Nothing that was 
         #added here worked.)
         ACPI_BUTTON_LID_OPEN=resume    
         APMD_SUSPEND_ON_AC="yes"
         APMD_SET_CLOCK_ON_RESUME="yes"
         ACPI_BUTTON_POWER=shutdown
         ACPI_BUTTON_SLEEP=standby
         APMD_WARN_STEP="20"
         APMD_STOP_SOUND_BEFORE_SUSPEND="yes"     
    Then ran
         /etc/rc.d/acpid restart     
    After pressing the metal On/Off switch on the left of the computer to make the "On" LED turn green, closing the lid now caused the laptop to shut down. However, opening the lid again had no effect. Pressing the On/Off switch turned on the LED but nothing else.

    Solution: It might be possible to edit the /usr/sbin/acpid_proxy script and add a function for "resume" like the following:
         resume() {
               echo 0 > /proc/acpi/sleep
         }  
    but I did not try this. I just disabled ACPI by adding the line
         ACPI=off     
    in /etc/lilo.conf, ran /sbin/lilo, and rebooted. This automatically disables ACPI and enables APM in the kernel if APM is compiled in. The "On" LED on the front must be green, not yellow, otherwise APM will not work. Momentarily pressing the On/Off switch resets the LED if the machine is already on (and turns the machine on if it's off). While in suspend mode, the 'On' LED should be slowly blinking yellow. APM worked perfectly, even restoring the pre-existing telnet connections when the lid was opened.

    If all else fails, you can run
         apm -s      
    manually before closing the lid. Pressing the metal "On/Off" switch reactivates it.
  6. Spurious 8259A interrupt: IRQ7
    The reason for this is unknown.
  7. Screen blanker turns screen white.
    Solution: xset -dpms

Long-Term Problems

The Toshiba 3015CT ran at a reasonable speed considering its small memory capacity, as long as large apps like Mozilla were avoided. With the modular kernel intalled by SuSE, it was impossible to reboot the system or close the lid without causing the OS to hang. The only way to fix this was by hitting the reset buttion, which caused "failed fsck" errors on any ext2 filesystems. Compiling a kernel without module support was the only solution. However, so far I haven't found the right combination of configuration options to get both the Linksys PCM200 network card and SB Audigy card to work.

Error messages

  1. Error message: ERROR(InstSrc:E_cache_dir_create) when connecting to server by NFS.
    Meaning: You must be root to use Yast.
  2. Error message: "The DMA on your hard drive is turned off" message at boot-up.
    Meaning: Use
    hdparm -d1 /dev/hda 
    to activate DMA. (So far this has not worked on the Toshiba).

Hardware information

lsmod
Module                  Size  Used by    Not tainted
isa-pnp                30664   0 (unused)
ipv6                  209824  -1 (autoclean)
key                    63256   0 (autoclean) [ipv6]
tulip                  41120   1
ds                      6668   2
yenta_socket            9760   2
pcmcia_core            43232   0 [ds yenta_socket]
keybdev                 1996   0 (unused)
mousedev                4084   0 (unused)
joydev                  5120   0 (unused)
evdev                   3584   0 (unused)
input                   3360   0 [keybdev mousedev joydev evdev]
usb-ohci               18664   0 (unused)
usbcore                58668   1 [usb-ohci]
raw1394                16592   0 (unused)
ieee1394              183332   0 [raw1394]
reiserfs              200084   2 (autoclean)


Back