Linux on Mobile Computers
Just imagine the ability to pick up your Linux workstation and take it with you wherever you want to go. You can do it today. Linux can run smoothly on notebook hardware, taking full advantage of all the goodies that define mobile computing. Just as with desktop systems, however, there can also be challenges to overcome. Fortunately, extensive support for notebooks running Linux is becoming available as interest in seeing Linux on notebook computers continues to grow.
This article is not intended to be an in-depth aid to installation or configuration of Linux notebook systems. Such an article would be nearly impossible to write for desktop systems, and notebooks are no different. Rather, this article introduces both the present Linux desktop user and the Linux newcomer to the support that Linux offers for notebook hardware. Several on-line resources exist for more specific information beyond what is presented in this article, and they are mentioned below. The Linux Laptop Home Page collects pointers to all the information presented in this article and more, and is available at both http://www.cs.utexas.edu/users/kharker/linux-laptop/ (Figure 1) and http://www.redhat.com/linux-info/laptop/ (Figure 2).
Notebook computers can be quite different from desktop systems. One of the most important differences, when it comes to running Linux, is the process of integrating different hardware components. Desktop systems can be built by picking and choosing components that are known to work well with Linux. You can accessorize or replace unsupported hardware with the best cards and adaptors for your needs. Notebooks and laptops, however, are all-or-nothing packages. Aside from PCMCIA cards, there's very little you can do to customize your hardware configuration. There's also little you can do when it comes to controller chipsets or proprietary technologies—an unfortunate fact of life. Don't let this intimidate you, though; the vast majority of hardware on the market works quite well with Linux, and most of the rest works reasonably well with Linux.
Most notebooks have a similar feature set. At the time of this writing, only notebooks with Intel x86 family and compatible CPUs are capable of running Linux. The port to the PowerPC architecture may eventually support Linux. [Both the Linux/SPARC and Linux/Alpha ports have been run on laptops—ED]
Most notebooks feature keyboards with 85 keys, give or take a few, that are usually slightly smaller than those on desktop keyboards. Almost all notebooks come with PCMCIA drives capable of accepting two Type II or one Type III card. Most come with built-in 3.5" floppy drives and/or 5.25" CD-ROM drives. Displays vary widely in size, color depth, video memory, speed, and resolution. Many machines now come with integrated sound cards. Power management features are universal, but vary in implementation and effectiveness. Integrated pointer devices tend to have two buttons and come in three styles: trackballs, nub-shaped joysticks, and touchpads. Almost all notebooks feature a serial and parallel port, and offer some expandability or docking feature. Linux support exists for all these notebook features.
Installation of Linux on notebook computers should not be very much different from installing Linux on a desktop system. Most distributions let you choose from floppy, CD-ROM, hard disk, NFS, and even FTP installation sources. For the most part, choosing a suitable installation method for laptops is subject to the same criteria as for desktop systems.
There are a few exceptions, however. Some notebooks use external floppy disk drives, and there is really no standard interface for them. Most will allow you to boot and begin the installation process, but some do not support DMA transfer. Without DMA transfer capability, you may be able to boot and install from floppy, but the drive will not be useful for mounting other floppies.
Some distributions have boot disks that let you use a PCMCIA Ethernet card for NFS installation, assuming your card and PCMCIA controller are among those more commonly used. As with desktop systems, some early CD-ROM drives in notebooks used proprietary interfaces that are not supported by the Linux community. However, by carefully choosing industry-standard hardware, installing Linux on a notebook is no more or less of a task than it is on desktop systems.
PCMCIA is an acronym that stands for Personal Computer Memory Card International Association. Since this is somewhat awkward to pronounce, PCMCIA cards are also frequently referred to as PC Cards. Physically, PC Cards are about the same width and height as credit cards and only a few millimeters thick. They provide one of the most versatile ways of customizing your notebook computer, and they are not limited to memory cards.
Readily-available PCMCIA cards implement RAM, small hard disks, SCSI adaptors, fax modems, Ethernet, sound, additional I/O ports, and more. Nearly all the cards on the market today are “Type II” cards. A few larger cards, such as those that implement hard disks, are “Type III” cards, and are about twice as thick. Most PC notebooks come with a PCMCIA drive that can handle two Type II cards or a single Type III card. To use a PCMCIA card, your machine needs a PCMCIA drive and some form of “card and socket services” software. The real trick to using PCMCIA cards in Linux lies in the software.
Most notebooks that come with MS-DOS and MS-Windows installed also include the vendor's card-and-socket-services software. This layer of software facilitates communication between the operating system and the drive itself—recognizing when cards are inserted or removed and determining which device driver is associated with which card. In the Linux universe, this software is called Card Services for Linux, and is actively maintained by David Hinds. It is included in most of the popular distributions, including Slackware, Red Hat, Caldera, Yggdrasil, and many others. It is also available at ftp://hyper.stanford.edu/pub/pcmcia/ as well as the Sunsite and tsx-11 Linux archives. The latest version at the time of this writing is 2.8.x. The PCMCIA HOWTO is available on the World Wide Web at hyper.stanford.edu/pub/pcmcia/doc/PCMCIA-HOWTO.html and can also be found on the Linux Documentation Project home page.
Card Services for Linux supports all but a very few custom PCMCIA drives, which are documented in the HOWTO. The support for individual cards is a little less complete. PCMCIA cards are no different from any desktop expansion card in the sense that the card needs a device driver to interface the hardware to the operating system. And like desktop expansion cards, not all PCMCIA cards have device drivers written for Linux.
Fortunately, essentially all PCMCIA fax modems and PCMCIA serial port adaptors operate on the same interface and are therefore supported. At the time of this writing, over three dozen brands of PCMCIA Ethernet cards are supported, as are numerous FLASH/SRAM cards and SCSI cards. You can find a list of supported cards at David Hinds' Linux PCMCIA Information Page at hyper.stanford.edu/~dhinds/pcmcia/pcmcia.html. David Hinds also maintains a mailing list for announcements about updates to the Card Services package and device drivers. Information on subscribing to this service is also available on this page.
The Card Services package also comes with all the current device drivers and several utilities. The most important of these is Cardinfo, a small X11 application that reports on the present state of your card sockets: what is in them, if they are active, what IRQ and I/O ports they occupy and which device (i.e. /dev/cua0) they are using. This is a very useful utility for finding and resolving IRQ or I/O port conflicts.
The latest versions of most Linux distributions include Card Services, but if your distribution doesn't include it, you can install it yourself. To do so, you will need to use kernel 1.2.8/1.3.30 or higher, compiled with support for loadable kernel modules. You must also have the entire Linux source tree to compile the package. Installing Card Services on an existing Linux system is explained in detail in the PCMCIA HOWTO and in the readmes that come in the package. This includes detailed information to help you identify and work around any IRQ or I/O port conflicts. When running, the core PCMCIA module takes up about 48K of RAM.
Card Services for Linux supports hot-swapping cards, and loads and unloads the proper card-specific device driver modules as you insert and remove PCMCIA cards. The Card Services module can also work with the Linux Advanced Power Management driver to help conserve battery life when your PCMCIA drive is inactive.
For those who are interested in hacking, David Hinds also provides some hints and suggestions for writing and debugging PCMCIA card device drivers in his HOWTO and in the PCMCIA Programmer's Guide.