Sunday, May 20, 2007

CentOS 5 on a Dell D610 Laptop

Presented in the hopes that all the time I've wasted can benefit the public. First, the preliminaries:

00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation Mobile 915GM/PM Express PCI Express Root Port (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03)
00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3)
00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03)
00:1e.3 Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03)
00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03)
00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 03)
01:00.0 VGA compatible controller: ATI Technologies Inc M22 [Radeon Mobility M300]
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
03:01.0 CardBus bridge: Texas Instruments PCI6515 Cardbus Controller
03:01.5 Communication controller: Texas Instruments PCI6515 SmartCard Controller
03:03.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)

The first thing you'll probably want to do is get your wireless working. The driver for the Broadcome wireless card that comes with kernel 2.6.18-8.1.3.el5 isn't ready for prime time; to keep the system from trying to load it put the line

blacklist bcm43xx
into /etc/modprobe.conf. Instead I recommend using ndiswrapper; it works pretty well. Do the following:
  1. Grab the Windows Broadcom drivers.
  2. Get bcm43xx-fwcutter, compile it, and use it to extract the firmware files from the Windows driver per documentation. Place the resulting .fw files in /lib/firmware.
  3. Compile ndiswrapper. Install the Windows driver via ndiswrapper -i <.inf file>. If everything is working correctly ndiswrapper -l should produce output something like this:
    bcmwl5a : driver installed
            device (14E4:4318) present
    
  4. Add the line
    alias wlan0 ndiswrapper
    
    to /etc/modprobe.conf
  5. Bring up your wireless interface:
    • modprobe ndiswrapper
    • iwconfig wlan0 essid <ssid>
    • dhclient wlan0

That should do it for the wireless. Next, you'll want to work on the kernel. The stock 2.6.18-8.1.3.el5 kernel has support for a bunch of things which the D610 doesn't need; as a general practice I like to rip out everything that I'm not going to use. Good instructions for how to recompile a kernel under CentOS can be found here. Stoopid Blogger won't let me upload my config file because it might give someone Internet Cooties, so I'll just touch on a couple of points:

  • Framebuffer support: The stock kernel doesn't have Radeon framebuffer support. It's available under Device Drivers -> Graphics Support. I've had mixed results with this; more on that below.
  • SATA/PATA: Support for the Intel SATA controller is available under Device Drivers -> SCSI device support -> SCSI low level drivers. Enable Serial ATA support and Intel PIIX/ICH SATA support.
  • ATA/ATAPI support: Not needed. Remove it and your cdrom will show up as a PATA device.

That's about it for the kernel; next we'll work on X. Linux drivers for the Radeon M300 can be downloaded from ATI. I'm currently using driver version 8.35.5. I couldn't get it to coexist with framebuffer support; ever time I ran the installer while framebuffer support was active it would hang my system. I ended up removing framebuffer support from the kernel entirely. With that said, the installation procedure is as follows:

  1. chmod u+x ati-driver-installer-8.35.5-x86.x86_64.run
  2. ./ati-driver-installer-8.35.5-x86.x86_64.run
  3. system-config-display
  4. aticonfig --initial
Once I found a driver version that worked (had to try a couple) things went pretty smoothly.

The last thing is to tweak X a little. The fonts and font-rendering support that come with CentOS 5 aren't the greatest; a good discussion of the problem and solution can be found here. Grab the freetype SRPM from one of the CentOS mirrors and install as normal. Edit /usr/src/redhat/SPECS/freetype.spec and change the line

%define without_bytecode_interpreter    1
to
%define without_bytecode_interpreter    0
This will enable the bytecode interpreter which provides hinting at small font sizes, which really does improve the look of things dramatically. I also installed and configured the core web fonts per Mr. Alkalay's recommendations.

That's essentially where I stand now. Things I'd still like to get working:

  • Framebuffer/X coexistance: I've not been able to get console mode frame buffer support to coexist with X, with or without the ATI drive.
  • Multimedia playback: I've not been able to get Xine or any of the other media players to work.
Anyone who has any insight on these matters I'd love to hear from you.

In retrospect I don't think that I would have gone with CentOS on my laptop. I originally chose CentOS because I was hoping to get Windows working using the Xen virtualization engine. However, Windows won't run under Xen unless you have hardware virtualization support, something which the D610 is lacking. I ended up going with VMWare Server instead, and am quite happy with the results.

CentOS very stable and has great core support, as befits an OS that's designed for servers. But apart from providing support for workplace productivity I'd also like support for non-productivity, which CentOS doesn't do so well. A lot of features like DVD playback are encumbered by patent and intellectual property concerns; CentOS avoids these problems by not providing pre-built packages for programs like Xine. If I had the time to rebuild from scratch I'd probably go with Gentoo, since it's more designed for non-business users and has better support for A/V.

3 Comments:

Blogger Dag Wieers said...

I maintain a repository called RPMforge, that contains a lot of software for CentOS. Like ndiswrapper, ndis-gtk, NTFS drivers, nvidia/ati drivers and multimedia support (DVD/MP3), specifically made for RHEL/CentOS.

With these additional packages, CentOS works perfectly well as a desktop OS.

9:06 PM  
Blogger Mike Riley said...

RPMForge is exactly what I needed, thank you!

5:16 PM  
Anonymous pci compliance said...

This information is very helpful.

4:13 AM  

Post a Comment

<< Home

Blog Information Profile for gg00