Flarg -- Daniel Wexler's Corner

Installing RedHat Linux 7.3 on a Dell Inspiron 4100

Saturday, May 04, 2002

This document is out of date.

There are newer versions of RedHat and the NVidia drivers available.  I updated from this setup to RedHat 8.0 without any trouble at all.  I also recommend using the latest NVidia Linux drivers.

This document describes how to set up a dual-boot system with WindowsXP and RedHat 7.2 Linux on the Dell Inspiron 4100 with an NVidia GeForce2Go UXGA LCD. The system works very well for me as a general home computer and for programming portable applications for Linux and Windows with a shared CVS tree.

Setting up XFree86 was the biggest stumbling block, since the current NVidia drivers do not support this particular configuration (although all other i4100 and i8100 models work just fine). After that problem was solved, everything else was fairly simple to setup using RedHat 7.2

Update: The latest NVidia drivers have fixed the issues with the i4100 UXGA cards. (I believe the 2880 versions work just fine.)

I'll also mention some graphical setup details which will make your desktop look just as good as WindowsXP with ClearType subpixel font rendering. People often complain that a high resolution display is actually harder to read. This is rubbish. You just need to make sure to setup your fonts and window settings to display larger fonts. Since these fonts are now antialiased under KDE, your screen actually is much easier to read. In fact, it almost looks like a piece of paper!

Hardware Description

I chose this system primarily for the UXGA screen and NVidia graphics card and the internal Wi-Fi card and NIC. For about $2000, this combination of features was the best I could find.

The system hardware included:

  • Dell Inspiron 4100
  • 1 GHz Pentium III
  • 14.1" UXGA (1600x1200) LCD
  • NVidia GeForce2Go 32MB
  • 40 GB HDD
  • Internal 56K Modem
  • Internal miniPCI Dell TrueMobile 1150 802.11b Wi-Fi
  • Internal 10/100 NIC and RJ45 jack
  • Modular bay with 8x CDRW or Floppy drive

Please note that the UXGA GeForce2Go card presents some unique setup issues discussed below. The rest of the system is fairly standard and setup fairly simple.

Partitioning for WindowsXP and Linux

My goals for partitioning this system were:

  • Dual boot WindowsXP and RedHat Linux 7.2
  • Share data between both operating systems
  • Primary work will be under WindowsXP

I used the program Partition Magic to partition the system. The program can be purchased online and it supports WindowsXP (unlike Partition Commander). I'm sure you can also use a free program for the partitioning, if you are willing to put up with a bit more hassle.

The important thing to remember when considering a non-trivial partitioning scheme is that there are only 4 primary partitions. Although extended partitions can be made to increase flexibility, each OS's boot sector should be installed onto a primary partition. Also, the current versions of Linux (RedHat 7.2 in my case) don't fully support NTFS. You can read NTFS from Linux, but you can't write to it. Since I wanted to share a CVS tree, I really wanted full R/W support. For this reason, I decided to add a special FAT32 (fully supported by RH7.2) partition to use for sharing data between WindowsXP and Linux. Dell sends you the computer with a special 50MB primary partition already installed at the front of the driver.

After a couple of false starts, I decided to go with the following partition scheme for my 40GB (!) drive:

31 MB
Fat32
Dell
30 GB
NTFS
WindowsXP
5 GB
Fat32
Shared
Extended
3 GB
Fat32
Linux
1 GB
Swap
Linux

After partitioning, my WindowsXP system recognized the new Fat32 shared partition as "E:". This is important since I want to download stuff under WindowsXP and make it available to Linux by saving it on the "E:" driver since that is easily mounted by Linux. I did not go to the trouble of installing the read-only NTFS support for Linux. I figure I'll just use my shared Fat32 for now.

Although my partitioning may seem somewhat light on the Linux side, I expect to make heavy use of WindowsXP for games and general business work. I'll be doing programming under both Linux and WindowsXP using a CVS tree installed on the shared Fat32 partition. I don't expect to install much Linux-specific stuff, and I'm sure that the combination of 8 GB for Linux should be enough. After all, that's about 4x what I had at work about two years ago!

Some people have mentioned problems with Suspend to Disk (s2d). I have not experiemented with the Linux setup for hibernation or suspend to disk, but it seems to work just fine under WindowsXP with my current setup. If this concerns you, make sure to see if you still need to setup a special sleep partition before you decide on your final partitioning setup.

Linux Installation

I started by downloading RedHat 7.2 from one of the RedHat mirror sites using WindowsXP. I also downloaded a free program which allowed me to burn ISO images directly from the Windows Explorer file browser.

