newbie question about hardware driver

hi everybody
i got a very simple question and would be very happy if somebody could direct me to the right resouce for the answer.

i just wanna know how hardware driver are managed in linux

please please and pretty please don’t say " in the kernel"

please elaborate

like when i have a rtl8139 lan card and in realtek site its driver has been updated for windows in 12th Sept 2008 but for linux it says some date in 2007 ,what does tat mean?
does it mean that the driver for tis hardware has bean completely perfected in linux kernel?? or that after that date it not developed by realtek anymore ??

and on the same site and for ac’97 on board sound card it says the same for its driver in windows but for linux it says “built in” ???

can some one explain ro me management of hardware driver in linux , like where is my Intel onborad video card 82845g driver actually??

Sorry but

" in the kernel"

Well you asked for it.

Packages, such as the video requirements you have are built against the kernel. That is why, it can be the case that kernel updates sometimes require some re-building of certain packages, video being a classic example. But every situation is different.

If you don’t already have this, it may interest you
Hardware - openSUSE

Driver support for windows and linux are not the same, so you really can’t make comparisons.

rd1381 wrote:
> hi everybody
> i got a very simple question and would be very happy if somebody could
> direct me to the right resouce for the answer.
>
> i just wanna know how hardware driver are managed in linux
>
> please please and pretty please don’t say " in the kernel"

Ok, I won’t say that (although of course for most of the drivers they
are…).

> please elaborate

For in depth information follow the kernel developers mailing list or
read the archives. The status of the kernel drivers can be followed from
the Changes list that is generated with every new kernel.
E.g.
http://www.kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.27-rc7
…]
commit 5c0a95c73f80c034914e219eee8075acdf56b527
Merge: baaea1d… a650031…
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Sun Sep 21 12:38:45 2008 -0700

Merge branch ‘for-linus’ of
git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc

  • ‘for-linus’ of
    git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc:
    mmc_test: initialize mmc_test_lock statically
    mmc_block: handle error from mmc_register_driver()
    atmel-mci: Set MMC_CAP_NEEDS_POLL if no detect_pin
    atmel-mci: Fix bogus debugfs file size
    atmel-mci: Fix memory leak in atmci_regs_show
    atmel-mci: debugfs: enable clock before dumping regs
    tmio_mmc: fix compilation with debug enabled
    …]
    commit e7272403d2f9be3dbb7cc185fcc390e781b1af6b
    Author: Rafael J. Wysocki <rjw@sisk.pl>
    Date: Fri Aug 8 00:18:04 2008 +0200

e100: Use pci_pme_active to clear PME_Status and disable PME#

Currently e100 uses pci_enable_wake() to clear pending wake-up events
and disable PME# during intitialization, but that function is not
suitable for this purpose, because it immediately returns error code
if device_may_wakeup() returns false for given device.

Make e100 use pci_pme_active(), which carries out exactly the
required operations, instead.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
…]

There you have it. Two patches, one for flash devices, one for Intel
network cards.

> like when i have a rtl8139 lan card and in realtek site its driver has
> been updated for windows in 12th Sept 2008 but for linux it says some
> date in 2007 ,what does tat mean?
> does it mean that the driver for tis hardware has bean completely
> perfected in linux kernel?? or that after that date it not developed
> by realtek anymore ??

No, it means that apparently no-one submitted bugs in this driver after
this day, so there was no need for patching.

> and on the same site and for ac’97 on board sound card it says the same
> for its driver in windows but for linux it says “built in” ???

Yup.

> can some one explain ro me management of hardware driver in linux ,
> like where is my Intel onborad video card 82845g driver actually??

Video is handled by the Xorg package.

if they are build against kernel its different from being built in in kernel …is it??

Your question is more broad that you probably realize.

The linux kernel is designed to be modular. That way, the kernel you use remains small and only includes what is needed for your machine. At its smallest, it includes the drivers to initialize cpu and ram which is enough to start the kernel. It will also include the drivers for standardized device interfaces, such as ATAPI which accesses optical drives. Additional modules for accessing the chipset and the controllers built into it (for example, the disk drive controller) are determined at installation (usually automatically detected by the installation kernel) and added on to the base kernel for execution at boot. The most common method of doing that is to create an “initial ramdisk” file (the “initrd”) which holds these modules and it is loaded by the kernel when it first boots. Now the system’s basic hardware can all be accessed.

Then there are additional modules for peripheral devices such as sound, network card, video, or services such as networking. These modules are simply listed in a location on disk that the kernel looks for later in its startup process. Generally all of except video are under /etc/init.d. The video is unique in that it is handled by the X Server; there is a single control file for X that specifies the driver and holds it configuration (e.g., resolution, monitor size, etc.).

One of the advantages of a power distro like openSUSE or Fedora is that it includes tools for detection and setup of various drivers. In openSUSE that tool is YaST, and virtually everything can be done through a gui there. The basic hardware drivers however are most often automatically detected at installation and set up to run from that process, so the user doesn’t have anything further to do. Sometimes the detection program will miss something, and the user will have to tell the kernel which driver module to use (analagous to F6 on a Windows install).