Mini-Kinda Howto:
Chembook 2020: The Linux Install :)

Last Updated 6-17-02

Similar Laptops

    The Chembook 2020 is a VAR rebranding of the Compal N20U. The Chem USA people just install the CPU & hard drive, and do the tech support. This is the right page for you to check out if you have these (identical) laptops:

Quickie Hardware Specs

    The N20U comes with an ATI Rage Mobility M1 AGP2X (8 MB RAM), Crystal SoundFusion CS4281 and an LT Winmodem. Natural resolution of 1024x768. My particular laptop is equipped with 192 MB RAM, 20GB HD, and a 700MHz PIII.
Update: I recently upgraded to a 40GB hard drive. Specifically, I got the IBM 40GB. The bios reacted fine, no hard drive problems to speak of. And the hard drive is pretty quiet. After I got it I started noticing the "latent" noise of the laptop. To save you some trouble when upgrading hard drives, I suggest you look into getting a copy of Norton Ghost. I tried Powerquest Partion Magic, and Powerquest DriveImage. End result: A great deal pain and frustration, nothing worked. Tech support from Powerquest was of no help to me either.
Update: Details of a failed experiment installing a 60 GB disk.

About Me and This Document

    Disclaimer: I am not a linux guru. I'm a coder, and I really like having a UNIX style development environment around. I've been using Linux for years now, but still consider myself a relative newbie. Case in point - setting up this laptop was the first time I've recompiled a Linux kernel without handholding. So, this guide is aimed to helping someone like me. But, also, be warned - I don't really know what I'm doing. I think I'm pretty good at using the Linux environment - I just don't know much about administering one. I'll try to be as candid as possible so you know when I know what I'm talking about, and when I'm talking out of my ass. :)
    If you find any errors/ommissions, please don't hesitate to contact me. Same goes if you figure out any of my problems, or how to set up something that I didn't. I can be found at

Quickie Review

    Kick ass laptop. Can't do any better in this price class. (Jan '01) The casing is pretty sturdy, the dimensions and weight are about right.
    My search criteria: small, fullsize keyboards, internal ethernet/modem. I figured that, in 3 years, this laptop is gonna be bigtime obsolete. I might as well have a light obsolete laptop, instead of a heavy one. And it doesn't hurt to have an obsolete laptop that plays MP3s and DVDs :) I'm also a big fan of the all in one solution in a box. Plus, it's pretty sexy as far as laptops go ;)
    Winning Features: light, thin, ultrabay, 13.3" display, mouse buttons directly below the keyboard, VGA out, USB port, PS/2 port, serial port, parallel port (all built into the notebook), internal modem & ethernet. Also, it's pretty quiet as far as laptops go.
    Losing Features: Outboard CD-ROM, keyboard isn't so good. The thing that bugs me the most is the tilde (~) key being in the top right hand side of the keyboard. Other than that, the layout is pretty reasonable, although it doesn't compare to a DELL or IBM keyboard. The keyboard DOES have a little flex to it, but it's not bad at all. Not as bad as the reviews would have you believe, anyways. I don't mind the CD-ROM not being internal - I just wish I could slot two batteries into my laptop.
    Recomendations: Make SURE you go for the 192 MB option. I can't underscore this point enough. With this amount of memory, I almost never have to swap, and price/performance drops off very quickly with more memory. (If you run VMWare, get as much memory as you can afford.)
    As far as design goes, I think the idea behind this laptop was great. The manufacturing seems to leave a little to be desired, though. 1 year later, almost all the little rubber feet seem to have fallen off. The biggest problem with my laptop is that there's a cold solder joint in my laptop, where the A/C power comes on. Can't accept A/C power, unless connected through the ultrabase. (Both of the N20U's that I have exhibit this problem). One of the N20U's I have seems to crash a lot when it gets hot.

Operating Systems

    I'm a coder, so I want environments that are conductive to programming, but are easy to install. I chose Win2K and Linux-Mandrake 7.2. I also tried Debian (Mega not friendly - couldn't figure out how to set up X Win) and RedHat 6.2, but I settled on Mandrake because of it's simple installation, and manageability. I didn't try RH7.0, because of bug issues, and the general rule of never using a Redhat *.0 release.
    After this experience, I'm a sworn Mandrake user for life. All the bells and whistles, with a minimum of hassle. (as far as Linux goes)
    Handy tip: Give Mandrake a 2GB root partition to install to. Mandrake, by default is a very very FAT install. Mine came to a total of about 1.1GB. [sigh] I remember my first Linux install. 300MB filesystem, including all X, swap, /usr and /home partititions + data. And that was considered a fat install. Now, just my KDE desktop is 300 MB. Yeesh. I should really trim the fat.

Installation Tips for Other OSs

    For Redhat, the graphical install goofs up. Type "text" at the boot prompt to get the text mode install. This seems to be a trait common to all ATI M1 video cards.
