Linux on the Canon Innovabook 150C

(Click here for my general page about Linux on this laptop, and my Debian Woody experiences.)


Installing Slackware-8.0

Slackware still looks more or less the way it did back in the days of floppy-based installs. When I first installed Slacware in 1995, I used actual floppies. (Only two, though; I had a net-connected Amiga downloading and writing the floppies, and I just moved them back and forth to the laptop, writing floppy n+1 while reading floppy n. It took all day.) Nowadays, the packages aren't divided into floppy-sized sets, but they are still divided according to function. And the installer looks exactly like it did back in days of yore.

Once I read what was on the screen instead of on the web install help file, and realized that to do a PCMCIA install one just types "pcmcia" to the slackware install console before typing "setup", things went pretty much without a hitch. I downloaded the distribution to my desktop, set up tag files, and ran the install as a NFS install. For my tag files, I tried to strip down to the bare bones. Very little development software (only perl, no compilers), no TeX, no TCL, certainly not KDE or Gnome. (I did install the gtk+ libraries, however.) And it worked. Good old Slackware. It may not be as user friendly as RedHat, and it may not give the same level of infrastructure support for tracking packages after it's installed. Indeed, back when I was managing nearly 20 systems, I was very happy to have RPM helping me keep things synchronized, and would definitely choose RedHat over Slackware for that. Slackware, however, has its advantages: there is much less overhead in getting yourself a functioning Linux system. The installer is simpler and worked on my little 486 laptop, and I could install a system with X on a 300MB hard drive partition.


Getting XFree86-4.1.0 to Work

X was the next challenge. If I may reminisce: when I first bought this laptop in 1995 or thereabouts, and installed Slackware 3.whatever, I had a lot of trouble getting X to work. It turned out that the variant of the WD chipset I had (WD90C24A, I believe) was too new to be fully supported by the XF86_SVGA driver that came with Slackware; I had to download the recently-released version of XFree86-3 (3.1 or 3.2, I forget which) in order to get support for that chip. And, once I did that, everything worked.

Now I'm on the other side of this equation. Slackware-8.0 comes with XFree86-4.1.0... and my chip is too old to be supported! According to the XFree86-4.1.0 Driver Status Document, nobody has bothered porting the XFree86-3.3.6 drivers for my laptop's video chip forward to XFree86-4.1.0! It must be that nobody cares. Briefly, I despaired, fearing that I would have to either port the drivers myself, or manually downgrade to XFree86-3.3.6 hoping that I wouldn't break too many things in so doing.

However, then I found the Slackware pasture directory. In particular, see the README file in the XFree86-3.3.6-servers directory. It turned out that if I installed the xsvga.tgz pacakage, set the executable links for X properly, and generated a good XF86Config file, X would work! And, I'm still using the newer libraries and so forth that come with XFree86-4.1.0.

How to generate that config file? If you are the one other person in the world who maybe wants to do this, write me, becuase I don't believe that you exist. But, back to the point, you can:

  • Grab my XF86Config file.
  • Stick it in /etc/XF86Config (this old server will not look for it in /etc/X11/XF86Config!)
  • cd to /var/X11R6/bin
  • Make a link to the old SVGA server: ln -sf /usr/X11R6/bin/XF86_SVGA X

Be aware that this setup uses an external serial mouse rather than the internal trackball, since I don't actually have a functioning trackball on my computer!

If, like me, you're a do-it-yourself type, from that pasture directory get and install xvg16.tgz and xset.tgz. That gives you what you need to run XF86Setup to generate your own XF86Config file.

Hey, it's only 8-bit 640x480, which seems pretty pathetic even for a laptop nowadays. But it wasn't so bad in 1995... and, it's better than not having X at all!

Here's a truly banal screenshot. (If you look closely, you'll see the commands I ran to connect over to my desktop and run Gimp to take the screenshot. I don't have the Gimp installed on the laptop, so I couldn't run it natively.) (You will also notice how flaky I was about having lots of emacses running in the background as root.) (You will also see one of my failed attempts to use the sound card.)


