Tuning
From PCLinuxOS Wiki
| Optimize Firefox | . | . |
|---|---|---|
| . | . | . |
| . | . | . |
Tuning your Xorg install
Never edit a working xorg.conf without a backup file available, so that you can easily restore your previous state.
This page deals with manual edits to fix bad a xorg.conf file or to manually add features that the PCLinuxOS configuration tools won't do to your liking. Chances are if you're here - you've installed PCLinuxOS successfully and you're looking to set up your video card for the best performance or you want to try compiz-fusion and can't get it to work. Maybe you can't get a working GUI and you want to fix it.
You will need root user access to save these edits and you should have all the detailed specifications of your devices before continuing.
Conventions used in this article
Many of these edits will take place in a console. Unless noted "console" refers to either a text log-in or a terminal console. Remember: In all linux versions case is important. Always observe and use capital letters only when used in an example.
Program output, listings from files, filenames and other items will appear in a box like this:
SomeFile.Name
Commands intended to be entered at the command line will begin with simulated prompt. The text prompt ends with either a "#" indicating root user or "$" indicating non-root user. The command you are to enter is all the text to the right of the prompt. Examples:
[root@localhost user]# EnterThisCommandAsRoot [user@localhost]$ EnterThisCommandAsYourUser
This page is mostly the work of oshunluvr - please send me a message at the forum if you find an error or have a suggestion. I hope this helps some of you.
Back to advanced topics | Go to the Home Page of Contents
Before you begin
Making a backup xorg.conf
Now is the time to make your backup file. Your system wide xorg.conf file is located at "/etc/X11/xorg.conf." Even if you do not yet have a working GUI, making incremental backups will allow you to backtrace your work and return to previous conditions without too much hair pulling. I recommend a numbering sequence that makes sense to you - i.e.
xorg.conf.01 xorg.conf.02
and so on. Any methodology will suffice. I suggest keeping all the backup files in the same directory as xorg.conf - /etc/X11. Thus making them easier to find when you need them. Since I have dual monitors and TV out I also make separate backups when I'm tweaking a particular part of the xorg.conf file. This can be helpful when you're working on your input devices, too. Like this:
xorg.conf.tv.01
or
xorg.conf.touchscreen.04
This makes it easier to find where and what I've done when my editing session is interupted by work, life or nap time.
The basic text console commands you will use to create and restore your files are change directory (cd), copy (cp), and move (mv). To create your first backup:
[root@localhost user]# cd /etc/X11 [root@localhost user]# cp xorg.conf xorg.conf.01
To replace your current xorg.conf with a previous one:
[root@localhost user]# cd /etc/X11 [root@localhost user]# mv xorg.conf.04 xorg.conf
Another work saving technique is to "remark" lines you want to change rather than typing over or deleting them. This method will save vast amounts of time during the final stages of an xorg.conf edit because you can return to your previous state by deleting and adding a single character. The remark character for xorg.conf is a "#". For example:
# Driver "nv" Driver "nvidia"
Should the "nvidia" driver fail, recovering your GUI is as simple as deleting the "#" and adding it to the line below.
Creating a new, clean xorg.conf
Often, users end up with an xorg.conf that is mess - too many installs, un-installs, re-installs, trying different drivers, attempted edits of info from other users - all leaving you with a blended configuration where almost nothing works correctly. If this sounds like your case, you can start over with a nice clean xorg.conf. If you're in the graphical environment, navigate through kmenu to HardDrake:
KMenu>System>Configuration>Hardware>HardDrake
If your only access is the text console:
[root@localhost user]# XFdrake
In either case, follow the prompts and select a monitor, video card, and resolution as close to your setup as you can. In lots of cases this will at least allow you to get a working GUI.
Using VIM to save yourself
If you insist on using kwrite or kate to do all your editing, in the event of a failure of X to load; You'll have to restore your previous xorg.conf, relaunch X, review your edits and try again. If you think you only need a minor edit, using VIM in the text console can save several steps. However, VIM is not very user friendly. Thankfully, only a few commands need be learned to get you on your way. The examples below that are command line entries have the root prompt "#" in front of the actual command to be entered. Other commands are used within VIM. To start VIM with your xorg.conf file in the buffer:
[root@localhost user]# vi /etc/X11/xorg.conf
To begin editing mode:
i
To leave editing mode and return to command mode:
<ESC>
To save and leave VIM:
:exit <ENTER>
To quit VIM without saving:
:quit!
Be forewarned, VIM does not do automatic backups of edited files. Using VIM is a good time to use the remark method discussed above.
The basics of xorg.conf
Your install setup should have provided you with a basic configuration containing at least these sections:
Section Contains
"Files" File pathnames - Fonts and other files needed by X
"ServerFlags" Server flags
"Module" Dynamic module loading
"InputDevice" Input device description - Keyboard, mouse and other input devices,
at least one per device
"Monitor" Monitor description - More than one if you have multiple monitors
"Device" Graphics device description - You may have more than one if you have
multiple video cards
"Screen" Screen configuration - Tells X what monitor is connected to what video
card and more
"ServerLayout" Overall layout
You may also have these:
"DRI" Direct Rendering Infrastructure "Extensions" Additional X extensions
Where to find your xorg errors
If you attempted to restart X and it failed leaving you at a text console, you may have an error message on the screen in front of you. Usually something like "Screen not found". You have a log file at /var/log/Xorg.0.log which contains the log output from your latest X session. To view it you must be root. To view your Xorg.0.log file at a console enter: To page through the entire log file;
[root@localhost user]# kdesu cat /var/log/Xorg.0.log |more
To see only warnings;
[root@localhost user]# kdesu cat /var/log/Xorg.0.log |grep '(WW)'
To see only errors. You can also do;
[root@localhost user]# kdesu cat /var/log/Xorg.0.log |grep '(EE)'
If you in the GUI, you can do;
[root@localhost user]# kdesu kwrite /var/log/Xorg.0.log
As you read through this file, you'll notice the first couple of characters - refered to as "markers" are one of;
(--) probed (**) from config file (==) default setting (++) from command line (!!) notice (II) informational (WW) warning (EE) error (NI) not implemented (??) unknown
The meaning of most of these are obvious, but the lines to take the most note of are the last four. These: (WW), (NI), and (??) - are usually not fatal, but may lead you to a typo or needed correcting in your xorg.conf. Errors (EE), are often fatal and can be an indication of a larger issue. There is usually some additional information available just above the line in question that may lead you to the solution. Here is a common occurrence in log files:
(II) NVIDIA(0): Assigned Display Device: CRT-0 (WW) NVIDIA(0): No valid modes for "1360x788"; removing. (WW) NVIDIA(0): No valid modes for "832x624"; removing. (WW) NVIDIA(0): No valid modes for "480x360"; removing.
It pretty obvious what this means and how to fix it - remove these modes from your xorg.conf file because they're not valid. Simple!
If you're using the dkms-nvidia drivers, you will see this warning in your log file"
(WW) LoadModule: given non-canonical module name "/usr/lib/xorg/modules/extensions/nvidia/libglx.so"
This may be safely ignored.
Restarting the X server
Unlike some operating systems, linux does not require a reboot to restart the X server. There are a couple of different methods. Choose one that fits your editing style: If you're editing from within the GUI you can hit the key combination:
CRTL-ATL-BACKSPC
This will force an immediate restart of X. It will not log you out and save and settings you may have adjusted. It simply terminates the X server and restarts it, leaving you at the kdm/gdm log in screen.
If you're editing in a fullscreen text console, you can do either:
[root@localhost user]# X
or
[root@localhost user]# startx
Both of which will start the X server as whatever user you are currently logged in as. Since you're most likely logged in as "root" be very careful of this. You can seriously damage your install if you should attempt the wrong things as root in the GUI. A safe option in this case is:
[root@localhost user]# service dm restart
Which will restart X and your log in manager (kdm/gdm) allowing you to log in as any user. If you have made any typos or errors in your xorg.conf, you will most likely be dumped into a text console log in screen or have a blank or frozen GUI, so be prepared for this! In the latter case
CTRL-ALT-F1
will put you at the text console allowing you to log in. At this point, navigate your way to the /etc/X11 directory and either restore your backup xorg.conf (you made a backup, right?) or you can edit with "vi". You may want to read up a little on the vi editor before you start editing your xorg.conf, just in case you end up needing it.
LCD's and sync and refresh rates
Most of us are using LCD's now. They are cheaper to operate and take a lot less desktop space than conventional CRT's. LCD's really only look their best at their native resolution and scan rates. Many monitors will be correctly detected by the initial setup of X, but if they're not, you'll want to correct these settings to get the most out of your display.
In each monitor section you should see:
HorizSync 30-81 VertRefresh 56-76
A function called EDID Extended display identification data attempts to detect these values for you. Edit these line to match your monitors manufacturer's specs, for example:
HorizSync 30-81 VertRefresh 60
But EDID will ignore your entries and use what it detects. LCD's prefer their native vertical refresh rate, so to "lock" in your monitor's desired rate; add this line to your "Monitor" section:
Option "UseEdidFreqs" "false"
This will tell X to use your inputed values rather than EDID's.
Modes and modelines
To get your desired resolution, you need proper "Modeline"'s in your "Monitor" section(s) and "Modes" in your "Screen" section. To generate a modeline for yourself, open a console/terminal and type
[root@localhost user]# gtf 1024 768 60
substituting your resolution (the example is 1024x768) and VertRefresh (the example is 60). This example will generate:
# 1024x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 64.11 MHz Modeline "1024x768_60.00" 64.11 1024 1080 1184 1344 768 769 772 795 -HSync +Vsync
You may have as many "Modeline"'s as you desire, but have at least the one for your native or preferred resolution. "Modes" go in your "Screen" section and will allow (or not allow) your monitor(s) to display various resolutions. Your default "Screen" section will look something like this:
Section "Screen"
Identifier "screen1"
Device "device1"
Monitor "monitor1"
DefaultColorDepth 24
Subsection "Display"
Depth 8
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth 15
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubsection
EndSection
Edit here and remove modes you don't want and add the ones you do. Remember if you run some program that require full screen at a resolution less than your native one, you'll want to be able to support those resolutions.
If you have a Widescreen monitor with a native resolutions like 1440x900, keep your other modes at the same ratio. To get your ratio, divide horizontal pixels across by vertical pixels. In the example above 1440 divided by 900 equals 1.6.
1440/900=1.6
To get other resolution of the same ratio divide horizontal pixels by the desired ratio to get vertical pixels. i.e 1280 pixels across divided by 1.6 and equals 800, so 1280x800 should be a valid mode.
1280/1.6=800
Don't forget to do your "Modelines" at these ratios!
Pointer flickering or out of position
Sometimes, especially with beryl or high demand openGL, you may get some flickering of the cursor or mouse pointer. At it's worst, you'll find your mouse "clicks" are a bit off. The quick fix for this is to turn on the hardware cursor. Add this line to your Section "Device"
Option "HWcursor"
You can improve the look of your cursor/pointer slightly by adding these:
Option "CursorShadow" Option "CursorShadowXOffset" "3" Option "CursorShadowYOffset" "3" Option "CursorShadowAlpha" "32"
Play with the numbers and find a shadow that you like.
Enhancing your DPI and Fonts
As with the refresh and scan rates, EDID attempts to determine a correct DPI (dots per inch) for your install. And just like before, it sometimes is not correct. To determine what dpi you are at, in a console type:
[root@localhost user]# xdpyinfo |grep resolution
You will most likely get these results:
resolution: 83x86 dots per inch
Unfortunately, this dpi is not anything like any of the fonts available. The default KDE fonts are 75x75, windows fonts are 96x96, and the high resolution KDE fonts are 100x100. The fix is pretty easy. To get to 100x100 dpi fonts: As root; edit the monitor section of /etc/X11/xorg.conf to include these lines;
Option "UseEdidDpi" "false" Option "Dpi" "100x100"
The first option turns off the auto detect and override function of EDID and the second sets your DPI to the desired setting. You may use whatever DPI you think works or looks best on your setup.
If you desire the 100 dpi X fonts, the next step is to install those packages. With synaptic, search and install all the 100 dpi fonts. While you're at it, install the liberation fonts package - they are made to be clear on LCD's. Then as root; edit /etc/X11/fs/config. Look for:
default-resolutions = 75,75,100,100
and edit it to read:
default-resolutions = 100,100,75,75
You can amend the remarks too if you'd like. Then under "catalogue = ..." rearrange the order so the 100dpi fonts are listed first. From this:
catalogue = /usr/share/fonts/75dpi:unscaled, /usr/share/fonts/100dpi:unscaled, /usr/share/fonts/misc:unscaled,
To this:
catalogue = /usr/share/fonts/100dpi:unscaled, /usr/share/fonts/75dpi:unscaled, /usr/share/fonts/misc:unscaled,
Now, back to you xorg.conf file; In the "Files" section add these lines or re-order the ones that are there so that 100 dpi fonts are listed first. The result should look something like this:
Section "Files" # font server independent of the X server to render fonts. FontPath "unix/:-1" # minimal fonts to allow X to run without xfs FontPath "/usr/share/fonts/100dpi:unscaled" FontPath "/usr/share/fonts/75dpi:unscaled" FontPath "/usr/share/fonts/misc:unscaled"
Xft and fonts
Some systems will suffer font issues from a very small but none-the-less important entry in your /etc/X11/Xresources file. To check this, enter this command
[root@localhost user]# xrdb -q |grep Xft.dpi
The results should look something like:
Xft.dpi: 90
If this number does not match your desired dpi, it can cause blurry or uneven fonts. To fix this; edit /etc/X11/Xresources and at the tail end:
Xft.dpi: 90
change the number to to the correct dpi for your setup and save.
nVidia specific edits
The default install for nVidia cards leaves you this "Device" section
Section "Device" Identifier "device1" VendorName "nVidia Corp." BoardName "NVIDIA GeForce FX (generic)" Driver "nv" Option "DPMS" EndSection
To enhance the speed and function of your nvidia card you need the nVidia brand drivers. You can either install the synaptic packages; dkms, dkms-minimal, dkms-nvidia_XXX, and nvidia_XXX or download and install the driver from the nVidia website (see notes below on this). Be sure you select a driver version that will work with your nVidia card. Check on nVidia website if you're unsure. The synaptic packages are easier to deal with and usually work perfectly. However, the "nvidia-config" program and often the Control Center will not properly edit your xorg.conf file, especially if you use the synaptic loaded drivers.
Make sure you're using the nVidia brand drivers
After doing any of the nVidia brand driver installs: You need to be sure that your xorg.conf was properly changed to load the new driver. In a console:
[root@localhost user]# cat /etc/X11/xorg.conf | grep Driver
should result in something like:
Driver "kbd" Driver "mouse" Driver "evdev" Driver "nvidia"
If you see "nv" instead of "nvidia", edit this file (as root) and change it, Restart X (see above).
Apply these edits to your "Device" section:
To turn off startup logo:
Option "NoLogo" "true"
To allow GLX to work with the composite extensions for better performance (and required for compiz and beryl to function):
Option "AddARGBGLXVisuals" "true" Option "AllowGLXWithComposite" "true" Option "DisableGLXRootClipping" "true"
Other useful options to try:
Option "RandRRotation" "true" Option "Backingstore" "true" Option "TripleBuffer" "true" Option "CoolBits" "1" Option "RenderAccel" "true"
If your card doesn't support one of these options, it will generate a (WW) in your log file. Just comment or remove the suspect line in xorg.conf later.
Apply these edits to your "Module" section:
Load "dbe" # Double-Buffering Extension Load "v4l" # Video for Linux Load "extmod" Load "type1" Load "freetype" Load "fbdevhw" Load "record" Load "int10" Load "vbe"
Remove this line if it exists;
Load "dri"
If you are using the synaptic supplied drivers, you should have;
Load "/usr/lib/xorg/modules/extensions/nvidia/libglx.so" # 3D layer
If you installed drivers direct from nVidia, you should have;
Load "glx" # 3D layer
If you have the wrong one, GLX won't load properly and X may crash.
Add these entire sections to your xorg.conf
Section "DRI"
Group 0
Mode 0666
EndSection
Section "Extensions" Option "Composite" EndSection
ATI specific edits
ATI experts - do your thing!
Other video cards
Speed up your onboard Intel card
I managed to double my glxgears to 1200 fps by adding:
export Intel_Batch=1
to the bottom of my .bashrc file located in my home folder.
# .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc export Intel_Batch=1 fiI also added the
Option "AccelMethod" "XAA"to the bottom of the "Device" section of my /etc/X11/xorg.conf file.
Matrox, Intel, S3 and others - add your help here
Multiple Monitors
This section under development
Dual desktops
If you want dual desktops, you start with two monitor, screen, and device sections - even if you have only one video card. Of course - insert the correct info for each of your monitors and whatever resolution you're using. Once you have both screens running the way you want - THEN go back and edit for additional function and tweak settings. Like this:
Section "Device"
Identifier "nvidia0"
Driver "nvidia"
# Edit the BusID with the location of your graphics card
BusID "PCI:2:0:0"
Screen 0
EndSection
Section "Device"
Identifier "nvidia1"
Driver "nvidia"
# Edit the BusID with the location of your graphics card
BusId "PCI:2:0:0"
Screen 1
EndSection
Section "Screen"
Identifier "Screen0"
Device "nvidia0"
Monitor "Monitor0"
DefaultDepth 24
Subsection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubsection
EndSection
Section "Screen"
Identifier "Screen1"
Device "nvidia1"
Monitor "Monitor1"
DefaultDepth 24
Subsection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubsection
EndSection
Section "Monitor" Identifier "Monitor0" VendorName "IBM" ModelName "P260" HorizSync 30.0 - 121.0 VertRefresh 50.0 - 160.0 Option "dpms" EndSection
Section "Monitor" Identifier "Monitor1" VendorName "IBM" ModelName "P260" HorizSync 30.0 - 121.0 VertRefresh 50.0 - 160.0 Option "dpms" EndSection
Edit the ServerLayout section to use and position both Screen sections:
Section "ServerLayout"
...
Screen 0 "Screen0"
Screen 1 "Screen1" leftOf "Screen0"
...
EndSection
You can control which desktop programs launch on with;
DISPLAY=":0.1" programname
where the 1 refers to the screen number that you want it to appear on.
If you want to reduce the mouse jumping back and forth somewhat you can "move" the second desktop farther away from the first like this;
Section "ServerLayout"
...
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" 100 0
...
EndSection
Experiment with the 100 number to get it to where you want it. The larger the number, the farther you'll have to roll the mouse to get it to jump to the second monitor.
nVidia's TwinView
If you have two identical monitors attached to a single dual port nVidia card, the easiest setup in the world is one large desktop. Only one "Monitor" and "Screen" section are required because the second monitor is identical and is defined in the "Device" section. Only one "Screen" line is needed in the "Server Layout" section. Only one "Device" section is needed because you are using only one video card. The driver will handle using both outputs. If your card has has dual DVI connectors, the lower one is the first. I believe the if you have one DVI connector and one VGA connector, the DVI connector will attach first.
Add these lines to your "Device" section
Option "TwinView" "true" Option "TwinViewOrientation" "RightOf" Option "SecondMonitorHorizSync" "30.0-80.0" Option "SecondMonitorVertRefresh" "60.0-60.0" Option "MetaModes" "1280x1024,1280x1024; 1280x1024; 1024x768,1024,768; 1024x768; 800x600,800x600; 800x600; 640x480,640x480; 640x480"
"Metamodes" will allow you to use "Resize and Rotate" to change your monitor resolution on the fly and allow a single monitor only setting for video watching or full screen applications (monitor 2 will go blank). This example will default to 1280x1024 on both monitors. If you don't need or want this feature, simply remove all but "1280x1024,1280x1024" or whichever resolution you prefer. Change the Sync and Refresh rate to match your monitor or use "UseEdidFreqs" instead of a number.
Keyboards
Mice
My pointing devices have all been properly detected by the install.
When you're all done
Completing a successful xorg.conf editing session will usually involve many edits and corrections. Begin each session with making a backup of your working xorg.conf file. When you're all done (for now!) and happy with your results:
- Do a final clean up of your xorg.conf - removing un-needed lines and adding comments for future reference.
- Give yourself credit and replace the "Created by XFDrake" at the top with your name and date.
- Drop all those old xorg.conf's into the trash - or at least into a folder in your home directory.
- Last, but never least - make a backup of the final xorg.conf and save it on another drive or off the computer completely. This is a good idea for all your system edits and configuration files that you edit. One method is to re-create the directory structure on a USB drive or a CD-R/W and save all the files I have edited right where they belong. In this case:
/etc/X11/xorg.conf
and for my scanner
/etc/sane.d/dll.conf
and so on. Then - if my install crashes for any reason - I simply need to copy those files back to where they belong.
Modifying your Keyboard with xmodmap
How to Customize the initrd
Back to Advanced Topics
If you want to get the best performance out of your HD installed PCLinuxOS the first thing is to customize the initrd. Now that requires a little bit of explanation.
Introduction to the boot process
The kernel (the engine of the operating system) starting with 2.4 is huge, doesn't fit on a standard floppy (That's why we can't create bootfloppies easily), and the number of different device drivers is growing every day. If the kernel had all the drivers compiled in it, it would require huge amount of RAM.
To minimize the footprint in the memory, all the device drivers are compiled as modules and during the boot process the kernel loads only those drivers which are absolutely necessary. Unfortunately there is no sure way to tell which driver is needed before loading them. The LiveCD during the hwdetect phase (hardware detection) loads all and every possible driver in order to "catch" the right device driver required by the various sata, scsi, usb devices. There is no sure way to tell which driver is in use, which one is just loaded but not in use yet, or which one is not needed at all because the PC doesn't have that type of device.
After the harddisk install the first thing the bootloader (bootstrap) loads is the the kernel and a mini operating system, so small that it fits entirely in memory. This is called the initial ram disk, or initrd for short. The initrd has to have the necessary device drivers to mount the root (/) filesystem and all the programs and data it contains.
If you install the LiveCD on a sata, scsi, or usb harddisk, the initrd should contain the necessary sata, scsi or usb drivers. In order to not miss any, the LiveCD install includes all of them rather than miss some. It does this by editing the /etc/sysconfig/installkernel file's INITRDOPTS= parameter, telling which modules to include in the initrd.
The INITRDOPTS parameter has both advantages and disadvantages.
- Pro: If you later decide to upgrade your PC's slow ide harddrive with faster scsi or sata drive, it is just plug and play, the drivers are already there.
- Cons: Since you are loading a ton of drivers on every boot it is a lot slower, and requires more RAM, which causes your performance to suffer.
- Solution: Customize the initrd.
Customizing the initrd
To do this, you have edit the /etc/sysconfig/installkernel INITRDOPTS= parameter, leaving only those drivers which required. Since I don't have a scsi, sata or usb harddisk, my installkernel is rather simple:
[root@localhost config]# cat /etc/sysconfig/installkernel # -*- Mode: shell-script -*- # $Id: installkernel.sysconfig,v 1.14 2004/06/29 04:50:42 prigaux Exp $ # Configuration option when installing a kernel and initrscript. # Set this to yes if you never want link from /boot/vmlinuz to the # kernel. NOLINK="" # Set this to yes if you don't want to add entry to your bootloader NOENTRY="" # If you want to pass options to the "make-initrd" helper script you # can do it here. INITRDOPTS=""
After you have customized the install kernel, you will have to regenerate the initrd.img. That's easily accomplished by reinstalling the current kernel, or installing a higher kernel.
Note: If you are reinstalling the current kernel you have to delete your current initrd.img (the file the /boot/initrd.img links to) to force the install kernel script to regenerate the initrd and rerun the lilo.
(note to someone who can make this just a little better. i can understand this wiki up to where it says Note, above. If we could just add a short explanation about how to reinstall the current kernel, i think this would make it doable.)
If you choose to install a new kernel, you don't have to delete the initrd.
(the same would go for the above -- "If you choose to install a new kernel,...")
Do I Need All These Modules?
Warning: Experienced users only!
As you gain experience, you may wish to re-examine some of these modules. Some research on the internet may tell you that some of these modules are for hardware you don't actually have. Hardware detection is never infallible, and if you are sure that you do not need a module, you can remove it from the list in /etc/modules.preload. If it still insists on appearing, there is another file called /etc/hotplug/blacklist where you can list modules, one row at a time, that you do not want to be loaded, or you wish to load later.
Hardware detection runs on two levels, first is Hardware detection on startup, second is Hardware detection once running. You only stop the first of these when you stop Hotplug in the Control Centre. That's why! You do want other hardware to be detected when plugged in, don't you?
What are all these SATA modules? (Warning: Experienced users only!)
An exception to this is a number of SATA modules which PCLinuxOS always loads. This is to ensure that SATA devices can be read in the first place. If you know full well you do not have any SATA drives in your computer, and even when you remove them from the /etc/modules.preload file, stop "hotplug", and add them to the blacklist, they will still get loaded. These modules include: libata, sata_vsc, sata_via, sata_svw, sata_sil, sata_promise, sata_nv, ata_piix. The only way to get rid of them is to add a line in the file /etc/rc.local as follows:
rmmod libata sata_vsc sata_via sata_svw sata_sil sata_promise sata_nv ata_piix