I also took this time to download a few other things that I knew I would need after installing RedHat. It is much easier to download all this stuff under WindowsXP before you install Linux. Each thing I downloaded I placed in the shared "E:" partition. I downloaded:

Next, I modified the BIOS settings to allow me to boot from the CDROM. The BIOS settings are accessible if you hold down F1 during a reboot. Make sure that you set the CDROM to boot before the hard disk. Now, you can insert the RedHat 7.2 installation disk (Disk1) and reboot to begin the installation process.

A couple of important tips during the install:

  • Choose a single partition for all of Linux mounted as "/"
  • Select "Text Login" and not "Graphical Login" since you'll have to update your NVidia drivers before X will work.
  • Make sure to mount your shared Fat32 partition (I mount it on "/usr/windows")
  • You'll probably choose the "nv" Open Source NVidia driver for now. As of this date (February 2002), the latest CVS tree for this driver contains changes to support laptop LCD displays, but it is not stable.
  • Don't make a boot disk, since a i4100 only has a single modular bay shared by the CDROM/CDRW/Floppy, and it would be bad to switch this in the middle of the installtion process. As soon as possible, perferably before you install on your laptop, make sure to make a boot floppy.

After you install RedHat 7.2, you should be able to reboot the computer and get to a text installation screen.

XFree86 Configuration

This section will describe how to install the proprietary NVidia drivers for XFree86 4.x. You will need to download the proper files from the NVidia website. Start by downloading the NVChooser program to determine the proper packages. In the near future, the I4100 at UXGA will be fully supported by the RPM packages, but for now, you'll need to get the source tarball of the kernel driver since we'll be patching it below.

As of February, 2002, the NVidia proprietary XFree86 drivers do not support UXGA resolution on the Dell i4100. The problem is that the EDID information reported by the laptop screen is incorrect. NVidia provided a patch to the NVIDIA_kernel module that forces the use of SoftEDID as is used by WindowsXP. The symptoms of this problem are that UXGA resolution will not work at all, while smaller resolutions (eg. 1450x1024, 1280x1024, 1024x768) will have a black stripe to the right of the visible desktop and the top portion of the desktop is repeated along the bottom. You can also verify the problem by running "startx --verbose 5 --logverbose 5" and then checking the reported EDID settings in /var/log/XFree86.0.log. You will see something like this:

(II) NVIDIA(0): --- EDID Information for Display 0 ---
(II) NVIDIA(0): Manufacturer: NVD  Model: 302  Serial#: 2
(II) NVIDIA(0): Year: 1999  Week: 28
(II) NVIDIA(0): EDID Version: 1.2
(II) NVIDIA(0): Digital Display Input
(II) NVIDIA(0): Max H-Image Size [cm]: horiz.: 30  vert.: 23
(II) NVIDIA(0): Gamma: 2.88
(II) NVIDIA(0): DPMS capabilities: StandBy Suspend Off; RGB/Color Display
(II) NVIDIA(0): First detailed timing is preferred mode
(II) NVIDIA(0): redX: 0.600 redY: 0.342   greenX: 0.295 greenY: 0.570
(II) NVIDIA(0): blueX: 0.147 blueY: 0.111   whiteX: 0.312 whiteY: 0.328
(II) NVIDIA(0): Manufacturer's mask: 0
(II) NVIDIA(0): Supported additional Video Mode:
(II) NVIDIA(0): clock: 108.0 MHz   Image Size:  300 x 228 mm
(II) NVIDIA(0): h_active: 1400  h_sync: 1448  h_sync_end 1560 h_blank_end 1688 h_border: 0
(II) NVIDIA(0): v_active: 1050  v_sync: 1051  v_sync_end 1054 v_blanking: 1066 v_border: 0
(II) NVIDIA(0): Ranges: V min: 60  V max: 60 Hz, H min: 30  H max: 100 kHz, PixClock max 120 MHz
(II) NVIDIA(0): Serial No: 000000000001
(II) NVIDIA(0): Monitor name: NVIDIA_SXGA
(II) NVIDIA(0): --- End of EDID Information for Display 0 ---

To fix this problem, you must patch the NVIDIA_kernel module using the following procedure:

  1. Make sure you have the kernel source code installed on your laptop. A default RedHat 7.2 installation does not install the kernel source, but it can be installed from the RPM found on RedHat 7.2 Disk 2 using:
    % rpm -Uvh kernel.rpm
  2. Download the NVIDIA_kernel tarball:
    NVIDIA_kernel-1.0-2314.tar.gz
  3. Uncompress the files to a temporary directory:
    % tar xvzf NVIDIA_GLX-1.0-2313.tar.gz
  4. Change to the new directory:
    % cd NVIDIA_kernel-1.0-2314
  5. Edit the os-registry.c file and add the following lines at the bottom:
    U032 NVreg_SoftEDIDs = 0x1; MODULE_PARM(NVreg_SoftEDIDs, "i");
  6. Become root, recompile and install the kernel module:
    % su
      
    % make install
    