UPDATE: wrote me to let me know that this is no longer a problem with Redhat 7.3.
    If you're installing Windows, install that first, because Windows will always clobber the bootloader on the Master Boot Record (MBR). If you're installing WinNT/Win2k make sure you edit the c:\boot.ini before you install linux. Add in something like this to the bottom:

multi(0)disk(0)rdisk(0)partition(0)\WINNT="win partition 0" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINNT="win partition 1" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="win partition 2" /fastdetect
... (and so on)
because you never know where your windows partition is gonna go after you install linux.
    If you still screw up your boot sector, and you're using win2k, here's a neat trick I discovered by accident. Boot from the w2k CD, and go into recover mode. There's some sort of console mode that comes in really handy. Look into these two commands:
    fixmbr \Device\HardDisk0\Partition1
    fixboot c:
    To get the graphics card going well ("well" is used rather loosely around here) under Win2K (and probably all other Windoze operating systems) grab the ATI Mobility-M/M1 video driver for IBM X-20 series laptops from IBM's website. The Compal drivers provided with the laptop are notoriously out of date. The drivers provided at IBM's website will give you (buggy, but working) implementations of OpenGL and Direct X. (They're not perfect, but they'll be good enough to play Quake 3 or Counter-strike(!) and do a little graphics development. (Incidentally, if anyone ever gets Half-Life/Counter-Strike working in OpenGL mode, please let me know)

Goals of the Linux install

These are the goals I had in mind when I did this install. Decreasing order of importance:

Getting the Graphics Card Running

    Well, the Mandrake installer detects the card just fine. (Mach64 server) You can choose either XFree 3.3.6 (using 3D acceleration), or XFree 4.0.1. I recommend the latter. Something is kinda funny with the 3D hardware on the M-1 card. Some things don't behave correctly, and it doesn't seem to want to do lighting at all. (This is the behaviour on Win2K, also) More importantly, XFree 3.3.6 doesn't seem to take too kindly to being suspended. (Fn-Suspend, or apm --suspend) All is well with XFree 4.0.1. 3D in software is a bit slow, but it works reasonably well.
    I've been able to get some OpenGL code working on this machine, but I haven't been able to do anything terribly non-trivial going. ie. glTron works, but no tuxracer or quake3. I've messed around with the UTAH GLX crap, and so on, but to no avail. If ANYONE figures out how to get Quake3 working on this thing, PLEASE drop me a line. :)
    The other half of getting the graphics card up and running is setting up the console mode. The goal is to run the default console in the display's natural resolution (1024x768). Mandrake, by default, sets up the console to run in 640x480 raster graphics mode, which is kind of ugly on our display. The solution: (incidentally, this makes the assumption you're using LILO, not GRUB)
    Go to DrakConf->LinuxConf->boot mode->LILO linux configurations->linux and set the VGA mode to blank. This tells the linux profile to accept the default VGA mode. Then, go to the LILO defaults setting, and set the VGA mode to 791 (1024x768, 16-bit colour). How I figured out this number, I don't know. If you know how to calculate these VGA mode numbers, please tell me :)
    Make sure you reboot after doing this, 'cuz it can screw up LILO if you try and modify it without rebooting.

Getting Ethernet Running

    Mandrake detects the card just fine. No problems. Just for the record, I'm using the EtherExpressPro/100 (eepro100.o) device driver. You're left to your own devices to configure your network though.
    If anyone's figure out how to set up and use profiles, let me know.

Getting The Soundcard Running

    The soundcard in the chembook is the Cirrus Logic Crystal CS4281. Lucky for me, this card is first supported on Kernel 2.2.17, which ships with Mandrake 7.2. Unfortunately, all the regular tools (HardDrake, sndconf) don't support this card yet. No problem, though. We can load the driver (cs4281.o) with insmod, or modprobe.
    To have the sound driver loaded at boot time, put this in your /etc/modules.conf:

    alias sound cs4281
And for your convenience, you may want to put this in your .bashrc:
    alias startsound='insmod cs4281 ; aumix -L'
    alias stopsound='rmmod cs4281'


    Worked by default. I have no idea how to get hibernate support working. There's one screwy thing though. I like my laptop to do nothing (just turn off LCD) when you close the lid. This behaviour can be toggled in the BIOS. If you suspend the computer, and then close the lid, Linux gets woken up by this event. This isn't a problem in Windows, because Windows doesn't respect the BIOS settings. It has its own defined behaviour when reacting to lid-closed events.
The two (lousy) workarounds:
    Suspend the computer and quickly close the lid.
    Close the lid almost all the way (so the LCD turns off) and then apm --suspend.
