Rob KnopCanon InnovaBook 150C
|
Linux, Debian Woody, and the Canon Innova Book 150C
What is this LaptopThis is a ca. 1995 486DX-66 laptop which was produced by Canon back when they still produced laptops. It comes with 4MB of RAM standard and a 340MB hard drive. It's got a built-in trackball pointing device, 2 PCMCIA Type-II (or one Type-III) slots. On the back is a PS/2 port (for at least a keyboard; I don't know if a mouse works there), a parallel port, a 9-pin serial port, a VGA port, a connector for the AC adapter, and what must be a connector for a docking station. I've never seen the docking station, so I don't know if it ever really existed. The AC adapter is an external brick which adds a pound or two to the "carry" weight of the system. When I purchased my laptop, it came with a small but functional carrying case. Although 4MB is standard, it is (was) possible to get 4MB and 16MB memory upgrades, for a maximum memory of 32MB (although you were admonished that only an authorized service tech could perform the upgrade for one of the two memory slots). This laptop is so ancient that it is very difficult to find information about it. I have found 16MB memory modules listed (for $60-$90, which is sad considering I just purchased a 256MB DIMM for my PIII-550 desktop for $45) (and now a while later, even that price sounds a bit sad), but I can't find any technical specs on the web. Canon's website no longer admits that they ever sold laptops; if somebody can find legacy device support on their website (such as what Seagate thankfully maintains), please let me know. My System and its Sordid History
I first purchased this laptop in 1995. I wanted to get a laptop to run Linux; I finally felt like a "good enough" system had come down enough in price that I could just barely rationalize affording one. I paid something like $1600 for this laptop with 4MB standard. I ordered a second 4MB chip to bring the memory up to a whopping 8MB, but it was back-ordered, so I had to wait. So I installed Linux- Slackware 3.something- on this little system. And it worked. I didn't try X until I had 8MB, but from the console it was OK. This was little enough memory that I could get a real boost by compiling a smaller kernel to only have just what I needed; that first compilation took many, many hours and relied a lot on swap space. Back then, you could install most of what Slackware offered in <200MB. I forget how I partitioned the thing, but I did keep a small (50MB?) Windows 3.1 partition around for a while; once I realized I was never using it, I blew it away. Eventually I upgraded the thing to 8MB, and then (later) 20MB. 20MB seemed like it would be sufficient for anything; finally I could run X with fvwm without swapping nonstop. Then, one day, I was riding my unicycle carrying this laptop in its case when I got hit by a car. I mostly just broke a wrist, but the laptop was a bit sadder. For a couple of years thereafter, there were bright orange spots on the screen; eventually it "healed" itself, because those are gone. (When I took the laptop up to 9,000 feet where the dormitories for the Mauna Kea observatories are, they got a whole lot worse.) The CPU had come out of its slot and its pins were all bent, but I straightened it and pushed it back in. The laptop still worked! However, as fallout from that, I had to replace the hard drive (connectors had come loose) and the internal trackball (ditto). Also, ever since then, I've had problems with the sound (there's something loose somewhere, so that often there is no sound to the speaker), and very occasionally with the keyboard (which, if memory serves, I also replaced). In the end, I put enough money into getting this thing running again that I probably just should have purchased another laptop.... Since I would frequently remove the trackball so that I could push on the speaker to try and restore its connections, I stressed the connector on the replacement trackball, and no longer have a working built-in pointer device. Oh well. When I run X now, I use an external serial mouse. Back in the glory days of Linux in the mid-1990's, when 200MB was more than enough space for a comfortable and complete Linux install, things worked well. More recently, I've had trouble getting Linux to install on this dinky hard drive. When I installed RedHat 6.2 on it, I had to install it first without X, then delete /usr/doc and some other miscellaneous "unnecessary" things, and finally install the X RPMs. I did not try to install Gnome or KDE on it; there's not space, and this laptop doesn't have the horsepower to make them usable. In 2002 I tried to install RedHat 7.1 on it. What a joke. Never mind the disk space; either there's not enough memory (20MB + 16MB swap), or RedHat 7.1's installer doesn't deign to work with 486 machines. In either case, I couldn't get the install past the stage where it starts to actually put software on the machine. At the time, I decided to go back to my roots and take a look at Slackware. It worked! More recently, though, I've become a Debian freak, so I've installed Debian Woody on this laptop. If you are interested, though, I still have the notes I wrote when I installed Slackware. Installing Debian WoodyOn 2003 Jan. 10, I was suddenly inspired to install Woody on this laptop, even though I had Slackware 8.0 happily working from an install several months previously. Truth to tell, I don't use the laptop very much; I've got a 366MHz PIII on loan from work that I use as my "real" Linux laptop. On this old 486 laptop, mostly I just install Linux.... The first time I installed, it went very smoothly. I wrote the first version of this page. Then, futzing around with it later, I started to have trouble. There were bad blocks on the hard drive, and I was getting read errors trying to install packages.... I gave up on the system, but came back a couple of weeks later. I ended up wiping the system and starting over. I let the system spend a morning running both mke2fs and e2fsck with the -c options. (I used -c twice to mke2fs.) I did this by booting up the Debian install CD, using ALT-F2 to go to the second console, and manually making and checking my filesystem there. Then I later told the Debian installer to mount an already initialized partition. I hope that e2fsck has successfully flagged all the bad blocks on my system (there were some 600K used after running the e2fsck, so it's possible) such that the system won't try to read and write to them again. As for Debian on this laptop: a month or so ago, after a 24-hour unpleasant experience with RedHat 8.0 (I'd been a committed RedHat user from 5.2 through 7.3), I switched my desktop (PIII-500MHz/512MB) over to Debian. I'm quite happy with it. Although it may not be quite as neophyte friendly as RedHat, I've found it to be much more geek friendly. And I am a geek. The true Linux neophyte may not like command line tools, but as far as I'm concerned, apt-get is a much nicer interface to the packaging system than anything I was using with RPM. Perhaps if you spring for the RedHat network RedHat support gets that good; but for the cheapskate like myself, I really admire apt-get's ability to download, handle dependencies and install all at once. No more searching out RPMs, trying to install, then finding out you need to search out more RPMs! Right. Off topic. Sorry. My point of all that was that Debian is a modern powerful fully supported distro, with (in my experience) better packaging and both a better and more flexible set of standard packages than RedHat. It fully supports my desktop. It's powerful. The packaging interface is much more high-end than Slackware's. Yet, in stark contrast to RedHat, the Debian installer worked just fine on my poor old 486 laptop! Almost not a hitch! (Well, except for the bad blocks on the hard drive, but you can hardly blame any distribution for that.) I should qualify that a little bit. When I installed Debian on my more modern machiens (desktops and a PIII laptop, all with at least gigs of hard drive space), I used Debian's "tasksel" to select broad groups of packages, and later added more I wanted as I found I wanted them with "apt-get". With my 486 laptop and it's 340MB hard drive, I skipped tasksel, and was a bit more careful (see below). The Debian Woody Install Manual, in its Memory and Disk Space Requirements section, suggests that to run X on your system, you need at least 400MB of space, and that with the drive on this laptop you're stuck with a console system. (In fact, if you read it closer, it's X and development software that brings the total up to 400MB.) However, I've found that if you're careful, you can in fact get X running on this system using less than 150MB of hard drive space. This is a credit to Debian: they have designed a fairly small base system that is very bare bones, but which works. The base bare bones RedHat system, due to RedHat's tangled web of dependencies, is huge nowadays. To install, I first wrote the six install floppies- rescue, root, and four driver disks. I booted up and installed all of that. At that point, I was able to get myself on the net via a PCMCIA ethernet card and my cable modem, and I did the base system install over the net. Voila! You have a bare bones Debian system running. Couldn't be easier. (It was slow, though; it took a lot longer than it did installing Debian on a PIII system. Be ready to let this thing sit and install for a while. I remember when 486s were sexy and fast, but they're dogs nowadays.) Normally, you next run tasksel and/or dselect (the latter being a horrible mess, in my opinion) to set up an actual usable system. I skipped this step, because I knew I'd overfill my 340MB hard drive (minus a 16MB swap partition). The base system already could boot up, run and connect to the net. At this point, I just started grabbing the packages I wanted by hand using apt-get. I grabbed a handful to get "full" console functionality- which is much less than the standard Debian install considers full console functionality- and then another handful to get X working. The main set of additional packages I installed for myself for the console were:
(Note that that's not the full list of packages installed; that's just the list I gave to apt-get. It decided if there were also some additional dependent packages I needed to get.) When all of this is done, issue the command "apt-get clean" to removed cached debs using up precious hard drive space. (I've later gone back and added other packages I decided I wanted, such as ntp and the full perl distribution, and things mentioned below in other sections, but all of these are because I want to do some additional thing. I haven't installed any compilers yet, and still have about 100MB free on the system.) Getting XFree86-4.1.0 to workThis wasn't very hard. I told apt-get to get the following packages:
Asking for all of that also got me everything I needed for a base X system; the rest of the core X stuff is in the dependency lists of those. Note that xserver-svga is actually the XFree86 3.3.6 SVGA server. Even though Woody uses XFree86-4.1.0, you need this old server (which Debian very nicely has set up in a package to work with 4.1.0). When I first got this laptop, I had a hell of a time getting X to work. The reason: the video chip wasn't fully supported yet. Fortunately, very shortly thereafter a new release of XFree86 (3.1.2) came out, and the chip was supported. (Read my 1995 Usenet posts about this!) Now I'm on the other side of that river. The WD90C24A chip in this laptop is so old that nobody has bothered porting the server over to XFree86-4.1! Fortunately, the old XFree86 server binaries work with the rest of the XFree86-4.1 system, so the chip is effectively supported. I cheated when creating my XF86Config file. Debconf tried to make one for me, but it was hopeless and didn't work. So I just grabbed the old one I had working from a previous install (I did have the presence of mind to save it before reformatting my hard drive), and copied out the relevant sections. If you want to just copy mine, here is my XF86Config file which works with Debian Woody on my Canon InnovaBook 150C. It all works. Got me an xterm, got me fvwm. What more could you ask for? Well, 640x480 is a mighty small amount of screen real estate. Heck, the 1024x768 I use on the PIII laptop feels small in comparison to the 1400x1050 I use on my 19" desktop monitor, and especially in comparison to the 1600x1200 I use on the 21" monitor I have on my Linux box at work. But, hey, it's a ca. 1995 era laptop, what do you want? No, I did not try to install Gnome or KDE on this laptop. I remember Gnome feeling a bit slow on a 333MHz PII system, and I remember it feeling like utter molasses on a 120MHz Pentium, so I'm just not foolish enough to try it on a 66MHz 486. Besides, I don't have the hard drive space for that kind of garbage. I love Gnome on my desktop, but FVWM's gonna do me just fine on this 486 laptop. (I don't think I have enough space, anyway; I've still got about 100MB free after the minimal amount of X and other stuff I've installed. I haven't yet decided what to spend it on. I will leave some of it around because I know I will think of things I need that I haven't installed. But maybe I will try to get gcc running on this puppy; I can't imagine why I'd use it nowadays, since I have faster machines to compile on, but hey, it's a toy.) Cruising the WebBack in the day, when this laptop was new, I used to cruise the web with it. Netscape- probably version 2 or 3 at the time- claimed to need 32MB, but it worked fairly well even on my 20MB laptop, with some swapping. Well, times have changed. I wasn't foolish enough to try Mozilla on this laptop; I think they are claiming 64MB as the minimum memory requirement, and from my much more well endowed desktop (which runs Mozilla quite well), I know it's got a hefty footprint on it. Back when this 486 laptop was running Slackware 8.0, I tried Phoenix (the "lightweight" cousin of Mozilla), but woah... the thing swapped for five minutes just to start up, and took close to a minute to go from one page to the next. Not usable on this old, small system. So here I am at Debian, and I know that everything under the sun which is free has been packaged for Debian. (Or almost everything.) So I browse through their list of Web packages on packages.debian.org, and come across a couple of packages that claim to be small, fast browsers. The answer: Dillo. Dillo is great. It's tiny. It's fast. It runs very well on my 486. I can cruise the web again! What's more, it doesn't support CSS at all... and therefore its CSS support is far superior to Netscape 4's! Netscape 4 should be taken out back and shot, and anybody still using it should be flogged and told either to upgrade to Mozilla or downgrade to something that doesn't even have the foolish audacity to try, so poorly, to support CSS. Netscape 4 will make a horrible unreadable mess out of a page that tries to use modern CSS. (For example, visit my work home page (http://brahms.phy.vanderbilt.edu/~rknop) with a modern CSS supporting browser (Mozilla, Opera, or IE>=5.5), with Netscape 4, and then with Dillo. Notice how it's not beautiful, but perfectly readable, with Dillo, but it's an unholy mess with Netscape 4.) Dillo, on the other hand, just blithely ignores CSS. If you aren't going to do it right- which Netscape 4 decidedly doesn't!- this is the proper approach. Given decent HTML design, no, you aren't going to get the layout, but you will get all the content, in a readable fashion, of pages that use CSS for layout. As for tables, yeah, they're supported, so that layout does work pretty well in Dillo. Dillo is great. I can't say enough good things about it. I won't use it much on my desktop, because there I've got the horsepower to run a more full-featured browser such as Mozilla or Galeon, but on this laptop, Dillo is just perfect. I'd been thinking that if I got to the point where this was the only laptop I had to bring with me, I'd be stuck with lynx for web browsing, but now Dillo gives me the option of graphical web browsing. Screen ShotHere's a screen shot of this system running:
You can see Dillo running (normally I'd fill the screen with that window if I was using it), the FVWM pager, an xterm, and an iconified xterm. (I didn't install any of the pixmaps packages, so the iconified xterm up at the top is just a word. I will probably eventually configure FVWM not to put in icons for iconified things at all, but instead use it's right-mouse-button window list. Back when I used to use this laptop for real, that's what I did; given the limited screen real estate, it just makes sense.) Building a New Kernel & SoundI'm pretty sure that this laptop has an ESS 488 sound chip in it. The manual claims that it's merely a "SoundBlaster Compatible" card. Lots of cards make that claim speciously, but sure enough, the ESS chips are supposed to be among the few "SoundBlaster Compatible" chips actually supported by the sb.o module that comes with the standard 2.4.20 Linux kernel. Unfortunately, I had limited success getting that to work. I could get sound out of it, but it would be intermittent, as if there were an interrupt conflict, even though I was pretty sure there wasn't. Instead, I moved to using ALSA, and had better luck with that. To that end, I recompiled the kernel- which I would have done anyway. This machine has little enough memory that I actually found it worth building a custom kernel with just what I needed. If you only save a half of a megabyte, it's still meaningful when you only started with 20MB. What's more, I found that my custom kernel used less "reserved" memory (on the "Memory:" line of dmesg), whatever that is, and in fact I got a couple of MB back. Here is my kernel configuration file, which I used with Linux-2.4.20. You can read this in with "Load Configuration from File". The procedure I used to build the kernel and the ALSA modules is outlined on my Debian, a Custom Kernel, and ALSA page, with a few exceptions:
Here are the two debs I created by compiling the kernel and the ALSA modules: Be aware that this may not have the suite of modules you want; I specifically chose drivers for the specific handful of PCMCIA cards that I actually use, and left out all the others. You will probably be better off making your own kernel. To get the sound card to work, I put the following contents into my /etc/alsa/modutils/0.5 file: alias char-major-14 soundcore alias char-major-116 snd alias snd-card-0 snd-card-sb8 alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss options snd-card-sb8 snd_port=0x220 snd_irq=5 snd_dma8=1 Run update-modules, and then sound should hopefully start working. The sb8 ALSA driver is the one that ended up working. One source file for the es1688 driver suggests that it ought to support the ESS 688 and ESS 488 cards, but it if it detects the latter it seems just to report that it found it and doesn't know what to do with it. (This is how I finally figured out I had an ESS 488 card rather than an ESS 688, which I had previously suspected.) The SoundBlaster compatibility appears to be good enough that the sb8 driver at least sort of works. Using sox (really, just the "play" command which is part of sox), I can play 8-bit mono WAV samples. I haven't yet successfully played an Ogg Vorbis file, but I suspect that part of the problem is that I need to pipe it through sox or some such in order to convert the audio output to 8-bit mono sound. The sound card does seem to be particular about sampling rates; when I play a 22kHz sample, I get the error message: sox: Unable to set audio speed to 22050 (set to 21739) but then things seem to work fine. ogg123 (using libao) is more picky, and just dies when it can't set the sampling rate it wants. Unfortunately, the Debian vorbis-tools package doesn't seem to have direct ALSA support compiled in, so I don't know if that would help or if it's the OSS emulation that is eventually my problem. I plan to keep hacking at this until I manage to put together a pipeline that uses ogg123 to decode the Ogg Vorbis file, and then either sox or aplay-0.5 to send the suitably converted data along to the sound card. (Yes, I have tried using sox to play the sample directly, and it thinks it's working, but only the occasional bit of fuzz comes out of the speakers.) PCMCIA (and Wireless Networking)There is very little to say about this. The early stages of the Debian install got PCMCIA working, and indeed I then installed over PCMCIA. It hasn't stopped working. I've used my wireless card in my laptop. The trick is editing the /etc/pcmcia/wireless.opts file to do what you need, if the default config doesn't work for you (which it may well, if you use an access point without an ESSID or key). The hard part is remembering to remove the bit near the top that the comments say you must remove in order to get anything else below to work.... You also need to install the wireless-tools deb, and make sure that you compiled the right module when you built your kernel. After that, it just sort of works. I haven't tried my SCSI card or modem in this laptop with the latest install yet, but I've used it before without a problem, so I'm not too terribly worried. I did add the following two lines to /etc/pcmcia/config.opts, to prevent the PCMCIA from using IRQs that the system otherwise needs (for the sound board and the floppy respectively), but may not have claimed due to modules not loaded: exclude irq 5 exclude irq 6 |
Last modified: 2003-February-3, by Rob Knop