I recently purchased a Dell Inspiron 8100 laptop from Dell's factory outlet store. I have certainly been very pleased with the machine so far, but installing Linux on it was not as straight forward as it might have been so I thought I would document my experience here. If you have any comments and suggestions, please feel free to e-mail me at: nathan [dot] dimmock [at] bcs.org.uk.
Update 11/12/2004: I recently re-installed using the new Debian installer.
I decided to install Debian GNU/Linux on the machine, mainly because I am now addicted to being able to type apt-get install package when I want a new piece of software installed and apt-get upgrade when I want to update every installed package. Debian comes in three flavours: stable; testing and unstable. The stable distribution is now quite old and while offering a stable distribution, most of the packages are several versions behind their current release. In unstable is what it says, a very rapidly changing collection of packages that have not been fully tested for compatibility with the rest of Debian, while testing offers a nice half way house with fairly up to date packages with most of the bugs worked out. Unfortunately, there is not currently an easy way to directly install testing on a system as only stable is officially supported. There are a number of unofficial ways to install testing but I could not get any of them to work so I installed a minimal potato system and then used apt to upgrade to testing at the first opportunity.
While I did hit a few problems unique to my particular configuration, I avoided many more problems due to the assistance of the following websites:
Unfortunately Windows XP comes pre-installed on a single NTFS partition which makes life difficult as there are no free tools that can resize NTFS partitions and I did not have the time to re-install WinXP so I invested in a copy of Partition Magic.
Update - 21/10/02: Rick Moen has been researching this problem and e-mailed me an excellent list of possible solutions.
|hda1||Primary||32.91||Dell Utility - for suspend-to-disk|
|hda5||Logical||12,584||FAT32 - for sharing data between XP and Linux as Linux cannot write to NTFS partitions|
|hda6||Logical||5000||Linux ext3 - root filespace|
|hda7||Logical||5000||Linux ext3 - /var|
|hda8||Logical||10,000||Linux ext3 - /usr|
|hda9||Logical||1000||Linux swap - double my RAM, although in retrospect 512MB would be fine.|
hda2 is bootable. Note: You should not install LILO into the MBR of your hard disk as this will break the suspend-to-disk functionality. The recommended work around is to create a small /boot partition before the windows partition, make it bootable and install LILO into there. This is easy if you are starting from a clean hard disk, but rather tricky if you are not. Therefore, create a boot floppy to use through out the install (an option on the Debian Installer menu), and see the of discussion booting below.
The first problem I hit was getting my network card (a PCMCIA
3COM FE575) recognised during the install so that I could do the
rest of the install over the network. Everything went fine until
I attempted to restart my newly installed base system, at which
point it would hang when attempting to load the PCMCIA
tools. The solution was to reboot using the Debian install
("rescue") disk and use the menu option to open a shell. I could
then mount my previously created root
partition and edit /target/etc/pcmcia/config.opts
(assuming you used the menu option to mount a previously
initialised partition) , replacing the line:
include port 0x100-0x4ff, port 0x800-0x8f, port 0xc00-0xcff
include port 0x100-0x4ff, port 0xc00-0xcff
I closed the shell, returning to the Debian installer menu, and selected the option to reboot my newly installed system from my boot floppy.
Once I had working base system, and had upgraded to Woody/testing, I decided it was time to configure X-Windows. This involved downloading drivers from nVIDIA's website which could only be compiled with the same version of the compiler as my kernel. Therefore it seemed like a good time to upgrade my kernel to a 2.4 one.
Compiling your own kernel is "easy when you know how" but not something to be undertaken lightly by a newbie! However, if you follow the kernel HOW-TO, installing your new kernel on a new floppy disk (so you can always go back to the old one if everything breaks!) you should be ok.
My kernel configuration file.
23/08/2003: I was having difficulty enabling DMA for my hard disk using a 2.4.21 kernel. Although it implies otherwise in the configure.help it seems that you need CONFIG_BLK_DEV_PIIX to enable DMA in 2.4.21-rc2 and later.
Under the standard Debian potato install kernel (2.2), my network card (3COM FE-575CT 10/100) was found under the PCMCIA Network option as 3c575_cb. Unfortunately I couldn't find this option in the 2.4 kernel tree as it is now supported as a hotpluggable PCI card using the 3c59x driver. All well and good, except the PCI hotplug code is listed as an EXPERIMENTAL option and since I was using make menuconfig (no X at this point, remember!) with "don't show experimental" options turned on, I couldn't find it. Even when I finally got the right modules compiled into the kernel, the driver still had to be manually inserted before networking would come up.
The required kernel modules are:
Some experimentation showed that this could be automated using the hotplug and kudzu Debian packages.
At this point, upgrading to Woody (aka testing) turned out to be a good idea as nVidia's drivers require a 2.4 kernel and XFree86 4.01 (or later). Download the files from from nVidia's website and follow the instructions. My XF86Config-4 file.
In my experience the nVidia drivers work very well (apart from the lack of decent power management support!) but there is one thing you should watch out for. If you recompile your kernel (or even install some new modules!) you will need to re-install the kernel module part of the driver.
TODO: Just about working for with some versions of the drivers. Configuration is very fiddly.
ACPI support remains very weak under Linux. You can enable it in the kernel, which does certain things such as power off the machine automatically when you shut down but I have yet to find any user space tools that allow you to suspend the machine, so I also have a kernel with APM support compiled in for when I am running on battery. A further problem with both APM and ACPI is that they cannot read the battery status, although if you are running the former you can use Fn-F3 to get a read out: for some reason this does not work under ACPI. (Update: APM will read the battery tus if you upgrade to BIOS A12.)
In any case, being able to suspend the machine is somewhat useless as nVIDIA's graphics driver does not support it and so causes all requests to be ignored while X is running. There is a workaround described here which seems to work very well except you have to turn off AGP support.
21/07/03: Although the APM hack allows the machine to be suspended, it is a bit of a pain not being able to use AGP. A friend told me about something called software suspend which does Suspend-to-Disk and claims to support broken drivers such as NVIDIAs. Anyway, I thought I would give it a go and upgrade to ACPI at the same time (not sure why - it seemed like a good idea at the time! :).
I haven't actually got software suspend working as I got distracted by upgrading my kernel to 2.6 instead, but I did get ACPI working on 2.4.20. (The reason I got distracted by linux-2.6.0-test1 is that I read some reports that ACPI didn't work very well on 2.4.21, although apparently those particular bugs are fixed in the 2.4.22-pre series.)
You need a patch from acpi.sourceforge.net and a "fixed" DSDT. Applying the DSDT is fiddly as a lot of the documenatation refers to hacking your own DSDT. The best source is Richard Black's HOWTO, but even that has lots of extra stuff in. In short, the following steps are required:
23/08/03: Software suspend under 2.4.21 works great when I'm not running X, but for some reason it doesn't shut off the power at the end of the hibernate sequence and a few seconds later starts the resume sequence. However, NVIDIA's latest driver(4496) now supports APM!!! This works fine for me under 2.4.21, although I couldn't get it to work with 2.4.20 and I haven't tested it with 2.6.x.
The builtin modem is a software-based, LT Modem (aka a winmodem). Fortunately there are drivers available which work very well. Note: A Debian package is available, but this will not work if you are using a custom build kernel (which you probably are if you've been following this guide!). Download the .tar.gz version: the install is still very painless.
As I stated earlier, the conventional approach to dual-booting is to install LILO into the MBR of your first hard disk and have it present you with a menu when you start your computer. Unfortunately, this will not work if you want to retain the ability to suspend-to-disk, so I decided to use the WindowsXP bootloader to dual boot my operating systems.
You can use the Debian Rescue disk to (re)boot your system
until you compile your own kernel, or use the option in the Debian
Installer menu to "Create a BootDisk". Once you have your new kernel,
the easiest way to make a boot disk is probably to compile your
kernel directly onto a floppy disk using the make bzdisk
command. You can also make a GRUB boot disk:
% grub-install --root-directory=/boot /dev/fd0.
See the GRUB documentation for more details.
This is a small Debian package of tools written for Dell laptops. These do useful things such as monitor the temperature, control the fans and make the volume buttons work. I find it easiest to run these programs at startup using a script in /etc/init.d/ (symlinked to /etc/rc2.d/S90i8kutils):
#!/bin/sh echo "Starting i8kutils" i8kmon -d & i8kbuttons -u "aumix -v +10" -d "aumix -v -10" -r 100 &
You'll need to install the aumix package for this to work. The play/stop/prev/next buttons next to the volume keys can be used to control xmms using the sawfish-xmms package. First map the keycodes to symbols that sawfish can process, by putting the following in your /etc/X11/Xmodmap:
! Multimedia buttons on Inspiron 8000, used by sawfish to control xmms keycode 129 = F31 keycode 130 = F32 keycode 131 = F33 keycode 132 = F34 ! Fn key and Volume buttons, available only if SMM kbd handling is disabled keycode 137 = F27 keycode 138 = F28 keycode 139 = F29
Restart X and you can now assign actions to the keys F31-F34 using the sawfish configuration applet. If you have sawfish-xmms installed, then "Xmms Stop" and other commands will be available in that list.
Update - 25/01/2002: Alvaro Ortega sent me this really cool script which draws a TV-style volume meter on the screen when press the volume buttons. Cheers, Alvaro!
As you might have seen from my XFree configuration I have both the notebook's touchpad and a USB mouse configured for use in X. For this to work properly you need support for USB in your kernel (or compiled as a module). I found the UHCI (Intel PIIX4, VIA, ...) driver worked well on my notebook, plus the relevant USB HID support modules.
You can also configure GPM (console mouse server) to work with
both the touchpad and the USB mouse.
device=/dev/psaux responsiveness= repeat_type= type=ps2 append="-M -m /dev/input/mice -t imps2"
Unfortunately you'll need to disable gpm to use the touchpad under X.
25/01/03: A few weeks ago, when I resumed from sleep mode, both fans came on at full-speed and refused to stay off if I turned them off using i8kfan. The problem seemed to be that the CPU temperature was being read as 85, despite the machine being stone cold. Rebooting did not help, but after a large amount of googling, I discovered that pressing Fn-z caused the correct temperature to be reported and everything was fine again.
28/04/03: I upgraded to the A12 BIOS a few days ago and that brought two noticeable improvements:
Possibly quite coincidentally my system clock has also recently started losing time (about 1 min every hour) despite ntp running. This might be entirely unrelated (I've also upgraded the kernel recently) but it's worth looking out for. (Please let me know if you have any similar experiences!)
21/07/03: It turns out that the clock problem is actually due to reads of /proc/apm cause interrupts to be lost. Because the GNOME battery monitor polls this file every second or so, this was causing my clock drift - turning off the battery monitor solved the problem! I have subsequently upgraded to BIOS A15 to try and get ACPI working (seeing Power Management section) and this also seems to work fine.
Note: At the time I installed my laptop, the current version of Debian Linux was 2.2 (potato) which caused some unique problems, such as the graphics card not working with the version of X in stable. Debian Linux r3.0 was released in summer 2002 and I have updated this section to reflect the fact that "woody" is now "stable" and "testing" is called "sarge".
Once you have installed and configured the base system, you will be given the option to configure the APT tool (section 7.27 of the Debian install manual). If you are doing a network install, select your network sources as usual, but then before choosing your packages, switch to a virtual console, login and edit the file: /etc/apt/sources.list, replacing every occurence of "stable" (or "woody") with "testing".
Alternatively, choose your packages as normal, then once the install is complete, login, edit /etc/apt/sources.list as above and then run (as root) "apt-get dist-upgrade". This is slightly slower than the first method as you have to install all the stable packages and then download and install the testing ones, but the end result is the same.
There is an option to do this from the Debian Installer menu. It presents you with a list of hard disks and partitions, so you'll need to remember which one is which from when you created them. Remember to unmount your partitions again before you reboot.
Return to Home Page
Last updated: 2004-12-11 21:55