Linux on the Dell D800
This is a short page of 'stuff that works on my machine'.
For reference,
(blondie:fortin:~) lspci
00:00.0 Host bridge: Intel Corp. 82855PM Processor to I/O Controller (rev 03)
00:01.0 PCI bridge: Intel Corp. 82855PM Processor to AGP Controller (rev 03))
00:1d.0 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01))
00:1d.1 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01))
00:1d.2 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB 2.0 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corp. 82801 PCI Bridge (rev 81)
00:1f.0 ISA bridge: Intel Corp. 82801DBM LPC Interface Controller (rev 01)
00:1f.1 IDE interface: Intel Corp. 82801DBM (ICH4) Ultra ATA Storage Controller (rev 01)
00:1f.5 Multimedia audio controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
00:1f.6 Modem: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)
01:00.0 VGA compatible controller: nVidia Corporation NV28 [GeForce4 Ti 4200 Go AGP 8x] (rev a1)
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5705M Gigabit Ethernet (rev 01)
02:01.0 CardBus bridge: Texas Instruments: Unknown device ac47 (rev 01)
02:01.1 CardBus bridge: Texas Instruments: Unknown device ac4a (rev 01)
02:01.2 FireWire (IEEE 1394): Texas Instruments: Unknown device 802b
02:01.3 System peripheral: Texas Instruments: Unknown device 8204
02:03.0 Network controller: Broadcom Corporation BCM4309 802.11a/b/g (rev 02)
My D800 was installed with Fedora Core 2, and most everything worked out of the box. What needed special attention was:
- Kernel For some reason, after a certain point, the Fedora kernels wouldn't allow the nvidia binary drivers to build
properly. Therefore, I've been compiling a vanila kernel, from kernel.org using
this .config script. Just download the kernel form the above site ( I'm currently using
2.6.9 ), unpack it to /usr/src, add some links ( ln -s /usr/src/linux-2.6.9 /usr/src/linux-2.6, and ln -s
/usr/src/linux-2.6 /usr/src/linux ), and copy the config file to /usr/src/linux as ".config".
Another problem with the kernel builds for the d800 involves a change to the most recent versions that again broke the
nvidia driver. Before compiling the kernel, apply this nvidia compatability patch by cd /usr/src/linux
and patch -p1 < nvidia_compat.diff. Then just
make oldconfig
make
make modules_install
make install
- Nvidia binary drivers After you take care of the above, grab the binary drivers from
here.
I also took the advice at nvnews.net to unpack and patch
the nvidia drivers, for machines running 2.6 with PCI based video cards. The patch is here.
To apply and build ( from zander@nvnews )
sh /path/to/NVIDIA-Linux-x86-1.0-6629-pkg1.run --extract-only
cd NVIDIA-Linux-x86-1.0-6629-pkg1
patch -p0 < /path/to/NVIDIA_kernel-1.0-6629-1155389.diff.txt
./nvidia-installer
Note that the driver I found available from nvidia.com was NVIDIA-Linux-x86-1.0-6629-pkg1.run, not NVIDIA-Linux-x86-1.0-6629-pkg0.run, so I
changed the instruction lines above.
Once the module builds and installs, this xorg.conf file should be place in /etc/X11. It defines two layouts,
one called LCD, for the flat panel display, and another called CRT, for an attached monitor. You will have to replace the parameters
in the CRT section to reflect the type of monitor you have attached to your machine. I start X with these lines at the end of my .login
file ( since my shell is tcsh )
echo -n "starting X11 (Control-C to interrupt)"
sleep 1
if ( -f .startx_errors ) then
/bin/rm -f .startx_errors
endif
#set dock_eth=`/sbin/lspci | grep 02:00.0`
#if ( "" == $dock_eth ) then
# echo Undocked, using LCD.
/usr/X11R6/bin/startx -- -layout LCD >& .startx_errors
#else
# echo Docked, using Monitor.
# /usr/X11R6/bin/startx -- -layout CRT >& .startx_errors
#endif
Notice that I previously determined docked/undocked status automatically, using the output of lspci. Something
in the newer kernels has prevented that from happening properly, so that's commented out, and it simply defaults to
undocked mode, and if I am using an
external monitor, I hit control-c and just start X by hand, using startx -- -layout CRT.
- Wireless The Broadcom Corporation BCM4309 802.11a/b/g on the D800 is not supported by the linux kernel
yet. However, using ndiswrapper, I wrapped the binary windows driver, bcmwl5,
by placing the files bcmwl5.sys and bcmwl5.inf in /etc/ndiswrapper/bcmwl5, and loading the driver by adding modprobe ndiswrapper
to /etc/rc.d/rc.local. Since I don't know the license details on these files, you'll need to hunt them on the net yourself,
perhaps starting with the windows media shipped with the laptop ( mine was originally dual-boot. Before I scragged the 'doze side,
I saved a copy of these files ).
Once this was setup, I tied into my home net, using static IPs, using a shell script, like this ...
#!/bin/tcsh
ifconfig eth0 down
route del default
/bin/cp ~/SITES/resolv.conf /etc/resolv.conf
iwconfig wlan0 mode Managed essid "ESSID" key "KEY"
ifconfig wlan0 IPADDR
ifconfig wlan0 up
route add default gw GATEWAY
/etc/rc.d/init.d/ntpd restart
/etc/rc.d/init.d/sendmail restart
lpadmin -d Minolta2
setenv PRINTER Minolta2
You'll need to change ESSID, KEY, IPADDR and GATEWAY to proper values. OTOH, I was able to attach to a DHCP net in a hotel using ...
#!/bin/tcsh
ifconfig eth0 down
route del default
iwconfig wlan0 mode Managed essid "GoldenTree"
dhclient wlan0
You can try changing essid "GoldenTree" to essid any for real permissive places.
- Window managers I prefer
the window manager fvwm2, found here. The config
script is .fvwm2rc . The cool marbles came from kde-look. All of the
little apps in the FvwmButtons in the lower left should be easy enough to find online. Notice the network monitor wmnd is started as
wmnd -w twisted -I eth0,wlan0, so that if you click on it, you see the wireless traffic instead of the hardline.
The backgrounds are randomly selected. Under your home directory, make a directory called .backgrounds, and populate it with jpgs/gifs/xpms
and then use the randBG script. You'll need php installed. You can also make individual directories for each Desktop.
- Wine To get wine working, I just yum'd up the latest copy ( sudo yum install wine ), and modified the config
file. Now Starcraft works properly ( I took an image of the BW cd, and mounted it as d:, under dosdevices. I also copied the \Program Files\Starcraft directory
to drive_c/Program Files ).
Christopher Fortin
Last modified: Tue Nov 9 11:08:56 EST 2004