Sound

The machine claims to have a soundblaster compatable sound card, and sure enough that driver seems to be working. I've got it configured for an 8-bit sound card; hey, how could you ask for anything more on an ancient 486 laptop? I don't know if the card really is supposed to be 8-bit or 16-bit, but all I know is that my one test .wav file did work with my current configuration.

When I built the kernel, I selected to compile sound, OSS sound, and "100% SoundBlaster Compatable" as modules. Then, in my /etc/modules.conf, I put lines:

alias sound-slot-0 sb
options sb io=0x220 irq=5 dma=1

Once the sound module is loaded up, in /proc/interrupts there is a line:

  5:         17          XT-PIC  soundblaster

In /proc/dma there is a line:

 1: SoundBlaster8

Finally, in /proc/ioports, there is a line:

0220-022f : soundblaster

Note that you do not edit any of these /proc files by hand! All you have to edit is the /etc/modules.conf (in addition to compiling a kernel with proper support); you can look at the /proc files as a sort of diagnostic.


PCMCIA (and Wireless Networking)

PCMCIA pretty much works out of the box. In years past I've used modem and SCSI cards; since my Slackware-8.0 install I've used a 10bT ethernet card (the one that was used for the install) and an Orinoco 802.11b wireless network card.

Getting the latter working turned out to be a bit of a challenge. First, I installed wireless.tgz using installpkg. Still, though I couldn't get it to work. The reason was that, once again, I didn't read what I was doing carefully enough. Near the top of /etc/pcmcia/wireless.opts, there were these lines:

# NOTE : Remove the following four lines to activate the samples below ...
# --------- START SECTION TO REMOVE -----------
*,*,*,*)
    ;;
# ---------- END SECTION TO REMOVE ------------

Pay attention to that note! I was trying to configure my card to work in Ad-Hoc mode with a specific encryption key; this configuration forced the card into default mode-- which is all managed with no encryption key. Once I commented these out, the block I'd created lower to set up the card the way I wanted it set up was finally used, and then everything worked.

I run DHCP on my desktop for the house LANs. (There are two: one wired, one wireless.) These are all private IP addresses. I disocvered that when you switch back and forth between the ethernet and the wireless cards, dhcpcd (the DHCP client you get with Slackware if you install the DHCP package) gives you a little bit of trouble. I use two different subnets for the two different types of networking. dhcpcd, however, cahces the ethernet address it gets, and tries to use the same one next time. So, when I unplugged the ethernet card and inserted the wireless card, dhcpcd kept trying to ask my DHCP server for an address on the ethernet subnet; the DHCP server, reasonaly, kept saying no. Eventually this times out. However, I solved it by removing the Slackware DHCP package and installing pump.tgz with installpkg. Who knows, maybe this one caches too, but I haven't yet had trouble with it.

By the time I'd finally gotten all of this working, I'd built and installed a newer kernel on my laptop. I build kernels on the PIII-550MHz desktop; much faster that way! I'm now running 2.4.9-ac10 on the laptop. For the wireless card, I built the "orinoco" drivers (called "Hermes" in the Linux kernel xconfig program). I think that the drivers with the Slackware 2.4.5 kernel will work, but if you want to use the orinoco_cs drivers such as I have done, you have to edit /etc/pcmcia/config adding a "driver" line for orinoco_cs and changing the binding of this card to that driver:

device "orinoco_cs"
  class "network" module "orinoco_cs"

  .  .  .

card "Lucent Technologies WaveLAN Adapter"
  version "Lucent Technologies", "WaveLAN/PCMCIA"
  bind "orinoco_cs"
#  bind "wavelan_cs"


card "Lucent Technologies WaveLAN/IEEE Adapter"
  version "Lucent Technologies", "WaveLAN/IEEE"
  bind "orinoco_cs"
#  bind "wvlan_cs"


Last modified: 2003-January-10, by Rob Knop