(Make sure you use XFree 4.0.1, as mentioned above.)
Update: I got an email from Ariel Salomon, who explained how he got hibernate working with Linux. You can read our brief discussion.
Update 2: I did it, worked like a charm. I used the phdisk.exe tool provided on the drivers disk. If you don't have a DOS lying around, like me, it'll save you a lot of pain to use this floppy drive image. (Use unix' "dd" dd utility to dump this thing to a floppy). If you don't have a floppy drive, like me, check out the Linux bootdisk HOWTO to burn that sucker onto a bootable CD-ROM.
Note: I've heard that phdisk.exe is not a reliable tool. It's been described as "playing russian roulette with your partition table". I took the plunge because I had an empty (no data) hard drive. It worked for me. If you dislike the idea of having your hard drive wiped, you may want to look into the lphdisk utility.

Winmodem Support

    The LT winmodem install was actually surprisingly easy. Check out the Linmodem HOWTO. They do a better job of explaining things than I could ever do. Make sure to get the modified partial open-source driver, though.
    Linux Newbie tip: You need the PPP kernel driver (ppp.o) and the PPP daemon (pppd) to set up a PPP connection for the modem. It took me a few hours of head-scratching to figure that one out :)
    Just to note: I used kppp to configure my dial-up. Another tip: If things don't work, try again, as root. Also, make sure you "install" the driver module with ltinst2. I've been able to get download speeds of up to 8KB/s.

Compiling a Kernel

    I wanted to use Kernel 2.2.18 instead of 2.2.17mdk, because .18 has a few bugfixes to the cs4281 driver. Other than that, there's no really good reason to upgrade kernels. If you're new to this whole compiling a kernel thing, like me, then you might want try out "make xconfig " instead of "make config" like the Kernel HOWTO suggests. Here's the config file for my kernel. It's a bit leaner than the default MDK kernel, too.
    Don't quote me on this, but I think the 2.2.18 code has more mature USB stuffs, too. My understanding is that Mandrake did a backport of the USB stuffs for the 2.2.17MDK kernel, and the 2.2.18 has the "official" backport of the USB stuffs.
    Hint: Use DrakeLogo to configure the startup image.
Update: I recently decided I needed kernel 2.4.18, so I just upgraded to that. The kicker is now I have PCMCIA working. Here's the config file.

Hard Drive tips

    Starting with the 2.2 series kernels, I think, there's support for read only NTFS partitions. Ultra-handy for me. Here's an excerpt from my /etc/fstab: (I created an NTFS user group (GID 506) so that "priveledged" users could read from my NTFS drives, and R/W to my FAT32 partition.)
/dev/hda6 /mnt/winshare vfat user,exec,umask=0007,gid=506 0 0
/dev/hda1 /mnt/ntfs1 ntfs ro,umask=0007,gid=506 0 0
/dev/hda5 /mnt/ntfs2 ntfs ro,umask=0007,gid=506 0 0
    Tip: Check out the cfdisk command to get a look at your hard drives. (be careful! Don't use the cursor keys - they seem to act unpredictably in certain terminals)
    Also, I should get around to looking at playing with hdparm to get better performance on the UDMA33 hard drive.....
UPDATE: I haven't gotten a chance to take a look at this, but the Ext2Shell project shows a lot of promise. It allows you to access your ext2/ext3 partitions from Win(9x/2000/XP).


Updated: I got PCMCIA working when I upgraded to the 2.4.18 kernel. I needed it for my Orinoco/Lucent Wavelan card. In summary, I used the pcmcia-cs toolkit, which run mostly in user space.
    The documentation available in their website is more detailed/accurate than mine, so I'll just quickly summarize what I did. First, I compiled my kernel using the 2.4.18 configuration listed above. Second, I installed the pcmcia-cs toolkit. Everything else after that was magic - it just worked. ifconfig to pring up eth1, dhcpcd and I'm on the WaveLAN.
    The key thing seems to be to *not* compile PCMCIA into the kernel. (As crazy as this sounds) There's a longer, and more convoluted explanation that I could get into, but if you want the goods, just check out the pcmcia-cs website.
    Thanks to Buck for figuring this out for me.

Everything Else

    Basically, at this point, I ran out of ambition. I have no idea if USB/IR/DVD/CD Burning works, I've never tried. I have no reason to believe that it does or doesn't work at this point. Heck, I don't even know if my CD-ROM still works after all this finangling that I did. If you figure any of this stuff out, drop me a line.
    Well, that's it. Good luck with your Linux install :) Be sure to check out the Laptop HOWTO and the Linux on Laptops survey. If you're hoping to try out USB, (if it doesn't already work) be sure to check out the Linux USB guide. Oh, yeah, and before I forget, I heard somewhere that if you want to get the IR port working, you have to go into the BIOS and change it to IrDA. (BIOS defaults to FIR.)

Other links

  • Another web page devoted to Linux on the Compal N20U
  • My Website