Dell Latitude D820 laptop with dual boot MS Windows XP + Fedora Core 5 linux

Michael J. McGuffin, document mostly written August 2006, updated in September 2006

This document started out as a personal log, and later I decided to make it publicly available. Note that I have very little or no prior experience with Fedora, the yum package manager, the grub loader, SELinux, or wireless networking under linux; and I also prefer to not use GNOME or KDE and instead have my own ~/.xsession file and do some things manually (like mounting USB devices, or setting up Dvorak and accented characters with xmodmap); therefore the document goes into a little more detail about certain things than may be typical in reports of getting linux to work on laptops.

This is the 5th time in 2006 that I've had to install linux on a laptop, and although I'm a little better at it now, it's still a major chore that requires many hours.

Acknowledgements: Thanks to Derrick Moser for his repeated and invaluable help with this installation and previous ones, where I've tried to get the "perfect" linux box set up :)

Disclaimer: The information below is provided "as is", with no warranty, implied or otherwise. Use this information at your own risk.


Hardware Specs:
   Dell Latitude D820 laptop
   weight: ~ 6.5 pounds
   CPU: Intel Centrino Duo (dual core) 1.83 GHz
   RAM: 2 GB
   screen: 15.4 inch WSXGA+ LCD, 1680x1050 pixels
   video card: nVidia Quadro NVS 120M with 512 MB memory
   HDD: 100 GB, 7200 RPM
   CD/DVD burner ("8x DVD+/-RW")
   ethernet card: Broadcom
   wireless network card: Intel 3945
      (IMPORTANT: get this instead of the Broadcom wireless card;
      Broadcom isn't well supported by linux from what I understand)
   Bluetooth
   soundcard: SigmaTel
   3 year warranty with protection against accidental damage
   primary battery: 9 cell
   additional "Media Bay" battery: 6 cell
      (can be slipped in to the bay after removing the CD/DVD)

   The machine arrived via Purolator, with MS Windows XP pre-installed.

Status of my system under Fedora Core 5:
   CPU - an "smp" (symmetric multi processor) kernel was installed out of the
      box and seems to work fine
   screen, video card - 800x600 without hardware acceleration
      out of the box; I got full resolution and the nVidia driver working
      after following the instructions below
   soundcard - works after doing "yum update" (see below)
      However when plugging/unplugging headphones, the speakers are
      supposed to automatically mute or unmute, and sometimes this
      doesn't work.  Sometimes I have sound coming out of both or neither.
      My current solution is to reboot when this happens :(
   ethernet card - works out of the box
   plugging / unplugging generic USB keyboard and mouse - works out of the box,
      as does the scroll wheel on mouse
   plugging / unplugging USB memory key - works out of the box
   suspend - doesn't work
   wireless - doesn't seem to work yet, but I haven't tried very hard.
      Running /sbin/iwconfig outputs
         lo        no wireless extensions.

         eth0      no wireless extensions.

         sit0      no wireless extensions.
   bluetooth - untested

Comments: I chose Dell because my previous laptop was a Dell
and had served me well.
I chose the above model because I wanted an nVidia card,
so I could expect the graphics card to work under linux
(I have no previous experience with ATI drivers)
and because I may do some graphics programming involving nVidia
extensions to OpenGL.
Given these constraints, I opted for the Latitude D820,
with the best nVidia card available, the largest amount of RAM available,
and the largest and fastest HDD available for the Latitude D820.
I didn't bother paying an extra ~270 $ CAN for the 2.16 GHz
CPU that was available because I suspect the improvement
in performance would not have been worth the extra cost.
To order, I went on the dell.ca website, chose the specs I wanted,
and then phoned Dell's 800 number and managed to barter the price
down a bit.

One drag about the machine is it has a vent on the bottom
of the laptop.  The vent is along an edge of the bottom,
so I can still stack the laptop on top of a small book
or pile of small books, but I can't plop the laptop onto
a bed because then the vent is blocked.
The bottom also gets too hot to put on bare thighs,
even when plugged in to AC power.

Another minor drag is that the design of the touchpad's lower
buttons prevents me from hitting them with the side of my thumb,
as I could on the Dell Inspiron 8200.  The redundant upper bottons,
on the other hand, sometimes don't work the first time they
are pressed (this occurs with MS Windows XP as well).

Note that
   http://mikehardy.net/linux_latitude_d800/
reports problems with burn-in
("Be very careful with the brightest setting ...").
I don't know if this applies to my machine,
but I've been cautious and have been using it at 2 notches
below the max brightness.


=====================================================================

How I set up the machine to be dual boot MS Windows XP / linux Fedora Core 5:

- Boot from MS Windows XP installation CD.
- The XP installation procedure involves a step
  where the user can repartition the harddrive.
  During this step, delete the ~95 GB partition on the HDD
  containing the pre-installed copy of XP,
  and create a 60 GB partition to contain a new installation of XP.
  Leave the remaining ~35 GB on the HDD unpartitioned for now,
  to be partitioned later by the linux installer.
  (Of course, change these numbers to suit your needs.)
- Install XP in the newly created 60 GB partition.
  You'll also have to install the device drivers for XP
  that are on the Dell Resource CD for nVidia, soundcard,
  ethernet card, wireless, bluetooth, modem, etc.


- Install Fedora Core 5, allowing the installation procedure
  to create a default partitioning in the remaining unpartitioned
  space of the HDD.

- During the installation of Fedora Core 5,
  - I chose US International as my keyboard type,
    and later found that I was able to enter accented characters,
    e.g. hitting the ` a keys would produce an a with a grave accent,
    and hitting the ' e keys would produce an e with an acute accent.
    If you don't want this behaviour, you'll probably want to choose
    US English as the keyboard type.
    You can change your mind later in GNOME with System/Administration/Keyboard
    or by running system-config-keyboard

    (Following more experimentation, it seems that the keys
        ` ' " ^ ~
     followed by a vowel produce the accented character,
     hitting ' twice produces an acute accent,
     hitting RightAlt+' produces a single quote,
     hitting " twice produces an umlaut,
     hitting Shift+RightAlt+" produces a double quote,
     hitting RightAlt+, produces a c with a cedilla,
     and hitting Shift+RightAlt+< produces a C with a cedilla.
     Furthermore, by playing around with xmodmap,
     I'm able to change this behaviour and use RightAlt and Shift+RightAlt
     to access any 2 additional characters, accents, or "dead keys"
     for each keyboard key.
     If I switch to a US English keyboard, however,
     then RightAlt ceases to allow me to access such additional characters.)
  - Do *not* specify that the system clock store time in UTC,
    because XP assumes the clock stores local time.
  - I disabled SELinux, because in the past after installing an
    earlier version of Fedora Core (4 I think),
    SELinux prevented Java from working for some reason,
    and I want to avoid further hassles.
    I'm not familiar with SELinux and don't want
    to ever have to worry about it.
  - I think there's a step where you can specify the desired hostname
    for the machine, but I skipped over that step by accident,
    and had to set the hostname after installation, by logging
    in to a GNOME session and selecting
       System/Administration/Network, DNS tab
    (If you don't have GNOME or don't want to run it,
    try running system-config-network instead, and selecting the DNS tab.)
    Note that this caused /etc/hosts to be updated automatically
    with the new hostname.
  - Carefully go through all the optional packages to install,
    making sure you get all the ones you'll need or want.
    It can be tough doing this if you don't know what's necessary,
    but if you miss something you may need to install it later,
    which can be a minor hassle -- I find it's worth going through
    every single package at installation time rather than installing packages
    later whenever they're needed.
    Pay attention to development tools and libraries (e.g. *-devel packages),
    command line utilities, and any other software that you're
    accustomed to and would expect to be included in your installation;
    some packages you might think of as standard
    may not be installed by default unless you explicitly select them.
    Personally, when in doubt, I select more packages for installation,
    and only deselect ones that I *know* I won't need,
    because there's plenty of disk space on the HDD.
    (After completing my installation, which included many packages,
    only about 4 GB of HDD space was used up by the system.)

- After booting up linux, and logging in,
  and getting internet connectivity, do

    su
    yum update   (this updates *all* packages, including your kernel,
                 by fetching them from the internet, and takes a while)

  Reboot.  Notice that the grub loader allows you to boot either
  with the updated kernel or the old one
  (in my case, these are 2.6.17-1.2174_FC5smp and 2.6.15-1.2054_FC5smp
  respectively).

  With the new kernel, the SigmaTel soundcard should now work.

- Feel free to modify the boot loader settings by editing /etc/grub.conf

- Look under /etc/rc.d/rc5.d/ and disable services you don't need
  to plug potential security holes, and also to speed up the boot
  sequence.  I disabled
      S13portmap
      S14nfslock
      S25netfs
      S55sshd
      S80sendmail
      S95anacron
      S95atd
  I think services are started by some script that looks for symlinks
  under /etc/rc.d/rc5.d/ whose names are of the form S*
  I manually disable these things by prepending
  their name with a period, e.g.
     mv S80sendmail .S80sendmail
  That way an implicit record is kept for me of what's been disabled,
  and it's easy for me to reenable something at a later date
  if the need arises.

- Install nVidia driver.

  (Note: before doing anything below, create a backup of /etc/X11/xorg.conf )

  To do this, you could download the driver directly from nvidia.com
  and use their installation procedure, but this requires you to
  also download kernel source files to recompile the nVidia driver,
  and I found their installation procedure to be buggy and required
  me to manually fix some stuff.  Also, if you use their installation
  procedure, then the next time you do "yum update" you'll have to
  manually re-install the nvidia driver.

  An alternative is to use yum to get the driver from a repository
  called livna (see http://rpm.livna.org ) I recommend this course.
  First, you must add livna to the set of repositories that
  yum accesses when looking for a package.  This can be done by
  installing an rpm:
     rpm -ivh http://rpm.livna.org/livna-release-5.rpm
  This causes some files to be added to /etc/yum.repos.d/
  Next, yum can be used to install the nVidia driver from livna,
  however before doing so, to be cautious (I don't know if this
  is necessary) I first switched to a text-only console
  (with Ctrl-Alt-F3 (use Ctrl-Alt-F7 to switch back to X)),
  logged in as root, and brought down X with
     /sbin/init 3
  (Due to some bug, the above may leave your screen blank;
  just try hitting the Shift or Enter key or hitting Ctrl-Alt-F3 again
  to get back to the text-only console.)
  Now, with X down, I did
     yum install kmod-nvidia-smp
  and then
     /usr/sbin/nvidia-config-display enable
  (I don't know what the latter does or why it's necessary,
  but http://www.fedorafaq.org/ says to do it.)
  After that was complete, I brought X back up with
     /sbin/init 5
  but found that my screen was still not at full resolution :(
  Confirm that your /etc/X11/xorg.conf file now contains
     Load "glx"
  in the "Module" Section, and no longer contains
     Load "dri"
  in the same section, and furthermore that it contains
     Driver "nvidia"
  in the "Device" Section instead of
     Driver "nv"
  in the same section.
  I had to make one minor modification by hand to /etc/X11/xorg.conf :
  in the "Screen" Section, in the "Display" SubSection
  that has "Depth 24", I changed
     Modes "800x600" "640x480"
  to
     Modes "1680x1050" "1280x800" "800x600" "640x480"
  and rebooted.
  X was then running with my screen at full resolution :)

  You may find that every time you boot, a comment
  is inserted into your /etc/X11/xorg.conf file that looks like
     ### Comment all HorizSync and VertSync values to use DDC:
  To avoid having an unbounded number of these comments inserted
  over time, I found that simply commenting the HorizSync and VertRefresh
  lines in the "Monitor" Section seemed to stop more comments
  from being inserted, and seemed to have no ill effects.

- With the livna repository, there are some nice things that
  can be easily installed:
     yum install xmms        (to play audio files / music)
     yum install xmms-mp3    (to enable xmms to play mp3 files)
     yum install xmms-skins
     yum install mplayer     (to play movie files, DVDs, VCDs)
  I also tried
     yum install xmms-wma    (to enable xmms to play wma files)
  but that failed.  A google search for xmms-wma.rpm fedora core 5
  found
     xmms-wma-1.0.5-3.fc5.rf.i386.rpm
  at
     http://dries.ulyssis.org/rpm/packages/xmms-wma/info.html
  and I installed it with
     rpm -ivh xmms-wma-1.0.5-3.fc5.rf.i386.rpm

- Other stuff I installed
   yum install aterm      (a virtual terminal I sometimes use)
   yum install rxvt       (another virtual terminal I sometimes use)
   yum install gkrellm    (for monitoring battery, temperature, CPU usage, etc.)
   yum install octave     (a number-crunching package similar to matlab)
   yum install pine       (the email client)
   yum install xlockmore  (for xlock)
   yum install gv         (a postscript viewer)
   yum install banner     (an old UNIX utility for outputing large text)
   yum install latex2html (to convert LaTeX to HTML)
   yum install python-imaging  (for the Python Imaging Library (PIL))
   yum install ncftp      (to be able to perform recursive ftp'ing)

  On my former laptop(s), I would use xapm to monitor battery,
  but on this system it seems I can't use that, so instead
  I use gkrellm or simply do
     more /proc/acpi/battery/BAT*/*

  Similarly, I used to use xcalc as my calculator, but it now
  appears to be unavailable, but I can now use gcalctool
  instead.  (Actually, running python in interactive mode
  is even better for performing simple arithmetic calculations.)

  Finally, for controlling audio volume, I used to use aumix,
  which also appears to now be unavailable or obsolete,
  but now I can use alsamixer or gnome-volume-control instead.

- I downloaded a graphical memory monitor called "gmemusage"
  from
   http://www.highend3d.com/downloads/tools/os_utils/100.html

- To install Flash (for Mozilla), I ran a google search for
     download flash
  went to the top website found, downloaded a .tar.gz file,
  unpackaged it, and ran the script inside it as root.
  This caused 2 files to be added to
     /usr/lib/mozilla/plugins/
  and Flash now works in Mozilla.

- To install Java SDK + Java for applets in mozilla, I ran a google search for
     download jdk
  went to the top website found, downloaded
     jdk-1_5_0_06-linux-i586.bin
  then, as root,
     mkdir /opt/java
     cd /opt/java
     mv .../jdk-1_5_0_06-linux-i586.bin .
     sh jdk-1_5_0_06-linux-i586.bin
     cd /usr/lib/mozilla/plugins
     ln -s /opt/java/jdk1.5.0_06/jre/plugin/i386/ns7/libjavaplugin_oji.so .
  and Java applets now work in Mozilla.
  (For the reason why I chose to put java under /opt,
  see http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard )

  Then, after installing eclipse, to make it use the above Java installation,
  run eclipse and select
     Window/Prefences..., Java/Installed JREs,
  and hit the "Search" button to add a new JRE definition
  pointing to /opt/java/jdk1.5.0_06
  See also Help/Help Contents,
     Java Development User Guide/Getting Started
        /Basic Tutorial/Preparing the workbench

- When I tried to compile one of my own OpenGL / GLUT programs,
  I got an
     error: GL/glut.h: No such file or directory
  After doing
     yum install glut-devel
  which caused freeglut-devel-2.4.0-4 to be installed,
  I was able to compile and run the program just fine.

- To mount my MS Windows XP partition as read-only from linux,
  I did
     yum install kmod-ntfs-smp          (requires livna repository)
     mkdir /media/win
     fdisk -l
     mount /dev/sda2 /media/win -t ntfs -r -o umask=0222
  For more information, see
     http://www.fedorafaq.org/
     http://wiki.linux-ntfs.org/doku.php?id=ntfs-en#4.1_can_i_mount_an_ntfs_volume

  I think there's a way to add a line to /etc/fstab
  so that this gets mounted automatically whenever
  linux is booted, but I haven't bothered to figure out how.

  Update: I added these 2 lines to /etc/fstab
     # MS Windows XP partition
     /dev/sda2      /media/win    ntfs   ro,umask=0222,user,noauto  0 0
  and now I can mount the windows partition by invoking
     mount /media/win
  as a user, i.e. I don't have to be root to mount it.
  I think to have this mount automatically at boot time,
  removing the ",noauto" option would be enough.
  Do "man fstab" and "man mount" for more information.

- How to manually mount and unmount a USB storage device:
   mkdir /media/my_usb
   mount /dev/sdb1 /media/my_usb
   ...
   umount /media/my_usb
  I added these two lines to /etc/fstab
     # USB key
     /dev/sdb1      /media/my_usb   vfat   rw,user,noauto             0 0
  so that now I can mount a USB key by invoking
     mount /media/my_usb
  as a user, i.e. I don't have to be root to mount it.
  Do "man fstab" and "man mount" for more information.

- How to manually mount and unmount a CD ROM:
   mkdir /media/cdrom
   mount /dev/hdc /media/cdrom
   ...
   umount /media/cdrom

- If for some reason you need to get kernel source files,
  I think the command to use is

     yum install kernel-smp-devel

- I haven't tried yet to get wireless networking working ...
  If you want to try, check out
     http://www.linux-on-laptops.com/dell.html
        http://mysite.verizon.net/vze2j8bn/D820-FC5.html
     http://www.math.dartmouth.edu/~ahb/laptop_setup/

- Output from "/sbin/fdisk -l":

   Disk /dev/sda: 100.0 GB, 100030242816 bytes
   255 heads, 63 sectors/track, 12161 cylinders
   Units = cylinders of 16065 * 512 = 8225280 bytes

      Device Boot      Start         End      Blocks   Id  System
   /dev/sda1               1           7       56196   de  Dell Utility
   /dev/sda2   *           8        7656    61440592+   7  HPFS/NTFS
   /dev/sda3            7657        7669      104422+  83  Linux
   /dev/sda4            7670       12161    36081990    5  Extended
   /dev/sda5            7670       12161    36081958+  8e  Linux LVM

   Disk /dev/dm-0: 34.8 GB, 34829500416 bytes
   255 heads, 63 sectors/track, 4234 cylinders
   Units = cylinders of 16065 * 512 = 8225280 bytes

   Disk /dev/dm-0 doesn't contain a valid partition table

   Disk /dev/dm-1: 2080 MB, 2080374784 bytes
   255 heads, 63 sectors/track, 252 cylinders
   Units = cylinders of 16065 * 512 = 8225280 bytes

   Disk /dev/dm-1 doesn't contain a valid partition table

- Output from "cat /etc/fstab":

   /dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
   LABEL=/boot             /boot                   ext3    defaults        1 2
   devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
   tmpfs                   /dev/shm                tmpfs   defaults        0 0
   proc                    /proc                   proc    defaults        0 0
   sysfs                   /sys                    sysfs   defaults        0 0
   /dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
   # USB key
   /dev/sdb1               /media/usb1   vfat   rw,user,noauto             0 0
   # MS Windows XP partition
   /dev/sda2               /media/win    ntfs   ro,umask=0222,user,noauto  0 0

  (I addded the last 4 lines manually.)

- To read my linux partition from MS Windows XP, in the past I've
  used ltools, but with this system ltools didn't seem able to read
  the the "Linux LVM" partition reported by fdisk -l,
  so I ended up using explore2fs
  ( http://www.chrysocome.net/explore2fs ) instead.

- Adding a personal touch to your machine:
   - run "chfn" as root to give the root account a name,
     displayed when you "finger root"
   - if you use grub, edit the background image at /boot/grub/splash.xpm.gz