Linux on a Dell 300m
The 300m is a 3-pound laptop. It comes in a bright blue case, and
I've named mine "dartfrog" since its coloration resembles that of a
Dendrobates azureus.
Information about this machine on the Dell web site is
here. I ordered mine with the media base with CD-RW/DVD, 640MB memory,
40GB hard drive.
I found I'm not the first person to install Linux on this machine.
Read Mike Hoolehan's installation notes
here.
My initial Linux installation (fall 2003) was Red Hat 9. In December 2004,
I upgraded to Fedora Core 3.
Red Hat 9 Installation
Summary
Basic Red Hat 9 installation goes smoothly and most things can be made
to work without too much trouble. The things that definitely
do not work are any kind of sleep/suspend mode (at
least with a 2.4 kernel), and the built-in wireless card. I also
can't get the internal modem to work, but I'm not sure if that's my
fault or Dell's.
Disk partitioning
With a 40GB hard drive, I figured I might as well make my machine
dual-boot just for compatibility purposes. Defragmenting the disk in
Windows left some clutter on the disk and at least one unmovable file
towards the end of the C: partition, though, and since I know so
little about messing around with system stuff in Windows I decided it
would be easiest just to reinstall Windows from scratch in a smaller
partition, than to try to figure out how to move this stuff around so
I could split the existing partition non-destructively.
Reboot using the Windows XP reinstallation CD that came with the
machine; it gives you a menu for fiddling with disk partitions. I
created a 5 GB partition for Windows and left the rest of the disk
free for Linux. After the Windows XP installation disk finishes, pop
in the Dell drivers CD. You need to manually go down the list and
extract and install each driver and application (bleah). I got lazy
and skipped some of the diagnostics and documents. I'm not too likely
to ever use Windows for much of anything anyway.
Red Hat 9 installation
This went smoothly. I told it to install in the newly-created free
space on the disk, and used the auto-partitioning. But when I booted
up after installation, what the heck is this GUI it throws me into?
Bleah. I want a plain login shell on the console so that I can
install my own .xinitrc and the like. There's probably a better way
to disable this, but for now I went into /etc/inittab and edited the
default runlevel to 3 instead of 5.
At this point, I checked that the system boots both with and without the
docking base attached. (It was attached during installation, of course,
so that I could use the CD drive.)
XFree86 and display
I didn't have to do anything special for this. During the Red Hat
installation, I picked the "generic laptop display panel 1024x768" and
the defaults for everything else. It recognized the display card as
an Intel 852 and defaulted to 24-bit color.
One minor glitch: when you exit X, the console display is left with
some flickering horizontal lines on it.
Initial network configuration
The built-in Ethernet port (Broadcom 5705M) on the 300x does not work
until you download and install the driver for it, so there is a bit of
a chicken-and-egg problem with it. I used a PCMCIA ethernet card to
get started.
I have a DHCP server running on the gateway machine on my home network
(lilypad), so the first thing to do is edit /etc/hosts to add entries
both for the 300m itself and for the gateway machine.
127.0.0.1 localhost
0.0.0.0 dartfrog.localdomain dartfrog dartfrog.frogsonice.com
192.168.1.1 lilypad.localdomain lilypad lilypad.frogsonice.com
Then edit /etc/sysconfig/network to look like this:
NETWORKING=yes
FORWARD_IPV4=no
HOSTNAME=dartfrog
GATEWAY=lilypad
GATEWAYDEV=eth0
And /etc/sysconfig/network-scripts/ifcfg-eth0 like this:
DEVICE=eth0
USERCTL=no
ONBOOT=no
BOOTPROTO=dhcp
Reboot the machine, and it should come back knowing its name and able to
talk to the rest of the world.
Broadcom 5705M ethernet card
I followed Mike Hoolehan's
excellent notes on
how to install the driver for the Broadcom ethernet card.
Change the ONBOOT line in ifcfg-eth0 to yes. Pop
out the PCMCIA network card, plug the network cable into the built-in
RJ-45 slot instead, and reboot. When kudzu detects the new hardware,
tell it to re-use the existing network configuration.
Note: while there is a second RJ-45 port on the back of the docking
base, there is only one NIC, and while the machine is docked, the base
blocks access to the RJ-45 on the 300m itself.
ACPI support (2.4 kernel)
Mike Hoolehan's
instructions and patch
for rebuilding the kernel with ACPI support and a custom DSDT gave me
a kernel that produced errors during ACPI initialization, and then
wedged a little further on in the boot process. I found that the
problem is that, since my machine has more memory than Mike's, the
BIOS ACPI addresses that need to be hard-coded into the DSDT are
different on my machine. To solve this, I had to make my own custom
DSDT following the instructions in the
ACPI Howto.
You can download my original and hacked ASL files and
the compiled DSDT here.
I found through my experiments with ACPI that the BIOS does not
support the S1 sleep state. This was subsequently confirmed to me by
Dell technical support, who also say there are no plans release an
upgraded BIOS to fix this. Since the 2.4-series kernel doesn't
support S3 (suspend-to-RAM) or S4 (suspend-to-disk), therefore about
the only useful feature you get from installing ACPI in it is that the
system will power down by itself if you do shutdown -h. At
this point, I would say that if I were starting all over again, I
would not bother with installing this kernel patch at all.
There's a lot more information about ACPI at the
ACPI4Linux web site.
Swsusp
I tried installing swsusp
1.1-rc9 into my 2.4.22 kernel with the ACPI patches. Suspend seems to
work OK, but not resume -- it just hangs while trying to read
the saved data from the disk. Bleah. :-(
ACPI Support (2.6 kernel)
The 2.6 series kernel is supposed to include ACPI support for the S4
(suspend-to-disk) sleep state. I haven't had time to try this yet.
Modem
Windows says the internal modem is a Broadcom V.92 56K modem. Dell
technical support claims that this is the BCOM 421x modem for which
they have already released a Linux driver, but I haven't been able
to get it to work.
This is what I did to try to install it:
- Download the
source package for the driver.
- Unpack it with tar xzf. This creates a directory named
bcm4212-source containing a source RPM and a README file.
- Use rpm -i to install the source RPM. This step had me
confused for a while because I couldn't figure out where it was
installing the sources, but eventually I found it in
/usr/src/redhat/SOURCES/BCMSM-3.4.19.tar.gz.
- Unpack the above file with tar xzf. This creates a directory
called BCMSM-3.4.19; cd into it.
- Do make KERNEL_DIR=/usr/src/linux BCMSM.o.
I got a compilation error on lkvi.c that I was able to fix by
adding an implicit #include <linux/kernel.h> near the top
of the file.
- Try insmod BCMSM.o. Unfortunately, this gave me an error:
BCMSM.o: init_module: No such device
So, I'm kind of stuck on this. I'm wondering if this is really the
right driver after all. I have a PCMCIA modem
card that works fine so I will probably just use that unless/until
somebody else digs up a working driver for the internal modem.
Wireless card
Everybody says it doesn't work, so I'm not wasting my time trying. (Not
to mention, I don't have wireless access to try it out on.)
Maybe someday Intel will release a
Linux driver, though.
Fedora Core 3 Installation
Following Mike Hoolehan's
notes, I upgraded my laptop to run Fedora Core 3. As Mike noted, the
built-in Ethernet port is now recognized directly and there is a driver
for the wireless card.
ACPI
I haven't tried to mess with the ACPI configuration yet. One thing I did
notice is that shutdown -h now powers down the machine.
X/Touchpad problem
I had a problem when I fired up the default X configuration: the
touchpad was over-sensitive and jumpy, and the 3-button emulation
feature seemed to be broken (causing button events for all 3 buttons
when you pressed the left and right buttons simultaneously to emulate a
button 2 press). Eventually I figured out that there is a better X11 mouse
driver for the Synaptics touchpad. To enable it, go into your
/etc/X11/xorg.conf and make these changes:
Then restart your X server and you should be in business. The Synaptics
driver supports a bunch of options for customizing the sensitivity and speed,
but the defaults seem OK to me so I haven't tried to mess with it further.
Here is the web
site for the driver if you want more information.
Copyright (c) 2003-2004 Sandra J. Loosemore
Last modified: 24 Dec 2004