Make sure that the compile completed without any errors. You can verify that the kernel installed correctly using "lsmod | grep NVdriver".After the proper kernel module is installed, make sure to install the NVidia GLX RPM with something like this:

# rpm -Uvh NVIDIA_GLX-1.0-2313.i386.rpm

GLX should install without any problems. If you do run into trouble, consult the NVidia readme.

Next, you need to modify your XFree86 Configuration file. Here's a breakdown of my file and what each section controls:

The first section is there so that I can use an attached USB mouse along with my trackpad and thumb mouse:

Section "ServerLayout"
	Identifier	"Farpoint"
	Screen		0 "Screen0" 0 0
	InputDevice	"Mouse0" "CorePointer"
	InputDevice	"USBMouse" "SendCoreEvents"
	InputDevice	"Keyboard0" "CoreKeyboard"
EndSection

The second section sets up all my fonts. In particular, I'm setting things up to use unscaled large fonts whenever possible. In practice, I use KDE, which now uses antialiased TrueType fonts and looks fantastic. The font path for the antialised fonts is set in /etc/X11/XftConfig . Details in the font de-uglification page.

Section "Files"
    RgbPath    "/usr/X11R6/lib/X11/rgb"
    FontPath   "/usr/X11R6/lib/X11/fonts/misc:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
#    FontPath   "/usr/X11R6/lib/X11/fonts/Type1"
    FontPath   "/usr/X11R6/lib/X11/fonts/misc"
    FontPath   "/usr/X11R6/lib/X11/fonts/100dpi"
    FontPath   "/usr/X11R6/lib/X11/fonts/75dpi"
    FontPath   "/usr/X11R6/lib/X11/fonts/Speedo"
    ModulePath "/usr/X11R6/lib/modules"
#    FontPath   "unix/:7100"
EndSection

The module section controls which loadable modules are automatically loaded by XFree86. You need to disable the "GLcore" and "dri" modules since they work with the Open Source "nv" driver, but cause problems with the proprietary NVidia drivers. You want to also make sure that you add the NVidia "glx" module, and probably the "type1" module to render nice antialiased text really quickly! Note that you can verify which modules are installed once you get X up and running using the "xdpyinfo" command.

Section "Module"
#        Load  "GLcore"
        Load  "dbe"
        Load  "extmod"
	Load "fbdevhw"
	Load "pex5"
#	Load "dri"
        Load  "glx"
        Load  "pex5"
        Load  "record"
	Load  "type1"
	Load  "freetype"
        Load  "xie"
EndSection

The input device section is used to setup both the internal trackpad and thumb mouse and the external USB Logitec optical mouse. I also set the autorepeat of the keyboard, and made sure to enable the mousewheel using the ZAxisMapping line. It is important to add a link for the USB mouse:

# ln -s /dev/input/mice /dev/pointer
Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "keyboard"
	Option	"AutoRepeat" "250 30"
	Option	"XkbRules"	"xfree86"
	Option	"XkbModel"	"pc105"
	Option	"XkbLayout"	"us"
	#Option	"XkbVariant"	""
	#Option	"XkbOptions"	""
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "PS/2"
        Option      "Device" "/dev/psaux"
        Option      "Emulate3Buttons" "on"
EndSection

Section "InputDevice"
	Identifier	"USBMouse"
	Driver		"mouse"
	Option		"Device"		"/dev/pointer"
	Option		"Name"			"AutoDetected"
	Option		"Protocol"		"IMPS/2"
	Option		"Vendor"		"AutoDetected"
	Option		"ZAxisMapping"		"4 5"
EndSection

The final section is the critical area for monitor and card setup. Most important is to switch from the "nv" driver to the newly installed "nvidia" driver. I've disabled the login screen and enable the hardware mouse shadow, since I think that is easier to find on the UXGA display. Make sure to get this section exactly correct.

Section "Monitor"
        Identifier   "LCD"
        VendorName   "Dell"
        ModelName    "UXGA"
        HorizSync    30-100
        VertRefresh  60
        Option      "dpms"
EndSection

Section "Device"
	Identifier  "NV AGP"
	VendorName  "nvidia"
	Driver      "nvidia"
#	BusID       "PCI:1:0:0"
#	Option      "UseEDIDFreqs" "1"
	Option      "NoLogo" "1"
	Option      "CursorShadow" "1"
EndSection

Section "Screen"
	Identifier   "Screen0"
        Device       "NV AGP"
        Monitor      "LCD"
	DefaultColorDepth	24

	Subsection "Display"
        	Depth       24
                Modes       "1600x1200"
	EndSubsection
EndSection

Okay, now let's just check things over before we try to start up X. You should have the NVidia kernel module loaded. Verify by running "/sbin/lsmod" and checking for a line with "NVdriver". Okay? Now, let's try starting up X with a bunch of debugging information just in case. This stuff is logged into "/var/log/messages", in case something doesn't work:

% startx --verbose 5 --logverbose 5

Hopefully, it all worked okay. If not, suffer for a bit. I'm sure this works on i4100 with NVidia G2Go at UXGA. You don't need the kernel mod unless you have a UXGA display. If you have a 1400x1050 or lower display, or an ATI card, you should be able to just install the NVidia kernel module from the RPM.

Networking

My setup came with an internal wireless 802.11b mini-PCI card, an internal 10/100 NIC with RJ45, and an internal modem. I have not setup the modem yet, but I hear that it can work. The 10/100 NIC worked with the standard install. The Orinoco wireless card was not setup correctly.

The 802.11b wi-fi internal mini-PCI card was setup to use the wvlan_cs driver. This driver will probably work for most people. However, I have a LinkSys wireless access point. There is a bug in wvlan_cs which causes problems with the linksys access point. The orinoco_cs driver fixes the problem. It is probably good to upgrade to the orinoco_cs driver anyway, since it has better support and is generally more stable.

To switch to the orinoco_cs driver, you can grab the configuration files for the wireless options at the end of this document.

  • The /etc/pcmcia/config file must force loading of the proper modules:
    device "orinoco_cs"
      class "network" module hermes", "orinoco", "orinoco_cs"
    
  • The /etc/pcmcia/config file must bind the orinoco driver to the card:
    card "Lucent Technologies WaveLAN Adapter"
      version "Lucent Technologies", "WaveLAN/PCMCIA"
      bind "orinoco_cs"
    
  • The /etc/pcmcia/wireless.opts file must be modified by hand to support your wireless setup. I had to switch to the "Ad-Hoc" mode and set my ESSID to "linksys". It is sometimes useful to check the WindowsXP network properties to find out this information.

I use an internal gateway machine to access the net and my internal network is setup with DHCP. It all works just fine.

Sound

Sound worked correctly for me with the standard RH7.2 install. KDE desktop sounds are working just fine and I can play CDs.

TrueType Fonts and Display

After setting up X correctly, you need to fix up a few other configuration files to make sure you use the highest quality fonts with your awsome UXGA display. There is a great review of the technical side of the setup in the font de-uglification page.

Most X applications don't support anitaliased fonts yet. However, KDE via the QT toolkit do support these high quality fonts. The Konquoror browser, in particular, supports aa text and looks almost as good as IE under XP. Unfortunately, it still has bugs and crashes occasionally and also occasionally cannot draw some web pages.

The biggest problem in setting up TrueType fonts is getting the fonts. Luckly, you have WindowsXP and can just copy them over from the C:\WINDOWS\fonts folder. I copied the entire fonts folder onto my shared "E:" drive, and then copied it from there into /usr/X11R6/lib/X11/fonts/TrueType. Make sure to run the script on the FDU page to change the font files to lower case, and update the /etc/X11/XftConfig file to point to the folder containing the fonts.

There are a couple of key lines in the XftConfig file that really make a difference:

  • Add the location of your TrueType fonts with:
    dir "/usr/X11R6/lib/X11/fonts/TrueType"
  • Turn on subpixel antialiasing with:
    match edit rgba=bgr;

Next you'll want to update the various font settings for Konqueror, Mozilla, and your window manager (KDE or GNOME). When using KDE, I set the following fonts (which are just copied settings from WindowsXP and happen to be really nice) using the KDE Control Center under "Look & Feel" -> "Fonts":

General Tahoma 8 iso8859-15
Fixed width Bitstream Charter 8 default
Toolbar Tahoma 8 iso8859-15
Menu Tahoma 8 iso8859-15
Window title Trebuchet MS 9 iso8859-15
Taskbar Tahoma 6 iso8859-15

I also find it useful to adjust the icon sizes by hand and to use a smaller panel, but that's all personal preference, of course.

References

Please let me know if you notice any problems on this page, or think that it could be enhanced. If anything at all was unclear, let me know and I'll try to fix it up.

Here are the various configuration files:

XFree86 /etc/X11/XF86Config-4
Font /etc/X11/XftConfig
Wireless /etc/pcmcia/hermes.conf
/etc/pcmcia/config
/etc/pcmcia/wireless.opts